在我问这个问题之前,我确信以前已经有人问过这个问题,但我很难填写正确的术语来找到这个问题。结果我找不到任何信息。因此,如果之前有人问过这个问题,我深表歉意。
考虑以下场景: 游戏服务器由 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/