java - 连续和多个 CRUD 操作的最佳数据库访问

标签 java mysql database-connection

在我问这个问题之前,我确信以前已经有人问过这个问题,但我很难填写正确的术语来找到这个问题。结果我找不到任何信息。因此,如果之前有人问过这个问题,我深表歉意。

考虑以下场景: 游戏服务器由 SQL 数据库支持,用于玩家存储和日志记录。每次玩家登录时都会检索并写入数据。此外,每隔几秒(20 秒或其他时间)日志就会写入数据库,其中包括有关玩家的更改数据。

我想知道如何处理这些连接。永远保持连接打开是一个坏主意,因为 MySQL 服务器会在“不活动”后关闭它。

每次打开连接都有效,但我想知道这是否是最好的方法还是还有其他可能性?

最佳答案

这就是 connection pools是有好处的。试试HikariCP ,其速度极快。您可以在普通 JDBC 以及 JPA 或 O/R 映射器之上使用它。如果您有大量并发连接,它将保持一组连接打开(池化)并管理它们的重用

如果您必须在数据库中存储日志,有几个日志框架已经具有这样做的功能。例如Logback有一个在连接池之上工作的 DBAppender:

"..., sending 500 logging requests to the aforementioned MySQL database takes around 0.5 seconds, for an average of 1 millisecond per request, that is a tenfold improvement in performance." (source)

关于java - 连续和多个 CRUD 操作的最佳数据库访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31471149/

相关文章:

java - Java中字符串数组的最大大小

spring - 我的 Spring 应用程序泄漏数据库连接,而我使用默认的 Roo 配置

java - 在 Mac os 上使用 java 程序设置 mysql.jar 类路径的问题

java - 使用多线程访问sqlite数据库时抛出FilePermission错误

java - 像这样在构造函数中调用init方法是否违反了Clean Code

php - 当我在时间戳上使用 "modify"时,它会给出错误的输出

mysql - 为公共(public)表属性编写多对多查询

php - MySQL - ORDER BY STR_TO_DATE 不工作

php - 如果我的服务器拒绝允许所有 i.p (*.*) 的远程访问,我如何让用户连接到我的数据库?

mysql - 如何使用主机名和凭据连接到 MySQL 数据库并获取表?