tencent cloud

TDSQL-C for MySQL

基本設定

ダウンロード
フォーカスモード
フォントサイズ
最終更新日: 2025-12-30 16:46:22
本稿では、列ストレージインデックスCSIの関連操作についてご紹介します。

前提条件

カーネルバージョンは TDSQL-C for MySQL 8.0 バージョン3.1.14以上です。
説明:
読み取り専用インスタンスの場合、バージョン要件を満たす条件下で、4コア以上の読み取り専用インスタンスのみ列ストレージインデックス機能を有効化できます。

CSIを有効化するまたは無効化する

1. クラスタリストページで、実際に使用しているビューモードに応じて、インスタンス詳細ページに入ります。
タブビュー
リストビュー
1. ログインし TDSQL-C for MySQLコンソール、左側のクラスタリストで、対象クラスタをクリックし、クラスタ管理ページに入ります。
2. クラスタの詳細でターゲットインスタンスを確認し、インスタンスIDの後の詳細をクリックすると、インスタンス詳細ページに移動します。
1. TDSQL-C for MySQLコンソールにログインし、クラスタリストで文字セットを変更する必要があるクラスタを見つけ、クラスタIDをクリックしてクラスタ管理ページに入ります。
2. クラスタ管理ページで、インスタンスリストタブを選択し、列ストレージインデックスを有効化または無効化する読み取り専用インスタンスを見つけ、インスタンスIDをクリックしてインスタンス詳細ページに入ります。
2. インスタンス詳細ページのインスタンス形態の横にある編集アイコンをクリックします。

3. ポップアップで操作時間を選択し、「操作中、秒レベルの瞬断が発生する可能性があります。業務に再接続メカニズムが備わっていることを確認してください」にチェックを入れ、確定をクリックします。
操作時間
即時実行:インスタンス形態の切り替えを即時実行します。
メンテナンス時間内:お客様が設定したインスタンスメンテナンス時間内に実行されます。メンテナンス時間の変更については、インスタンスメンテナンス時間の変更を参照してください。
説明:
インスタンス形態が行ストレージから行と列のハイブリッドストレージに調整され、列ストレージインデックスCSIの有効化を意味します。
インスタンス形態が行と列のハイブリッドストレージから行ストレージに調整され、列ストレージインデックスCSIの無効化を意味します。

CSIの作成

列ストレージインデックスCSIを有効化した後、テーブル作成に関連するCSIコマンドの作成は次の通りです:
1. テーブルを作成する時にCSIを作成する
CREATE TABLE table_name (col1, col2,... COLUMNSTORE INDEX [index_name] [(col1, col2,...)]);
2. テーブル作成後にCSIを作成する
CREATE COLUMNSTORE INDEX [index_name] ON table_name[(col1, col2,...)];
ALTER TABLE table_name ADD COLUMNSTORE INDEX [index_name] [(col1, col2,...)];

CSIを削除する

列ストレージインデックスCSIを有効化した後、列ストレージインデックスCSIを削除するコマンドは次の通りです:
ALTER TABLE table_name DROP INDEX index_name;

CSIの名称変更

列ストレージインデックスCSIを有効化した後、列ストレージインデックスCSIの名称変更コマンドは次の通りです:
ALTER TABLE table_name RENAME index old_index_name to new_index_name;

列ストレージインデックスCSIヒントステートメント

1. 行ストレージ実行/列ストレージ実行を強制実行する。
行ストレージ実行を強制実行する
SELECT a FROM t IGNORE INDEX (csi);
列ストレージ実行を強制実行する
SELECT a FROM t FORCE INDEX (csi);
2. HINTを使用してパラレルクエリと列ストレージインデックスを同時に実行します。
SELECT /*+PARALLEL(2)*/ a FROM t FORCE INDEX (csi);

テーブルと列ストレージインデックスの作成サンプル

CREATE TABLE t (a int, columnstore index csi (a));
INSERT INTO t VALUES (0), (1), (2);
SHOW CREATE TABLE t;
SHOW INDEX FROM t;
実行結果は次の通り:
MySQL [test]> CREATE TABLE t (a int, columnstore index csi (a));
Query OK, 0 rows affected (0.01 sec)
MySQL [test]> INSERT INTO t VALUES (0), (1), (2);
Query OK, 3 rows affected (0.01 sec) Records: 3 Duplicates: 0 Warnings: 0
MySQL [test]> SHOW CREATE TABLE t;
+-------+---------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+---------------------------------------------------------------------------------------------------------------+
| t | CREATE TABLE `t` ( `a` int DEFAULT NULL, COLUMNSTORE KEY `csi` (`a`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+---------------------------------------------------------------------------------------------------------------+
MySQL [test]> SHOW INDEX FROM t;
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+-------------+---------+---------------+---------+------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | Visible | Expression |
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+-------------+---------+---------------+---------+------------+
| t | 1 | csi | 1 | a | NULL | 1 | NULL | NULL | YES | COLUMNSTORE | | | YES | NULL |
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+-------------+---------+---------------+---------+------------+
1 row in set (0.00 sec)

INDEX HINTの使用

1. ステートメントに対して列ストレージインデックスの使用を強制します。
SELECT a FROM t FORCE INDEX (csi);
EXPLAIN FORMAT=TREE SELECT a FROM t FORCE INDEX (csi);
実行結果:
MySQL [test]> SELECT a FROM t FORCE INDEX (csi);
+------+
| a |
+------+
| 0 |
| 1 |
| 2 |
+------+
3 rows in set (0.00 sec)
MySQL [test]> EXPLAIN FORMAT=TREE SELECT a FROM t FORCE INDEX (csi);
+---------------------------------------------------------------+
| EXPLAIN |
+---------------------------------------------------------------+
| -> COLUMNSTORE Index scan on t using csi (cost=1.30 rows=3) |
+---------------------------------------------------------------+
1 row in set (0.00 sec)
2. ステートメントに対して列ストレージインデックスを使用しないよう強制します(行ストレージ実行)。
SELECT a FROM t IGNORE INDEX (csi);
EXPLAIN FORMAT=TREE SELECT a FROM t IGNORE INDEX (csi);
実行結果:
MySQL [test]> SELECT a FROM t IGNORE INDEX (csi);
+------+
| a |
+------+
| 0 |
| 1 |
| 2 |
+------+
3 rows in set (0.00 sec)
MySQL [test]> EXPLAIN FORMAT=TREE SELECT a FROM t IGNORE INDEX (csi);
+-----------------------------------------+
| EXPLAIN |
+-----------------------------------------+
| -> Table scan on t (cost=0.55 rows=3) |
+-----------------------------------------+
1 row in set (0.00 sec)

CSIインデックスの作成状況を確認します。

show create table TABLE
説明:
デフォルトではCOLUMNSTOREプレフィックスは表示されません。パラメータcolumnstore_display_in_show_create=1を設定した場合のみ表示されます。
show index from TABLE
explain format=tree
説明:
列CSIを有効にした後、CSIインデックスの作成状況を確認するには、explain format=treeを使用して実行計画のオペレータにCOLUMNSTOREプレフィックスがあるかどうかを確認することもできます(存在する場合、オペレータが列指向実行を採用していることを示します)。これにより、当該オペレータが列指向実行を使用しているかどうかを判断できます。format=treeを指定した場合のみCOLUMNSTOREプレフィックスが表示され、フォーマットを指定しない場合はデフォルトでCOLUMNSTOREは表示されません。

ヘルプとサポート

この記事はお役に立ちましたか?

フィードバック