PolarDB for MySQLはX-Engineストレージエンジンをサポートしています。 X-Engineは高い圧縮率を提供し、高い計算パフォーマンスを必要としないが、DingTalkメッセージなどの大量のデータをアーカイブする必要があるビジネスに適しています。 PolarDB for MySQLクラスターでは、X-EngineとInnoDBを使用できます。 ストレージコストを削減するために、X-Engineの高圧縮機能を利用してアーカイブデータを保存できます。 X-Engineは手動で有効にできます。 詳細については、「X-Engineの有効化」をご参照ください。 このトピックでは、PolarDBでX-Engineを使用する方法について説明します。
制限事項
機能の制限
次の表に、X-Engineの機能制限を示します。
カテゴリ
機能
説明
SQLの特徴
外部キー
非対応
一時テーブル
非対応
生成された列
非対応
ハンドラーAPI
非対応
列のプロパティ
最大列サイズ
(LONGBLOB/LONGTEXT/JSON)
32 MB
GISデータ型
X-Engineは、GEOMETRY、POINT、LINESTRING、POLYGON、MULTILINESTRING、MULTIPOLYGON、GEMOMETRYCOLLECTIONなどのGISデータ型をサポートしていません。
インデックス作成
Hash index
非対応
空間インデックス
サポートされていません。 X-Engineは、フルテキストインデックスの作成または使用をサポートしていません。
トランザクション
トランザクション分離レベル
次の分離レベルをサポートします。
コミット読み取り (RC)
繰り返し読み取り (RR)
トランザクションでサポートされるデータの最大アカウント
32 MB
Savepoint
非対応
eXtended Architecture (XA) トランザクション
内部XAトランザクションをサポートします。
ロック
ロックの粒度
テーブルレベルと行レベルのロックをサポートします。
ギャップロックをサポートしていません。
スキップロック
非対応
ロックNowait
非対応
文字の組み合わせ
インデックスなしの列でサポートされる文字セット
All
インデックス付き列でサポートされる文字セット
Latin1 (latin1_bin)
GBK (gbk_chinese_ciおよびgbk_bin)
UTF-8 (utf8_general_ciおよびutf8_bin)
UTF-8MB4 (utf8mb4_0900_ai_ci、utf8mb4_general_ci、およびutf8mb4_bin)
プライマリ /セカンダリレプリケーション
バイナリログ形式
次の形式をサポートします。
stmt
row
混合
説明デフォルトでは、バイナリログは行形式を使用します。 stmt形式と混合ログ形式は、特定の同時実行シナリオでデータセキュリティの問題を引き起こす可能性があります。
説明既定では、上記の表に記載されていないX-Engineの機能は、InnoDBの機能と同じです。
大規模な取引の制限
X-Engineは大規模なトランザクションをサポートしていません。 トランザクションで変更された行数が10,000以上の場合、X-Engineは
中間
コミット機能を有効にします。 このようにして、X-Engineは内部でトランザクションをコミットし、サブトランザクションを開始してトランザクションを実行し続けることができます。 ただし、commit in middle
の機能では、トランザクションのアトミック性が保証されない場合があります。 中央でコミット機能を使用する場合は、次の項目に注意してください。大量のデータを挿入するトランザクションを開始するとします。 挿入中、
commit in middle
の機能により、データの一部がコミットされます。 挿入されたデータは、他の要求によって問い合わせることができる。大量のデータを変更するトランザクションを開始するとします。
commit in middle
機能でコミットされたデータはロールバックできません。ドロップテーブルt1; CREATE TABLE t1(c1 intプライマリキー、c2 int)ENGINE=xengine; 開始; call insert_data(12000);// 12,000行が挿入され、中間コミット操作がトリガーされます。 その結果、データの最初の10,000行がコミットされる。 ロールバック; // 最後の2,000行のみロールバックできます。 SELECT COUNT(*) FROM t1;// コミットされた10,000行のデータを照会できます。 + --------- | カウント (*) | + --------- | 10000 | + --------- 1行セット (0.00秒)
トランザクション内の大量のデータを変更および削除するとします。 DELETE操作は、
commit in middle
機能のため、このトランザクションでコミットされた行を読み取ることができません。 そのため、新しくコミットされたデータは削除できません。ドロップテーブルt1; CREATE TABLE t1(c1 intプライマリキー、c2 int)ENGINE=xengine; insert_data(10000) を呼び出す。開始; t1値 (10001,10001) 、(10002,10002) に挿入します。DELETE FROM t1 WHERE c1 >= 0;// 削除は途中でコミット操作をトリガーし、現在のトランザクションによって挿入された2行のデータは削除されません。 コミット; SELECT * からt1; + ------ ------- + | c1 | c2 | + ------ ------- + | 10001 | 10001 | | 10002 | 10002 | + ------ ------- + セットの2列 (0.00秒)
テーブルのストレージエンジンをInnoDBからX-engineに変更
データ管理 (DMS) 、クライアント、またはCLIを使用して管理するデータベースに接続します。 詳細については、「クラスターへの接続」をご参照ください。
次のステートメントを実行して、テーブルのストレージエンジンをInnoDBからX-engineに変更します。
ALTER TABLE <データベース名> 。<テーブル名> ENGINE xengine;
説明ALTER
文を使用してテーブルのストレージエンジンをInnoDBからX-engineに変更すると、テーブルへのDMLおよびDDLの書き込み操作がブロックされます。
X-Engineを使用したテーブルの作成
X-EngineとInnoDBを使用するクラスターでX-Engineを使用してテーブルを作成するには、テーブルの作成時にストレージエンジンとしてX-Engineを指定します。 例:
CREATE TABLE t1(c1 intプライマリキー、c2 int) ENGINE=xengine;
パラメーター
ビジネス要件に基づいて、変更を許可するパラメーターを変更できます。 詳細については、「クラスターとノードパラメーターの設定」をご参照ください。
MySQL設定ファイルの互換性プレフィックス
loose_
は、PolarDBコンソールのすべてのパラメーターに追加されます。
カテゴリ | パラメーター | 説明 | 変更を許可 | 変更後に再起動 |
パフォーマンス | xengine_batch_group_max_group_サイズ | トランザクションパイプライン内のグループの最大数。 | 任意 | 任意 |
xengine_batch_group_max_leader_wait_time_us | トランザクションパイプラインの最大待機時間。 | 任意 | 任意 | |
xengine_batch_group_slot_array_size | トランザクションパイプラインの最大バッチサイズ。 | 任意 | 任意 | |
xengine_parallel_read_スレッド | 並列読み取りスレッドの数。 | 可 | 任意 | |
xengine_parallel_wal_recovery | パラレルWrite-Ahead Logging (WAL) リカバリを有効にするかどうかを指定します。 | 任意 | 任意 | |
メモリ | xengine_block_cache_サイズ | 読み取りブロックキャッシュのサイズ。 | 任意 | 任意 |
xengine_row_cache_サイズ | 行キャッシュのサイズ。 | 任意 | 任意 | |
xengine_write_buffer_サイズ | メモリテーブルの最大サイズ。 | 任意 | 任意 | |
xengine_block_size | ディスク上のデータブロックのサイズ。 | 任意 | 任意 | |
xengine_db_write_buffer_サイズ | すべてのサブテーブルのアクティブなメモリテーブルの最大サイズ。 | 任意 | 任意 | |
xengine_db_total_write_buffer_サイズ | すべてのサブテーブルのアクティブなメモリテーブルと不変のメモリテーブルの最大サイズ。 | 任意 | 任意 | |
xengine_scan_add_blocks_limit | 各範囲ベースのスキャン要求中にブロックキャッシュに追加できるブロックの数。 | 可 | 任意 | |
圧縮 | xengine_flush_delete_percent_trigger | メモリテーブルのレコード数がこのパラメーターの値より大きい場合、xengine_flush_delete_record_triggerパラメーターがメモリテーブルに対して有効になります。 | 任意 | 任意 |
ロック | xengine_max_row_locks | 1つのSQLリクエストでロックできる行の最大数。 | 任意 | 任意 |
xengine_lock_wait_timeout | ロック待機のタイムアウト期間。 | 可 | 任意 |