代理实例使用限制 -奇异果体育app竞彩官网下载
更新时间:2022-07-29
概览
本文主要介绍代理实例使用要求。
需求场景
适用于有代理实例使用需求的用户,用于快速了解云数据库rds的代理实例。
方案概述
读写分离原则
- 事务、写请求或同一个session写请求之后一段时间(默认200ms)内的读,会发往主库
- 读写分离不保证非事务读的一致性,业务上有一致性需求的查询,请封装到事务
对业务要求
- 业务有连接探活或超时机制。超时时间为:前端超时时间 < 代理超时时间 < mysql超时时间
- 业务端有重试机制
暂不支持功能
- 不支持通过代理实例调用用户自定义函数
- 不支持old_password=on
- 不要用select执行带有写操作的sql,因为会被发往从库执行
- set autocommit语句只支持set autocommit=1/0,不支持set autocommit=on/off
不推荐使用的功能
- 如下命令的执行结果具有随机性,会根据执行时所连接的实例返回响应结果:show processlist、show master status、show slave status
- 不推荐客户端使用连接池功能,因为代理实例已经提供了连接池
- 不推荐长连接中使用prepare,因为cpu使用率偏高,会有性能下降
- 不保证上下文相关函数的正确性,这些函数包括row_count、last_insert_id等。这些函数建议用编程语言的客户端api代替,如c和php的api中mysql_affect_rows函数可以代替row_count,mysql_insert_id函数可以代替last_insert_id
其他
- 针对found_rows函数,目前dbproxy支持增加sql_calc_found_rows标识的方式 select sql_calc_found_rows … from …,并且found_rows只有紧跟select sql_calc_found_rows … from …后发送有效。
- 字段名/字段值可能被识别为for update/lock in share mode关键词,而发往主库
- 字段名/字段值含有分号会被作为multiquery发往主库处理
- for update/lock in share mode,严格匹配关键词,多余空格可能会导致无效而发往从库
相关产品
云数据库 scs:兼容 redis、memcached 协议的分布式缓存服务
云数据库 docdb for mongodb:兼容 mongodb 协议的文档数据库服务