TXRocksは、Tencent TXSQLチームがRocksDBに基づいて開発したトランザクション型ストレージエンジンであり、さらにストレージスペースを節約し、書き込みの拡大率が低いという利点を併せ持っています。
TXRocksは、Tencent TXSQLチームがRocksDBに基づいて開発したトランザクション型ストレージエンジンであり、RocksDB LSM Treeストレージ構造により、InnoDBページの半分格納と断片化の無駄を減らすと同時に、コンパクトな形式のストレージを使うことができます。そのため、TXRocksはInnoDBと近い性能を維持するの前提の下で、ストレージ空間はInnoDBによりも半分以上節約することができ、さらにトランザクションの読み書きパフォーマンスが要求され、大量のデータを保存するビジネスに最適です。
データベースのバージョンはMySQL 5.7、8.0で、アーキテクチャは2ノードでなければなりません。
TencentDB for MySQL購入ページでインスタンスを購入するときに、エンジンとしてRocksDBを選択することができます。他のパラメータ項目について、MySQLインスタンスを作成をご参照ください。
説明:RocksDBはkey-valueストレージエンジンであり、効率的な書き込み能力と高圧縮ストレージとして知られています。現時点で、エンジンとしてRocksDBを選択することをサポートしているのはMySQL 5.7、8.0だけです。
インスタンスを作成する際に、デフォルトのエンジンをRocksDBと設定する場合、テーブル作成時のデフォルトエンジンはRocksDBです。デフォルトエンジンは、以下のコマンドで確認できます:
show variables like '%default_storage_engine%';
デフォルトエンジンはRocksDBである場合は、テーブル作成ステートメントではストレージエンジンの指定が許可されません。
テーブルが正常に作成された後、その後の使用方法はInnoDBと同様に、データはRocksDBエンジンに格納されます。
TXRocksは、次の表に示すように、エンジン機能にいくつかの制限があります:
機能分類 | 機能項目 | TXRocks制限 |
---|---|---|
DDL | Online DDL | サポートされません。例えば、ALTER TABLE ... ALOGRITHM=INSTANT機能をサポートしません。Partition 管理操作ではCOPYアルゴリズムだけをサポートします。 |
SQL機能 | 外部キー | 外部キー(Foreign Key)がサポートされません |
パーティションテーブル | パーティションテーブル(Partition)がサポートされません | |
生成列 | 生成列(Generated Columns)がサポートされません | |
明示的なDefault表現式 | サポートされません。例えば、CREATE TABLE t1(c1 FLOAT DEFAULT(RAND()))ENGINE=ROCKSDB; が失敗して、'Specited storage engine' is not supported for default value expressions.が表示されます | |
暗号化テーブル | 暗号化テーブルをサポートしません | |
インデックス | 空間インデックス | 空間インデックス(Spatial Index)、空間データ型(GEOMETRY、POINT等)をサポートしません |
フルテキストインデックス | フルテキストインデックス(Fulltext Index)をサポートしません | |
多値インデックス | 多値インデックス(multi-valued index)をサポートしません | |
レプリケーション | グループレプリケーション | グループレプリケーション(Group Replication)をサポートしません |
binlog形式 | ROW形式をサポートしますが、stmtまたはmixed形式をサポートしません | |
クローンプラグイン | クローンプラグイン(Clone Plugin)をサポートしません | |
トランスポータブル表領域 | トランスポータブル表領域(Transportable Tablespace)をサポートしません | |
トランザクションとロック | LOCK NOWAITとSKIP LOCKED | LOCK NOWAITとSKIP LOCKEDをサポートしません |
ギャップロック | ギャップロック(Gap Lock)をサポートしません | |
Savepoint | Savepointをサポートしません | |
LOBフィールドの一部更新 | LOBフィールドの一部更新をサポートしません | |
XAトランザクション | 使用をお勧めしません |
説明:TencentDB for MySQLインスタンスを作成する際には、RocksDB をデフォルトストレージエンジンとして選択でき、下の表のパラメータの説明に基づいて自社の業務に合わせたパラメータテンプレートを調整することができます。
パラメータ名称 | 再起動が必要かどうか | デフォルト値 | 許容値 | 説明 |
---|---|---|---|---|
rocksdb_use_direct_io_for_flush_and_compaction | はい | ON | ON/OFF | compactionのときにDIOを使用するかどうかを指定します。 |
rocksdb_flush_log_at_trx_commit | いいえ | 1 | 0/1/2 | ログをディスクに書き込むタイミングを制御します。 innodb_flush_log_at_trx_commitと同様に、トランザクションがコミットされたときに同期するかどうかを指定します。 |
rocksdb_lock_wait_timeout | いいえ | 1 | 1-1073741824 | ロックの待ち時間超過時間(秒)。 |
rocksdb_deadlock_detect | いいえ | ON | ON/OFF | デッドロック検出スイッチです。オンにすると、すべてのデッドロック情報はmysqldエラーログに記録されます。 |
rocksdb_manual_wal_flush | はい | ON | ON/OFF | rocksdb_max_total_wal_sizeよりも大きなWALの場合、一番旧いWALファイルを確実に削除するよう、RocksDBは強制的に列ファミリデータをディスクに書き込みます。 |
パラメータ名称 | 再起動が必要かどうか | デフォルト値 | 許容値 | 説明 |
---|---|---|---|---|
rocksdb_flush_log_at_trx_commit | いいえ | 1 | 0/1/2 | ログをディスクに書き込むタイミングを制御します。 innodb_flush_log_at_trx_commitと同様に、トランザクションがコミットされたときに同期するかどうかを指定します。 |
rocksdb_lock_wait_timeout | いいえ | 1 | 1-1073741824 | ロックの待ち時間超過時間(秒)。 |
rocksdb_merge_buf_size | いいえ | 524288(=512K) | 100-18446744073709551615 | セカンダリインデックスの作成時に使用されるmerge-sort bufferのサイズ。 |
rocksdb_merge_combine_read_size | いいえ | 8388608 (=8M) | 524288(=512K)-18446744073709551615 | セカンダリインデックスの作成時に使用されるマルチパスのためのメモリの大きさ。 |
rocksdb_deadlock_detect | いいえ | ON | ON/OFF | デッドロック検出スイッチ。 |
rocksdb_manual_wal_flush | はい | ON | ON/OFF | rocksdb_max_total_wal_sizeよりも大きなWALの場合、一番旧いWALファイルを確実に削除するよう、RocksDBは強制的に列ファミリデータをディスクに書き込みます。 |
下の表はRocksDBのエンジンモニタリングメトリックです。
メトリック | 説明 |
---|---|
rocksdb_bytes_read | ディスク読み取り数 |
rocksdb_bytes_written | ディスク書き込み数 |
rocksdb_block_cache_bytes_read | データブロック読み取り数 |
rocksdb_block_cache_bytes_write | データブロック書き込み数 |
rocksdb_wal_log_capacity | WAL書き込みログのサイズ |
この記事はお役に立ちましたか?