我们正在将基于 Java 的应用程序从 oracle 迁移到 mariadb。对于 mariadb 10.5.9,我们使用的是 hibernate-5。当我们的应用程序运行时,我们在 maxscale 查询过滤器中观察到,调用了太多的选择数据库查询。如果没有 maxscale 和普通的 mariadb,我们看不到这个问题。我们使用的是 mariadb-java-client-2.6.0.jar,但即使使用最新的驱动程序 (2.7.2),我们也看到了问题。
tcpdump 显示未使用准备好的语句,每次都在构造语句。所以我假设在构造语句时调用 maxscale 选择数据库。
如此使用:
案例一:db.url=jdbc:mariadb://{host}:{port}/dbname?user=username&password=password?useServerPrepStmts=true
案例2:db.url=jdbc:mariadb://{host}:{port}/dbname?user=username&password=password?useServerPrepStmts=true&cachePrepStmts=true&prepStmtCacheSize=500&prepStmtCacheSqlLimit=1024
仍然在这两种情况下,我都看到使用了普通语句,并且经常调用 select 数据库查询。
请分享你的想法。