云数据库 GAUSSDB(FOR MYSQL)-开通数据库代理后,还是有大量select请求分发到主节点
开通数据库代理后,还是有大量select请求分发到主节点
原因分析:
- 读权重参数
设置主节点和只读节点的读权重分配,可以控制读请求的分发配比,仅在存在只读节点时生效。
例如:一主两只读,设置的读权重为1(主):2(只读1):3(只读2),那么会按照1:2:3将读请求分发到主和只读实例上;如果将读权重设置为0:2:3,会按照2:3将请求分发的只读实例,不会将读请求分发的主实例。
更多信息,请参见设置读写分离权重。
- 事务
- 连接绑定
执行了Multi-Statements(如“insert xxx;select xxx”)当前连接的后续请求会全部路由到主节点;创建临时表的SQL会将连接绑定到主,后续此连接的请求都会到主。需断开当前连接并重新连接才能恢复读写分离。
- 自定义变量
- 带锁的读操作(如SELECT for UPDATE)会被路由到主节点。
- 通过Hint指定SQL发往主实例或只读实例
在读写分离权重分配体系之外,在SQL开头添加hint注释进行强制路由:
- /*FORCE_MASTER*/:强制路由到主节点
- /*FORCE_SLAVE*/:强制路由到只读节点
Hint注释仅作为路由建议,非只读SQL、事务中的场景不能强制路由到只读节点。
- 会话一致性特性
同一个会话内,对于写入还没有同步到只读节点的数据,读请求也会发送到主节点。
更多信息,请参见一致性级别介绍。
- GaussDB(for MySQL)一致性级别_事务拆分_读写分离
- GaussDB(for MySQL)读写分离_数据库代理_Proxy事务拆分
- 云数据库RDS for MySQL读写分离_数据库代理_只读实例
- 云数据库GaussDB(for MySQL)_兼容MySQL
- 云数据库GaussDB(for MySQL)_云数据库_分布式数据库
- 华为云分布式关系型数据库是什么
- 云数据库 GaussDB(for MySQL)与RDS for MySQL的区别
- GaussDB(for MySQL)并行查询_GaussDB(for MySQL)内核_GaussDB(for MySQL)并行执行_PQ
- GaussDB(for MySQL)包周期容量变更_包周期库扩容_变更CPU_存储扩容
- MySQL数据库_查看MySQL数据库版本_免费MySQL数据库