元ドキュメント: データ高圧縮率
高圧縮率ストレージ
従来の MySQL InnoDB エンジンと比較して、TDSQL Boundless は最大 3.81 倍の圧縮率を提供します。本ドキュメントでは、データベース移行や製品選定を検討しているユーザー向けに、ディスク容量の見積もり方法を説明します。
コアとなる優位性:TDSQL Boundless が高い圧縮率を実現できる理由
TDSQL Boundless は LSM 構造でデータを格納しています。LSM の Append-only 特性により、B+ ツリーのインプレース更新に起因する頻繁なランダム書き込みによるデータページのフラグメンテーションを回避しています。また、LSM のバックグラウンドコンパクション特性により、書き込みのたびにデータを圧縮するオーバーヘッドを回避し、圧縮がパフォーマンスに与える影響を大幅に低減しています。このため、TDSQL Boundless は MySQL InnoDB と同等のパフォーマンスを維持しながら、最大 3.81 倍のデータ圧縮率を達成できます。
カーネルの仕組みを理解したところで、次に実測データを確認します。TDSQL Boundless データベースと MySQL が同一データを格納した際のストレージ使用量を定量的に比較し、OLTP データモデルにおける高圧縮率の有効性を検証します。これにより、MySQL からの移行ユーザーに科学的なディスク容量計画のガイダンスを提供します。
テスト概要
テスト環境
| 項目 | 説明 |
|---|---|
| クラウドプラットフォーム | Tencent Cloud |
| インスタンススペック | 16 コア CPU / 32GB メモリ / Enhanced SSD クラウドディスク 300GB |
比較対象データベース
- コントロール群:MySQL 8.0(InnoDB ストレージエンジン、デフォルト設定)
- 実験群:TDSQL Boundless(高効率データ圧縮エンジン内蔵)
主要な設定
MySQL 8.0 InnoDB エンジンのデフォルト設定:
# MySQL InnoDB デフォルトパラメータ設定
innodb_file_per_table=ON
innodb_page_size=16K
# innodb_page_compression を有効化していない(大多数の本番環境のデフォルト状態を再現)
innodb_page_compression=OFFテストデータセット
- Sysbench ベンチマークテスト
- TPC-C ベンチマークテスト
テスト計画
テストデータの準備
- Sysbench ベンチマークテスト:Sysbench テストを参考に、32 テーブルを初期化し、各テーブルに1,000万件のレコードを挿入。
- TPC-C ベンチマークテスト:TPC-C テストを参考に、1,000 Warehouses で初期化。
テスト結果とデータ分析
ストレージ使用量の比較(単位:GB)
| データセット | MySQL 8.0 (InnoDB) | TDSQL Boundless |
|---|---|---|
| Sysbench | 72.6GB | 36.77GB |
| TPC-C(1000 Warehouses) | 77.8GB | 43.5GB |
データ圧縮率の比較(MySQL を基準 100%)
| データセット | MySQL 8.0 (InnoDB) | TDSQL Boundless |
|---|---|---|
| Sysbench | 100% | 約 50.64% |
| TPC-C(1000 Warehouses) | 100% | 約 55.91% |
移行ガイド:ディスク容量計画の推奨事項
MySQL から TDSQL Boundless への移行を検討し、移行先データベースのディスク容量を見積もる場合は、以下のガイドラインに従ってください。
ステップ1:MySQL のディスク使用状況を確認する
MySQL インスタンスにログインし、以下のコマンドで合計データサイズを確認します:
SELECT table_schema AS 'Database',
ROUND(SUM(data_length + index_length) / 1024 / 1024 / 1024, 2) AS 'Size(GB)'
FROM information_schema.TABLES
GROUP BY table_schema;ステップ2:業務シナリオに基づいて圧縮係数を選択する
| MySQL のソース側の業務データタイプ | 推奨計画係数 |
|---|---|
| 一般的な OLTP 業務(注文、ユーザーなど) | MySQL 容量の 50% で計画 |
| ログ、監視、時系列データ | MySQL 容量の 30% で計画 |
| データウェアハウス、レポート分析(AP) | MySQL 容量の 30% で計画 |
ステップ3:目標ディスク容量を計算する
必要なディスク容量 ≒ ソース側の MySQL 容量 × 計画係数