閱讀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-阿裏雲