テーブルを水平方向に分割しましたが、行が現在どのように分散されているかを確認したいと思います。 Webを検索しても、関連する結果は得られませんでした。
これが可能かどうか誰か教えてもらえますか?
information_schema
を使用して各パーティションの行を取得できます。
これが私のサンプルテストです。
mysql> SELECT PARTITION_ORDINAL_POSITION, TABLE_ROWS, PARTITION_METHOD
FROM information_schema.PARTITIONS
WHERE TABLE_SCHEMA = 'db_name' AND TABLE_NAME = 'tbl_name';
+----------------------------+------------+------------------+
| PARTITION_ORDINAL_POSITION | TABLE_ROWS | PARTITION_METHOD |
+----------------------------+------------+------------------+
| 1 | 2 | HASH |
| 2 | 3 | HASH |
+----------------------------+------------+------------------+
mysql> SHOW CREATE TABLE tbl_name\G
*************************** 1. row ***************************
Table: p
Create Table: CREATE TABLE `tbl_name` (
`a` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
/*!50100 PARTITION BY HASH (a)
PARTITIONS 2 */
1 row in set (0.00 sec)
mysql> SELECT * FROM tbl_name;
+------+
| a |
+------+
| 2 |
| 4 |
| 1 |
| 3 |
| 5 |
+------+
5 rows in set (0.00 sec)
から MySQLマニュアル :
パーティション化されたInnoDBテーブルの場合、TABLE_ROWS列に指定された行数は、SQL最適化で使用される推定値にすぎず、常に正確であるとは限りません。
@Constantineに感謝します。
ジェイソンの答えに追加するために、リファレンスマニュアルに従って、テーブル上の既存のパーティションに関する情報を取得する次の方法があります-
Show CreateTableの使用-パーティションテーブルの作成に使用されるパーティション句を表示します。 構文:
_show create table table_name;
_
サンプル出力:CREATE TABLE 'trb3' ( 'id' int(11) default NULL, 'name' varchar(50) default NULL, 'purchased' date default NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY RANGE (YEAR(purchased)) ( PARTITION p0 VALUES LESS THAN (1990) ENGINE = MyISAM, PARTITION p1 VALUES LESS THAN (1995) ENGINE = MyISAM, PARTITION p2 VALUES LESS THAN (2000) ENGINE = MyISAM, PARTITION p3 VALUES LESS THAN (2005) ENGINE = MyISAM )
Show TableStatusの使用-テーブルがパーティション化されているかどうかを判別します。
構文:
_show table status in db_name like table_name;
_
サンプル出力:名前、エンジン、バージョン、データ長などのテーブルに関する多くの情報を表示します。出力の「Create_options」パラメーター。
INFORMATION_SCHEMA.PARTITIONSテーブルのクエリ。
(Jasonの回答を参照してください。オプションで、SUBPARTITION_NAME、SUBPARTITION_ORDINAL_POSITION、SUBPARTITION_METHOD、PARTITION_EXPRESSIONなどを追加できます。詳細については、パラメーターを選択してください。 MySQL Ref Manual を参照してください。
ステートメントEXPLAINPARTITIONSSELECTの使用-特定のSELECTで使用されているパーティションを確認します
構文:
_EXPLAIN PARTITIONS SELECT * FROM trb1
_
サンプル出力:
_id: 1 select_type: SIMPLE table: trb1 partitions: p0,p1,p2,p3 type: ALL possible_keys: NULL key: NULL key_len: NULL ref: NULL rows: 10 Extra: Using filesort
_
続きを読む MySQL Ref Manual