SpringBoot HikariCP Maxscale 选择查询不发送到 Slave

问题描述

独立的 MaxScale 工作正常。我用这个 link 来测试它。但是当我使用 Maxscale 运行 Spring Boot Data JPA 时,SELECT 查询正在发送到 Master。我观察了很久,发现Spring数据开始交易。 Maxscale 在启用事务时向 Master 发送查询。我通过在 MaxScale 配置读写和只读服务来尝试使用 Spring“RoutingDataSource”。但这并没有解决问题。

解决方法

默认情况下,readwritesplit 会将所有非只读事务路由到当前 master。这样做是因为不可能知道事务是否会修改数据库。如果交易以 START TRANSACTION READ ONLY 开始,交易将被路由到一个从站。

您可以启用 optimistic_trx 将事务路由到从属设备,即使它们不是以 START TRANSACTION READ ONLY 开头。请注意,这将减慢执行写入操作的事务的执行速度,因为它们最初被发送到从属设备,并在检测到第一次写入时移动到主设备。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...