阅读868 返回首页    go 微信


DRDS自定义注释__开发手册_分布式关系型数据库 DRDS-阿里云

强制SQL读写主库

/*TDDL:MASTER*/select * from tddl5_users;

强制读SQL走备库

/*TDDL:SLAVE*/select * from tddl5_users;

注:此Hint仅当SQL是读操作才会有效。会从备库(只读实例)中按照权重随机选取一个进行读取操作。若备库(只读实例)不存在时,不会报错,会选取主库。

指定特定节点执行SQL

/*TDDL:node in ('TDDL5_0001_GROUP','TDDL5_0002_GROUP','...')*/delete from tddl5_users_0000;

node后面跟节点的名字。

节点名字可以通过show node指令获取

mysql> show node;
+------+----------------+-------------------+------------------+---------------------+--------------------+
| ID   | NAME           | MASTER_READ_COUNT | SLAVE_READ_COUNT | MASTER_READ_PERCENT | SLAVE_READ_PERCENT |
+------+----------------+-------------------+------------------+---------------------+--------------------+
| 0    | TDDL5_00_GROUP |                 3 |                0 | 100%                | 0%                 |
| 1    | TDDL5_01_GROUP |                 0 |                0 | 0%                  | 0%                 |
| 2    | TDDL5_02_GROUP |                 0 |                0 | 0%                  | 0%                 |
| 3    | TDDL5_03_GROUP |                 0 |                0 | 0%                  | 0%                 |
+------+----------------+-------------------+------------------+---------------------+--------------------+
4 rows in set (0.01 sec)

调整SQL的超时时间

DRDS到mysql之间是会有有超时时间的,对于一些必须做的慢查询,可以通过如下hint调整这个SQL的超时时间。

/*TDDL:socket_timeout=10000*/select count(*) from tddl5_users;

socket_timeout的单位是毫秒,如果socket_timeout=0,则该SQL不会超时。

将SQL下发到所有分库执行

/*TDDL:scan*/show tables;

比如有4个分库,则show tables会在每个分库上执行一次。

将SQL下发到所有分表执行

/*TDDL:scan=tddl5_users*/drop tddl5_users;

比如tddl5_users分4个分库,每个分库4张分表,则一共有16个分表,该语句会在tddl5_users的16个分表上各执行一次。

最后更新:2016-05-06 10:44:57

  上一篇:go 遍历全表操作__开发手册_分布式关系型数据库 DRDS-阿里云
  下一篇:go DRDS控制指令__开发手册_分布式关系型数据库 DRDS-阿里云