PolarDB-X 1.0 は、シャーディングルール、物理トポロジー、およびストレージノードのステータスを検査するための一連の SHOW 文を提供します。
| カテゴリ | 文 | 目的 |
|---|---|---|
| シャーディングルール | SHOW RULE [FROM tablename] | 論理テーブルのシャーディングの概要 |
SHOW FULL RULE [FROM tablename] | 命名パターンやルール式を含む詳細なシャーディングルール | |
| トポロジー | SHOW TOPOLOGY FROM tablename | データベースシャードとテーブルシャードにまたがる論理テーブルの物理的な分散 |
SHOW PARTITIONS FROM tablename | 論理テーブルのシャードキー | |
SHOW BROADCASTS | 現在のデータベース内のすべてのブロードキャストテーブル | |
| ストレージノード | SHOW DATASOURCES | 基盤となるストレージの接続詳細と接続プールの設定 |
SHOW NODE | 物理データベースグループごとの累積読み取り/書き込み統計 |
SHOW RULE [FROM tablename]
論理テーブルのシャーディングの概要 (データベースレベルとテーブルレベルの両方のシャードキー、シャーディングポリシー、シャード数) を返します。
SHOW RULE— 現在のデータベース内のすべての論理テーブルの結果を返します。SHOW RULE FROM tablename— 指定された論理テーブルの結果を返します。
mysql> 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 | dept_manager | 0 | | NULL | 1 | | NULL | 1 |
| 1 | emp | 0 | emp_no | hash | 8 | id | hash | 2 |
| 2 | example | 0 | shard_key | hash | 8 | | NULL | 1 |
+------+--------------+-----------+------------------+---------------------+--------------------+------------------+---------------------+--------------------+
3 rows in set (0.01 sec)| 列 | 説明 |
|---|---|
BROADCAST | テーブルがブロードキャストテーブルであるかどうか。 0 = ブロードキャストテーブルではない、1 = ブロードキャストテーブル。 |
DB_PARTITION_KEY | データベースシャードキー。 データベースシャーディングが設定されていない場合は空になります。 |
DB_PARTITION_POLICY | データベースシャーディングポリシー。 有効な値: hash、および YYYYMM、YYYYDD、YYYYWEEK などの日付形式。 |
DB_PARTITION_COUNT | データベースシャードの数。 |
TB_PARTITION_KEY | テーブルシャードキー。 テーブルシャーディングが設定されていない場合は空になります。 |
TB_PARTITION_POLICY | テーブルシャーディングポリシー。 有効な値: hash、および MM、DD、MMDD、WEEK などの日付形式。 |
TB_PARTITION_COUNT | テーブルシャードの数。 |
SHOW FULL RULE [FROM tablename]
データベースとテーブルの命名パターン、ルール式、シャードキーセットなど、論理テーブルの詳細なシャーディングルールを返します。 これは SHOW RULE よりも多くの情報を提供します。
SHOW FULL RULE— 現在のデータベース内のすべての論理テーブルの結果を返します。SHOW FULL RULE FROM tablename— 指定された論理テーブルの結果を返します。
mysql> 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 | dept_manager | 0 | NULL | 0 | SEQ_TEST_1487767780814RGKKSEQ_TEST_WNJG_0000_RDS | NULL | dept_manager | NULL | NULL | SEQ_TEST_1487767780814RGKKSEQ_TEST_WNJG_0000_RDS |
| 1 | emp | 0 | NULL | 1 | SEQ_TEST_1487767780814RGKKSEQ_TEST_WNJG_{0000}_RDS | ((#emp_no,1,8#).longValue().abs() % 8) | emp_{0} | ((#id,1,2#).longValue().abs() % 2) | emp_no id | SEQ_TEST_1487767780814RGKKSEQ_TEST_WNJG_0000_RDS |
| 2 | example | 0 | NULL | 1 | SEQ_TEST_1487767780814RGKKSEQ_TEST_WNJG_{0000}_RDS | ((#shard_key,1,8#).longValue().abs() % 8).intdiv(1) | example | NULL | shard_key | SEQ_TEST_1487767780814RGKKSEQ_TEST_WNJG_0000_RDS |
+------+--------------+-----------+------------+-----------------------+----------------------------------------------------+-----------------------------------------------------+-----------------+------------------------------------+----------------+--------------------------------------------------+
3 rows in set (0.01 sec)| 列 | 説明 |
|---|---|
BROADCAST | テーブルがブロードキャストテーブルであるかどうか。 0 = ブロードキャストテーブルではない、1 = ブロードキャストテーブル。 |
JOIN_GROUP | 予約済みフィールド。 |
ALLOW_FULL_TABLE_SCAN | シャードキーなしのクエリが許可されるかどうか。 1 に設定すると、PolarDB-X 1.0 はすべての一致する行を検索するために、すべての物理テーブルをスキャン (全表スキャン) します。 |
DB_NAME_PATTERN | 物理データベース名のテンプレート。 {} 内の数字 0 は、DB_RULES_STR の値に置き換えられるプレースホルダーであり、桁数は保持されます。 たとえば、DB_NAME_PATTERN = SEQ_{0000}_RDS と DB_RULES_STR = [1,2,3,4] を組み合わせると、SEQ_0001_RDS、SEQ_0002_RDS、SEQ_0003_RDS、および SEQ_0004_RDS が生成されます。 |
DB_RULES_STR | データベースシャーディングのルール式。 |
TB_NAME_PATTERN | 物理テーブル名のテンプレート。 DB_NAME_PATTERN と同じプレースホルダー規則を使用します。 たとえば、TB_NAME_PATTERN = table_{00} と TB_RULES_STR = [1,2,3,4,5,6,7,8] を組み合わせると、table_01 から table_08 までが生成されます。 |
TB_RULES_STR | テーブルシャーディングのルール式。 |
PARTITION_KEYS | シャードキーの完全なセット。 データベースシャーディングとテーブルシャーディングの両方が設定されている場合、データベースシャードキーがテーブルシャードキーの前に表示されます。 |
DEFAULT_DB_INDEX | パーティション分割されていない (単一データベースの) テーブルが格納されるデータベースシャード。 |
SHOW TOPOLOGY FROM tablename
論理テーブルの物理的な分散 (どのデータベースシャードがデータを保持し、各シャード内にどの物理テーブルが存在するか) を返します。
mysql> 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 |
+------+--------------------------------------------------+------------+
16 rows in set (0.01 sec)上記の例では、emp テーブルが 8 つのデータベースシャードに分散されており、各シャードには 2 つの物理テーブルシャード (emp_0 と emp_1) が含まれているため、合計 16 の物理テーブルが存在することを示しています。
| 列 | 説明 |
|---|---|
GROUP_NAME | データベースグループ名。 |
TABLE_NAME | データベースシャード内の物理テーブル名。 |
SHOW PARTITIONS FROM tablename
論理テーブルのシャードキーをカンマ区切りのリストとして返します。
2 つの値が返された場合 — データベースシャーディングとテーブルシャーディングの両方が設定されています。 最初の値はデータベースシャードキー、2 番目の値はテーブルシャードキーです。
1 つの値が返された場合 — データベースシャーディングのみが設定されています。 この値はデータベースシャードキーです。
mysql> SHOW PARTITIONS FROM emp;
+-----------+
| KEYS |
+-----------+
| emp_no,id |
+-----------+
1 row in set (0.00 sec)この結果は、emp がデータベースシャードキーとして emp_no を使用し、テーブルシャードキーとして id を使用することを示しています。
SHOW BROADCASTS
現在のデータベース内のすべてのブロードキャストテーブルを返します。
mysql> SHOW BROADCASTS;
+------+------------+
| ID | TABLE_NAME |
+------+------------+
| 0 | brd2 |
| 1 | brd_tbl |
+------+------------+
2 rows in set (0.01 sec)| 列 | 説明 |
|---|---|
ID | 行 ID。 |
TABLE_NAME | ブロードキャストテーブル名。 |
SHOW DATASOURCES
現在のデータベースを支える基盤となる各 ApsaraDB RDS for MySQL インスタンスの接続詳細と接続プールの設定を返します。
mysql> 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 | mysql | 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 | mysql | 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 | mysql | 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 | mysql | 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 | mysql | 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 | mysql | 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 | mysql | 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 | mysql | 0 | 24 | 72 | 15 | 5000 | 0 | 1 | rds1ur80kcv8g3t6p3ol_seq_test_wnjg_0007_iiab | 10 | 10 |
+------+----------------------------+------------------------------------------------+--------------------------------------------------+----------------------------------------------------------------------------------+-----------+-------+------+------+------+--------------+----------+--------------+---------------+----------------------------------------------+-------------+--------------+
8 rows in set (0.01 sec)| 列 | 説明 |
|---|---|
SCHEMA | データベース名。 |
GROUP | データベースグループ名。 複数のデータベース (たとえば、プライマリとそのレプリカ) をグループ化することで、読み書き分離とプライマリ/セカンダリ スイッチオーバーが可能になります。 |
URL | 基盤となる ApsaraDB RDS for MySQL インスタンスの JDBC 接続 URL。 |
TYPE | 基盤となるストレージタイプ。 ApsaraDB RDS for MySQL のみがサポートされています。 |
INIT | 接続プール内の初期接続数。 |
MIN | 接続プール内の最小接続数。 |
MAX | 接続プール内の最大接続数。 |
IDLE_TIMEOUT | アイドル接続タイムアウト。 |
MAX_WAIT | 接続の最大待機時間。 |
ACTIVE_COUNT | アクティブな接続数。 |
POOLING_COUNT | プールされた接続数。 |
READ_WEIGHT | このインスタンスの読み取り重み。 PolarDB-X 1.0 は、これらの重みに基づいて読み取りリクエストを ApsaraDB RDS for MySQL インスタンスに自動的にルーティングし、すべての書き込みリクエストをプライマリインスタンスにルーティングします。 |
WRITE_WEIGHT | このインスタンスの重みを入力してください。 |
SHOW NODE
物理データベースグループごとの累積読み取り/書き込み統計を返します。
mysql> 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)| 列 | 説明 |
|---|---|
NAME | 物理データベースグループ名。 |
MASTER_READ_COUNT | プライマリ ApsaraDB RDS for MySQL インスタンスによって処理された読み取りおよび書き込みクエリの累積数。 |
SLAVE_READ_COUNT | セカンダリ ApsaraDB RDS for MySQL インスタンスによって処理された読み取り専用クエリの累積数。 |
MASTER_READ_PERCENT | プライマリインスタンスによって処理された累積クエリの実際の割合。 これは現在設定されている読み取り重みではなく、履歴データを反映しています。 |
SLAVE_READ_PERCENT | セカンダリインスタンスによって処理された累積クエリの実際の割合。 これは現在設定されている読み取り重みではなく、履歴データを反映しています。 |
トランザクション内の読み取り専用クエリは、セカンダリインスタンスではなく、プライマリ ApsaraDB RDS for MySQL インスタンスに送信されます。 読み取り重みまたは書き込み重みが変更された場合、MASTER_READ_PERCENTとSLAVE_READ_PERCENTはすぐには新しい比率を反映しません。クエリが蓄積されるにつれて、パーセンテージは時間の経過とともに新しい値に収束します。