所有文档

          云数据库 RDS

          代理实例使用限制

          读写分离原则

          • 事务、写请求或同一个session写请求之后一段时间(默认200ms)内的读,会发往主库
          • 读写分离不保证非事务读的一致性,业务上有一致性需求的查询,请封装到事务

          对业务要求

          • 业务有连接探活或超时机制。超时时间为:前端超时时间 < 代理超时时间 < MySQL超时时间
          • 业务端有重试机制

          暂不支持功能

          • 不支持通过代理实例执行DDL语句
          • 不支持注释路由相关功能
          • 不支持通过代理实例调用存储过程
          • 不支持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,严格匹配关键词,多余空格可能会导致无效而发往从库
          上一篇
          克隆实例恢复数据最佳实践
          下一篇
          API参考