我们正在将基于java的应用程序从oracle迁移到mariadb。在mariadb 10.5.9中,我们使用hibernate-5。当我们的应用程序运行时,我们在maxscale查询过滤器中观察到,调用了太多的select数据库查询。如果没有maxscale和普通的mariadb,我们就看不到这个问题。我们使用的是mariadb-java-client-2.6.0.jar,但即使是最新的驱动程序(2.7.2)也会出现问题。
tcpdump显示未使用准备好的语句,每次都会构造语句。因此,我假设使用maxscale时,在构造语句时会调用select数据库。
如此使用:
案例1: 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数据库查询。
请分享你的想法。
发布于 2021-08-25 04:29:31
正如评论中提到的,这是一个由MXS-3533引起的错误。您可以通过升级到MaxScale 2.5.13或更高版本来解决此问题。
https://stackoverflow.com/questions/67301543
复制相似问题