本文介绍了使用全局一致性(高性能模式)功能的常见问题。
开启全局一致性(高性能模式)功能后,如果某些查询不需要使用全局一致性读,该如何操作?
在RO节点开启全局一致性(高性能模式)后,默认对所有的新建连接生效。如果某些查询不需要使用该功能,可以通过以下命令来关闭当前连接的全局一致性读:
SET Session innodb_polar_scc = OFF关闭当前连接的全局一致性(高性能模式)功能,集群版本需满足以下条件之一:
- PolarDB MySQL版8.0.2版本,且修订版本为8.0.2.2.16及以上。 
- PolarDB MySQL版8.0.1版本,且修订版本为8.0.1.1.33及以上。 
- PolarDB MySQL版5.7版本,且修订版本为5.7.1.0.28及以上。 
如何设置全局一致性读超时时间?
您可以登录PolarDB控制台。通过设置参数loose_innodb_polar_scc_wait_timeout的值来设置全局一致性读超时时间。如果超时,客户端会收到以下错误信息:
Wait replication complete timeout, please retry- 对于写入压力较大,或写入压力不稳定的集群,您可以将该参数 - loose_innodb_polar_scc_wait_timeout的值设置大一些。
- 当集群版本为以下版本时,需重建连接才可生效,现有连接将维持原值不变: - PolarDB MySQL版8.0.2版本,且修订版本为8.0.2.2.29及以上。 
- PolarDB MySQL版8.0.1版本,且修订版本为8.0.1.1.48及以上。 
- PolarDB MySQL版5.7版本,且修订版本为5.7.1.0.38及以上。 
 
全局一致性读超时转发机制是什么?
- 对于PolarDB MySQL版5.7版本,开启全局一致性(高性能模式)后,转发机制如下: - 通过集群地址路由至RO节点的查询,如果出现全局一致性等待超时,会由Proxy自动转发至RW节点进行处理。客户端不会收到报错信息。 
- 通过只读Endpoint地址(没有挂载RW节点)路由到RO节点的查询,如果出现全局一致性等待超时,则不会转发到RW节点进行处理。 
 
- 对于PolarDB MySQL版8.0版本,开启全局一致性(高性能模式)后,转发机制如下: - 若数据库代理版本为2.8.36及以上: - 通过集群地址路由至RO节点的查询,如果出现全局一致性等待超时,会由Proxy自动转发至RW节点进行处理。客户端不会收到报错信息。 
- 通过只读Endpoint地址(没有挂载RW节点)路由到RO节点的查询,如果出现全局一致性等待超时,则不会转发到RW节点进行处理。 
 
- 若数据库代理版本为2.8.36以下: - 开启全局一致性(高性能模式)后,通过任意地址连接并路由到RO节点的请求,在出现全局一致性等待超时时,都不会转发至RW节点进行处理。 
- 您可以通过开启RDMA日志传输来降低RO节点的读延迟,或通过参数 - loose_innodb_polar_scc_wait_timeout来调整全局一致性读超时时间。
 
 
全局一致性读超时后,如何降级?
您需要登录PolarDB控制台。将参数loose_innodb_polar_scc_timeout_degrade的值设置为ON,当全局一致性读超时后,查询操作会自动降级为非一致性读取,且客户端不会收到报错信息。
当集群版本为以下版本时,需重建连接才可生效,现有连接将维持原值不变:
- PolarDB MySQL版8.0.2版本,且修订版本为8.0.2.2.29及以上。 
- PolarDB MySQL版8.0.1版本,且修订版本为8.0.1.1.48及以上。 
- PolarDB MySQL版5.7版本,且修订版本为5.7.1.0.38及以上。 
如何避免低写入负载场景下的读延迟?
您可以登录PolarDB控制台。将高性能参数innodb_flush_log_at_trx_commit的值设置为1,来避免低写入场景下的读延迟。