tencent cloud

TencentDB for MySQL

動向とお知らせ
製品アップデート情報一覧
初心者ガイド
製品紹介
製品概要
製品の優位性
適用シナリオ
データベースのアーキテクチャ
タグ編集
製品機能リスト
データベースインスタンス
高可用性(マルチアベイラビリティゾーン)
地域とAvailability Zone
自社研究カーネル
TXSQLカーネル概要
機能系特性
パフォーマンス系特性
セキュリティ系特性
安定性系特性
TXRocksエンジン
購入ガイド
課金概要
購入方法
支払い更新の説明
支払い延滞の説明
返金説明
インスタンス調整の料金の説明
バックアップキャパシティ課金説明
クイックスタート
概要
MySQLインスタンスの作成
操作ガイド
使用制限
操作一覧
インスタンスの管理とメンテナンス
アップグレードインスタンス
拡張インスタンス
データベースプロキシ
データベース管理(DMC)
アカウント管理
パラメータ設定
バックアップとロールバック
データ移行
インターネットとセキュリティ
監視とアラーム
ログセンター
タグ
プラクティスチュートリアル
MySQL利用規約
アプリケーションの自動再接続機能のコンフィグレーション
MySQLマスターインスタンスパラメータの変更影響
MyISAMからInnoDBエンジンへの切り替え制限
TencentDB for MySQLのためのVPC作成
MySQLによるサービス負荷能力の向上
2地域3センターのディザスタリカバリ構築
リード・ライト分離によるTencentDB for MySQLパフォーマンスの拡張
DTSでInnoDBデータをRocksDBに移行します
LAMPスタック上のWebアプリケーションの構築
Drupalウエブサイトの構築
Python言語によるMySQL APIの使用
ホワイトペーパー
パフォーマンス白書
セキュリティ白書
トラブルシューティング
接続に関する問題
性能関連
インスタンスデータの同期遅延
大文字と小文字を区別しない設定に失敗しました
APIドキュメント
History
Introduction
API Category
Instance APIs
Making API Requests
Data Import APIs
Database Proxy APIs
Database Audit APIs
Security APIs
Task APIs
Backup APIs
Account APIs
Rollback APIs
Parameter APIs
Database APIs
Monitoring APIs
Log-related API
Data Types
Error Codes
よくある質問
課金関連
ロールバック関連の問題
接続とログインに関する問題
パラメータを変更
アップグレード関連の問題
アカウント権限
性能メモリ
運営する
データ移行
機能特徴
コンソール関連
ログ関連
API 2.0切り替え 3.0ガイド
Service Agreement
Service Level Agreement
Terms of Service
汎用参考
標準と認証
お問い合わせ
用語集

TXRocks概要

PDF
フォーカスモード
フォントサイズ
最終更新日: 2024-07-25 16:20:38

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は業務のニーズに応じて部分的な最適化を行い、例えば最適化sum演算子プッシュダウンの最適化により、sumクエリの性能を30倍以上に最適化しました。同時にTXRocksも新しいハードウェアとの結合を積極的に模索しており、AEPを二次キャッシュとして利用し、性能を大幅に向上させ、コストパフォーマンスを高めます。
MySQLのストレージエンジンであるTXRocksは、今後、ビジネスでの使用で発生した問題に対応するために最適化され、改善されていきます。また、InnoDBの重要な補完として、TXRocksストレージエンジンは、より多くの重要なビジネスで導入され、スムーズに稼働します。

ヘルプとサポート

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

フィードバック