持续和多个 CRUD 操作的最佳数据库访问

Optimal database access for continued and multiple CRUD operations

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

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

我想知道如何处理这些连接。保持连接永远打开是一个坏主意,因为 MySQL 服务器在 "inactivity".

之后关闭它

每次都打开连接是可行的,但我想知道这是不是最好的方法,还是有另一种可能性?

这就是 connection pools are good for. Try 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)