tencent cloud

フィードバック

TXRocks概要

最終更新日:2022-09-16 14:18:18

    TXRocks概要

    RocksDBは非常に人気の高い高性能の永続的なKV (key-value)ストレージであり、TXRocksはTencent TXSQLチームがこれに基づいて開発したトランザクション型ストレージエンジンです。

    TXRocksストレージエンジンを使用する理由

    TXRocksトランザクション型ストレージエンジンはRocksDB LSM Treeストレージ構造のおかげで、InnoDBページの半分格納と断片化の無駄を減らすと同時に、コンパクトな形式のストレージを使うことができます。そのためTXRocksはInnoDBと近い性能を維持する前提の下で、ストレージ空間はInnoDBによりも半分以上節約することができ、さらにトランザクションの読み書きパフォーマンスが要求され、大量のデータを保存するビジネスに最適です。

    RocksDBのLSM Treeアーキテクチャ

    RocksDBはLSM Treeストレージ構造を使用し、データはメモリ内のMemTableとディスク上のSSTファイルの層のセットに編成されます。
    書き込みリクエストは、新しいバージョンのレコードをActive MemTableに書き込むと同時に、WALログを永続的に書き込みます。書き込みリクエストにより、MemTableとWALを書き込めば返します。
    Active MemTableがある程度いっぱいになったら、Active MemTableを凍結したImmutable MemTableに切り替えます。バックグラウンドスレッドはImmutable MemTableをハードディスクにブラッシュアップし、対応するSSTファイルを生成します。SSTはリフレッシュされた順序で階層化され、通常はL0~L6に分割されます。L1-L6は、各レイヤー内のSSTのレコードが順序付けられ、SSTファイル間でレコード範囲が重複することはありません。L0は、Immutable MemTableが占有するメモリ空間をできるだけ早く解放することをサポートするために、Flushが生成するL0のSSTにレコード範囲のオーバラップを許容します。

    1行のレコードを読み込んだ場合、新旧順にActive MemTable、Immutable MemTable、L0、L1~L6の各コンポーネントからこの行を探し、いずれかのコンポーネントから見つかれば、最新のバージョンが見つかったことを意味し、すぐに返します。

    範囲スキャンが実行されると、各レイヤーのMemTableを含む各レイヤーのデータに対して、それぞれ1つのイテレータが生成され、これらのイテレータは、マージして次のレコードを検索します。読み取りのプロセスから、LSM Treeのレイヤー数が多すぎると、読み取りのパフォーマンス、特に範囲スキャンのパフォーマンスが著しく低下することがわかります。したがって、LSM Treeの形状をより良いものに維持するために、バックグラウンドではcompaction操作を実行して、下位レイヤーのデータを上位レイヤーのデータに統合し、レイヤー数を減らしていきます。

    TXRocksアーキテクチャ

    TXRocksストレージエンジンのメリット

    ストレージスペースをさらに節約できる

    InnoDBが用いているB+Treeインデックス構造に比べて、LSM Treeはかなりの割合のメモリスペースを節約できます。
    InnoDBのB+Treeのスプリットは通常、ページが半分格納となり、ページ内の空き領域が無駄になり、ページ有効利用率が低くなります。

    RocksDBのSSTファイルは一般的にMB単位以上の大きさに設定されており、ファイルの4Kアライメントの場合、発生する無駄の割合が低く、SST内部もBlockに分割されていますが、Blockはアラインする必要はありません。

    また、RocksDBのSSTファイルはプレフィックス圧縮を採用しており、同じプレフィックスは1部しか記録されません。同時にRocksDBの異なるレイヤーのSSTは異なる圧縮アルゴリズムを採用することができ、さらにストレージスペースのオーバーヘッドを下げることができます。トランザクションのoverheadについては、InnoDBのレコードにはtrx id、roll_ptrなどのフィールド情報が含まれているが、TXRocksの最下層のSSTファイル(ほとんどの割合のデータが含まれている)には、データは他のトランザクションオーバヘッドを保持する必要はなく、例えばレコード上のバージョン番号は十分な時間が経過すると消去できます。

    書き込みの拡大率がより低い

    InnoDBはIn-Placeの修正方式を採用し、1行のレコードを修正するだけでもディスク全体をブラッシュアップすることがあり、高い書き込みの拡大率とランダムな書き込みが発生します。

    TXRocksはAppend-Onlyを採用しており、それよりも書き込みの拡張率が低いです。そのためTXRocksは消去回数が限られているSSDなどの製品には優しいです。

    ユースケース

    TXRocksは、ストレージコストが重視され、読み取り量が少ないが、書き込み量が多く、トランザクションの読み取りと書き込みのパフォーマンスが要求される、大量のデータストレージを必要とするビジネスシナリオに最適です。

    TXRocksストレージエンジンの使用方法

    TXRocksエンジンのご使用にあたっての注意事項をご参照ください。

    最適化と今後の展開

    TXRocksは業務のニーズに応じて部分的な最適化を行い、例えば最適化sum演算子プッシュダウンの最適化により、sumクエリの性能を30倍以上に最適化しました。同時にTXRocksも新しいハードウェアとの結合を積極的に模索しており、AEPを二次キャッシュとして利用し、性能を大幅に向上させ、コストパフォーマンスを高めます。

    MySQLのストレージエンジンであるTXRocksは、今後、ビジネスでの使用で発生した問題に対応するために最適化され、改善されていきます。また、InnoDBの重要な補完として、TXRocksストレージエンジンは、より多くの重要なビジネスで導入され、スムーズに稼働します。

    お問い合わせ

    カスタマーサービスをご提供できるため、ぜひお気軽にお問い合わせくださいませ。

    テクニカルサポート

    さらにサポートが必要な場合は、サポートチケットを送信して弊社サポートチームにお問い合わせください。24時間365日のサポートをご提供します。

    電話サポート(24 時間365日対応)