本文介紹了規(guī)則和拓撲類查詢語句。

SHOW RULE [FROM tablename]

使用說明:
  • show rule:查看數(shù)據(jù)庫下每一個邏輯表的拆分情況;
  • show rule from tablename:查看數(shù)據(jù)庫下指定邏輯表的拆分情況。
SHOW RULE;
+----+------------+-----------+------------------+---------------------+--------------------+------------------+---------------------+--------------------+
| ID | TABLE_NAME | BROADCAST | DB_PARTITION_KEY | DB_PARTITION_POLICY | DB_PARTITION_COUNT | TB_PARTITION_KEY | TB_PARTITION_POLICY | TB_PARTITION_COUNT |
+----+------------+-----------+------------------+---------------------+--------------------+------------------+---------------------+--------------------+
|  0 | k_1        |         0 | k                | hash                | 40                 | k                | hash                | 2                  |
|  1 | k_2        |         0 | k                | hash                | 40                 | k                | hash                | 2                  |
|  2 | sbtest1    |         0 | id               | hash                | 40                 | id               | hash                | 2                  |
|  3 | t1         |         0 | id               | hash                | 40                 | id               | hash                | 4                  |
+----+------------+-----------+------------------+---------------------+--------------------+------------------+---------------------+--------------------+
4 rows in set (0.05 sec)            
重要列詳解:
  • BROADCAST:是否為廣播表(0:否,1:是);
  • DB_PARTITION_KEY:分庫的拆分鍵,沒有分庫的話,值為空;
  • DB_PARTITION_POLICY:分庫的拆分策略,取值包括哈希或YYYYMM、YYYYDD、YYYYWEEK等日期策略;
  • DB_PARTITION_COUNT:分庫數(shù);
  • TB_PARTITION_KEY:分表的拆分鍵,沒有分表的話,值為空;
  • TB_PARTITION_POLICY:分表的拆分策略,取值包括哈希或MM、DD、MMDD、WEEK等日期策略;
  • TB_PARTITION_COUNT:分表數(shù)。

SHOW FULL RULE [FROM tablename]

查看數(shù)據(jù)庫下邏輯表的拆分規(guī)則,比SHOW RULE指令展示的信息更加詳細。

SHOW FULL RULE;
+----+------------+-----------+------------+-----------------------+----------------------+--------------------------------------------------+-------------------+----------------------------------------+----------------+--------------------+
| ID | TABLE_NAME | BROADCAST | JOIN_GROUP | ALLOW_FULL_TABLE_SCAN | DB_NAME_PATTERN      | DB_RULES_STR                                     | TB_NAME_PATTERN   | TB_RULES_STR                           | PARTITION_KEYS | DEFAULT_DB_INDEX   |
+----+------------+-----------+------------+-----------------------+----------------------+--------------------------------------------------+-------------------+----------------------------------------+----------------+--------------------+
|  0 | k_1        |         0 | NULL       |                     1 | TEST1_{000000}_GROUP | ((#k,1,80#).longValue().abs() % 80).intdiv(2)    | k_1_cewR_{00}     | ((#k,1,80#).longValue().abs() % 80)    | k              | TEST1_SINGLE_GROUP |
|  1 | k_2        |         0 | NULL       |                     1 | TEST1_{000000}_GROUP | ((#k,1,80#).longValue().abs() % 80).intdiv(2)    | k_2_1xsQ_{00}     | ((#k,1,80#).longValue().abs() % 80)    | k              | TEST1_SINGLE_GROUP |
|  2 | sbtest1    |         0 | NULL       |                     1 | TEST1_{000000}_GROUP | ((#id,1,80#).longValue().abs() % 80).intdiv(2)   | sbtest1_wO5k_{00} | ((#id,1,80#).longValue().abs() % 80)   | id             | TEST1_SINGLE_GROUP |
|  3 | t1         |         0 | NULL       |                     1 | TEST1_{000000}_GROUP | ((#id,1,160#).longValue().abs() % 160).intdiv(4) | t1_EMrC_{000}     | ((#id,1,160#).longValue().abs() % 160) | id             | TEST1_SINGLE_GROUP |
+----+------------+-----------+------------+-----------------------+----------------------+--------------------------------------------------+-------------------+----------------------------------------+----------------+--------------------+
重要列詳解:
  • BROADCAST:是否為廣播表(0:否,1:是);
  • JOIN_GROUP:保留字段,暫時無意義。
  • ALLOW_FULL_TABLE_SCAN:分庫分表在沒有指定分表鍵值的情況下是否允許查詢數(shù)據(jù),如果配置為true,此時需要掃描每一個物理表來查找出符合條件的數(shù)據(jù),簡稱為全表掃描;
  • DB_NAME_PATTERN:DB_NAME_PATTERN中{}之間的0為占位符,執(zhí)行SQL時會被DB_RULES_STR計算出的值替代,并保持位數(shù)。比如,DB_NAME_PATTERN的值為SEQ_{0000}_RDS,DB_RULES_STR的值為[1,2,3,4],則會產生4個DB_NAME,分別為SEQ_0001_RDS、SEQ_0002_RDS、SEQ_0003_RDS、SEQ_0004_RDS;
  • DB_RULES_STR:具體的分庫規(guī)則;
  • TB_NAME_PATTERN:TB_NAME_PATTERN中{}之間的0為占位符,執(zhí)行SQL時會被TB_RULES_STR計算出的值替代,并保持位數(shù)。比如,TB_NAME_PATTERN的值為table_{00},TB_RULES_STR的值為[1,2,3,4,5,6,7,8],則會產生8張表,分別為table_01、table_02、table_03、table_04、table_05、table_06、table_07、table_08;
  • TB_RULES_STR:分表規(guī)則;
  • PARTITION_KEYS:分庫和分表鍵集合,對于既分庫又分表的情形,分庫鍵在前,分表鍵在后;
  • DEFAULT_DB_INDEX:單庫單表存放的分庫。

SHOW TOPOLOGY FROM tablename

查看指定邏輯表的拓撲分布,展示該邏輯表保存在哪些分庫中,每個分庫下包含哪些分表。

SHOW TOPOLOGY FROM EMP; 
+------+--------------------------------------------------+------------+  
| ID   | GROUP_NAME                                       | TABLE_NAME |  
+------+--------------------------------------------------+------------+  
|    0 | SEQ_TEST_1487767780814RGKKSEQ_TEST_WNJG_0000_RDS | emp_0      |   
|    1 | SEQ_TEST_1487767780814RGKKSEQ_TEST_WNJG_0000_RDS | emp_1      |   
|    2 | SEQ_TEST_1487767780814RGKKSEQ_TEST_WNJG_0001_RDS | emp_0      |    
|    3 | SEQ_TEST_1487767780814RGKKSEQ_TEST_WNJG_0001_RDS | emp_1      |    
|    4 | SEQ_TEST_1487767780814RGKKSEQ_TEST_WNJG_0002_RDS | emp_0      |    
|    5 | SEQ_TEST_1487767780814RGKKSEQ_TEST_WNJG_0002_RDS | emp_1      |    
|    6 | SEQ_TEST_1487767780814RGKKSEQ_TEST_WNJG_0003_RDS | emp_0      |    
|    7 | SEQ_TEST_1487767780814RGKKSEQ_TEST_WNJG_0003_RDS | emp_1      |    
|    8 | SEQ_TEST_1487767780814RGKKSEQ_TEST_WNJG_0004_RDS | emp_0      |    
|    9 | SEQ_TEST_1487767780814RGKKSEQ_TEST_WNJG_0004_RDS | emp_1      |    
|   10 | SEQ_TEST_1487767780814RGKKSEQ_TEST_WNJG_0005_RDS | emp_0      |    
|   11 | SEQ_TEST_1487767780814RGKKSEQ_TEST_WNJG_0005_RDS | emp_1      |    
|   12 | SEQ_TEST_1487767780814RGKKSEQ_TEST_WNJG_0006_RDS | emp_0      |    
|   13 | SEQ_TEST_1487767780814RGKKSEQ_TEST_WNJG_0006_RDS | emp_1      |   
|   14 | SEQ_TEST_1487767780814RGKKSEQ_TEST_WNJG_0007_RDS | emp_0      |   
|   15 | SEQ_TEST_1487767780814RGKKSEQ_TEST_WNJG_0007_RDS | emp_1      |    
+------+--------------------------------------------------+------------+

SHOW PARTITIONS FROM tablename

查看分庫分表鍵集合,分庫鍵和分表鍵之間用逗號分割。如果最終結果有兩個值,說明是既分庫又分表的情形,第一個是分庫鍵,第二個是分表鍵。如果結果只有一個值,說明是分庫不分表的情形,該值是分庫鍵。

SHOW PARTITIONS FROM EMP;
+-----------+
| KEYS      |
+-----------+
| emp_no,id |
+-----------+
1 row in set (0.00 sec)
            

SHOW BROADCASTS

查看廣播表列表。

SHOW BROADCASTS;
+------+------------+
| ID   | TABLE_NAME |
+------+------------+
|    0 | brd2       |
|    1 | brd_tbl    |
+------+------------+
2 rows in set (0.01 sec)
            

SHOW DATASOURCES

查看底層存儲信息,包含數(shù)據(jù)庫名、數(shù)據(jù)庫分組名、連接信息、用戶名、底層存儲類型、讀寫權重、連接池信息等。

SHOW DATASOURCES;
+------+----------------------------+------------------------------------------------+--------------------------------------------------+----------------------------------------------------------------------------------+-----------+-------+------+------+------+--------------+----------+--------------+---------------+----------------------------------------------+-------------+--------------+   
| ID   | SCHEMA                     | NAME                                           | GROUP                                            | URL                                                                              | USER      | TYPE  | INIT | MIN  | MAX  | IDLE_TIMEOUT | MAX_WAIT | ACTIVE_COUNT | POOLING_COUNT | ATOM                                         | READ_WEIGHT | WRITE_WEIGHT |
+------+----------------------------+------------------------------------------------+--------------------------------------------------+----------------------------------------------------------------------------------+-----------+-------+------+------+------+--------------+----------+--------------+---------------+----------------------------------------------+-------------+--------------+  
|    0 | seq_test_1487767780814rgkk | rds1ur80kcv8g3t6p3ol_seq_test_wnjg_0000_iiab_1 | SEQ_TEST_1487767780814RGKKSEQ_TEST_WNJG_0000_RDS | jdbc:mysql://rds1ur80kcv8g3t6p3ol.mysql.rds.aliyuncs.com:3306/seq_test_wnjg_0000 | jnkinsea0 | xdb   | 0    | 24   | 72   | 15           | 5000     | 0            | 1             | rds1ur80kcv8g3t6p3ol_seq_test_wnjg_0000_iiab | 10          | 10           |  
|    1 | seq_test_1487767780814rgkk | rds1ur80kcv8g3t6p3ol_seq_test_wnjg_0001_iiab_2 | SEQ_TEST_1487767780814RGKKSEQ_TEST_WNJG_0001_RDS | jdbc:mysql://rds1ur80kcv8g3t6p3ol.mysql.rds.aliyuncs.com:3306/seq_test_wnjg_0001 | jnkinsea0 | xdb   | 0    | 24   | 72   | 15           | 5000     | 0            | 1             | rds1ur80kcv8g3t6p3ol_seq_test_wnjg_0001_iiab | 10          | 10           |   
|    2 | seq_test_1487767780814rgkk | rds1ur80kcv8g3t6p3ol_seq_test_wnjg_0002_iiab_3 | SEQ_TEST_1487767780814RGKKSEQ_TEST_WNJG_0002_RDS | jdbc:mysql://rds1ur80kcv8g3t6p3ol.mysql.rds.aliyuncs.com:3306/seq_test_wnjg_0002 | jnkinsea0 | xdb   | 0    | 24   | 72   | 15           | 5000     | 0            | 1             | rds1ur80kcv8g3t6p3ol_seq_test_wnjg_0002_iiab | 10          | 10           | 
|    3 | seq_test_1487767780814rgkk | rds1ur80kcv8g3t6p3ol_seq_test_wnjg_0003_iiab_4 | SEQ_TEST_1487767780814RGKKSEQ_TEST_WNJG_0003_RDS | jdbc:mysql://rds1ur80kcv8g3t6p3ol.mysql.rds.aliyuncs.com:3306/seq_test_wnjg_0003 | jnkinsea0 | xdb   | 0    | 24   | 72   | 15           | 5000     | 0            | 1             | rds1ur80kcv8g3t6p3ol_seq_test_wnjg_0003_iiab | 10          | 10           |   
|    4 | seq_test_1487767780814rgkk | rds1ur80kcv8g3t6p3ol_seq_test_wnjg_0004_iiab_5 | SEQ_TEST_1487767780814RGKKSEQ_TEST_WNJG_0004_RDS | jdbc:mysql://rds1ur80kcv8g3t6p3ol.mysql.rds.aliyuncs.com:3306/seq_test_wnjg_0004 | jnkinsea0 | xdb   | 0    | 24   | 72   | 15           | 5000     | 0            | 1             | rds1ur80kcv8g3t6p3ol_seq_test_wnjg_0004_iiab | 10          | 10           |   
|    5 | seq_test_1487767780814rgkk | rds1ur80kcv8g3t6p3ol_seq_test_wnjg_0005_iiab_6 | SEQ_TEST_1487767780814RGKKSEQ_TEST_WNJG_0005_RDS | jdbc:mysql://rds1ur80kcv8g3t6p3ol.mysql.rds.aliyuncs.com:3306/seq_test_wnjg_0005 | jnkinsea0 | xdb   | 0    | 24   | 72   | 15           | 5000     | 0            | 1             | rds1ur80kcv8g3t6p3ol_seq_test_wnjg_0005_iiab | 10          | 10           |  
|    6 | seq_test_1487767780814rgkk | rds1ur80kcv8g3t6p3ol_seq_test_wnjg_0006_iiab_7 | SEQ_TEST_1487767780814RGKKSEQ_TEST_WNJG_0006_RDS | jdbc:mysql://rds1ur80kcv8g3t6p3ol.mysql.rds.aliyuncs.com:3306/seq_test_wnjg_0006 | jnkinsea0 | xdb   | 0    | 24   | 72   | 15           | 5000     | 0            | 1             | rds1ur80kcv8g3t6p3ol_seq_test_wnjg_0006_iiab | 10          | 10           |  
|    7 | seq_test_1487767780814rgkk | rds1ur80kcv8g3t6p3ol_seq_test_wnjg_0007_iiab_8 | SEQ_TEST_1487767780814RGKKSEQ_TEST_WNJG_0007_RDS | jdbc:mysql://rds1ur80kcv8g3t6p3ol.mysql.rds.aliyuncs.com:3306/seq_test_wnjg_0007 | jnkinsea0 | xdb   | 0    | 24   | 72   | 15           | 5000     | 0            | 1             | rds1ur80kcv8g3t6p3ol_seq_test_wnjg_0007_iiab | 10          | 10           |  
+------+----------------------------+------------------------------------------------+--------------------------------------------------+----------------------------------------------------------------------------------+-----------+-------+------+------+------+--------------+----------+--------------+---------------+----------------------------------------------+-------------+--------------+

重要列詳解:

  • SCHEMA:數(shù)據(jù)庫名;
  • GROUP:數(shù)據(jù)庫分組名。分組的目標是管理多組數(shù)據(jù)完全相同的數(shù)據(jù)庫,比如通過 RDS(MySQL)進行數(shù)據(jù)復制后的主備數(shù)據(jù)庫。主要用來解決讀寫分離、主備切換的問題;
  • URL:底層RDS(MySQL)的連接信息;
  • TYPE:底層存儲類型。
  • READ_WEIGHT:讀權重。在主實例的讀壓力比較大的時候,可以通過讀寫分離功能將讀流量進行分流,減輕RDS主實例的壓力。PolarDB-X會自動識別讀寫流量,引導寫流量進入RDS主實例,讀流量則按配置的權重流向所有RDS實例;
  • WRITE_WEIGHT:寫權重。

SHOW NODE

查看物理庫的讀寫次數(shù)(歷史累計數(shù)據(jù))、讀寫權重(歷史累計數(shù)據(jù))。

SHOW NODE;
+------+--------------------------------------------------+-------------------+------------------+---------------------+--------------------+
| ID   | NAME                                             | MASTER_READ_COUNT | SLAVE_READ_COUNT | MASTER_READ_PERCENT | SLAVE_READ_PERCENT |
+------+--------------------------------------------------+-------------------+------------------+---------------------+--------------------+
| 0    | SEQ_TEST_1487767780814RGKKSEQ_TEST_WNJG_0000_RDS |                12 |                0 | 100%                | 0%                 |
| 1    | SEQ_TEST_1487767780814RGKKSEQ_TEST_WNJG_0001_RDS |                 0 |                0 | 0%                  | 0%                 |
| 2    | SEQ_TEST_1487767780814RGKKSEQ_TEST_WNJG_0002_RDS |                 0 |                0 | 0%                  | 0%                 |
| 3    | SEQ_TEST_1487767780814RGKKSEQ_TEST_WNJG_0003_RDS |                 0 |                0 | 0%                  | 0%                 |
| 4    | SEQ_TEST_1487767780814RGKKSEQ_TEST_WNJG_0004_RDS |                 0 |                0 | 0%                  | 0%                 |
| 5    | SEQ_TEST_1487767780814RGKKSEQ_TEST_WNJG_0005_RDS |                 0 |                0 | 0%                  | 0%                 |
| 6    | SEQ_TEST_1487767780814RGKKSEQ_TEST_WNJG_0006_RDS |                 0 |                0 | 0%                  | 0%                 |
| 7    | SEQ_TEST_1487767780814RGKKSEQ_TEST_WNJG_0007_RDS |                 0 |                0 | 0%                  | 0%                 |
+------+--------------------------------------------------+-------------------+------------------+---------------------+--------------------+
8 rows in set (0.01 sec)
            

重要列詳解:

  • MASTER_COUNT:RDS主實例處理的讀寫查詢次數(shù)(歷史累計數(shù)據(jù));
  • SLAVE_COUNT:RDS備實例處理的只讀查詢次數(shù)(歷史累計數(shù)據(jù));
  • MASTER_PERCENT:RDS主實例處理的讀寫查詢占比(注意該列顯示的是累計的實際數(shù)據(jù)占比,并不是用戶配置的百分比);
  • SLAVE_PERCENT:RDS備實例處理的讀寫查詢占比(注意該列顯示的是累計的實際數(shù)據(jù)占比,并不是用戶配置的百分比)。
說明
  • 事務中的只讀查詢會被發(fā)送到RDS主實例;
  • 由于MASTER_PERCENTSLAVE_PERCENT這兩列代表的是歷史累計數(shù)據(jù),更改讀寫權重的配比后,這幾個數(shù)值并不能立即反應最新的讀寫權重配比,需累計一段比較長的時間才行。