背景
クラウドへの移行が進むにつれ、ユーザーデータ量が増加し、ビジネスロジックも複雑化しています。TDSQL-C for MySQLのクラウドネイティブアーキテクチャはトランザクション処理には優れていますが、多様化するクエリ分析ニーズに対して、行ストレージベースのクエリではレスポンスタイム要件を常に満たせない場合があります。一般的な解決策として、データ同期ツールを用いてトランザクションシステムのデータを独立した分析システムに複製し、クエリ分析を分析システムにルーティングする方法があります。しかしながら、このソリューションにはデータ同期と独立分析クラスタの追加コスト、同期のリアルタイム性と一貫性といった課題が存在します。
このような問題を解決するために、TDSQL-C for MySQLはCSI(Column store Index)列ストレージインデックス機能を導入しました。この機能は列形式データフォーマットを使用してデータを保存、検索、管理する技術であり、より優れたクエリパフォーマンスとより高いデータ圧縮率を実現できます。
機能メリット
従来の行ベースのストレージ方式と比較し、列ストレージインデックスは列ベースのデータ格納とクエリ処理を採用することで、クエリパフォーマンスを一桁向上させることが可能です。また、列ストレージはデータ圧縮に適しており、行ストレージと比べてストレージスペースをほぼ一桁削減できます。
サポートバージョン
カーネルバージョンは TDSQL-C for MySQL 8.0 バージョン 3.1.14 以上です。
説明:
読み取り専用インスタンスの場合、バージョン要件を満たす条件下で、4コア以上の読み取り専用インスタンスのみ列ストレージインデックス機能を有効化できます。
適用シーン
オンライン帳票やデータダッシュボードなど、オンラインデータに対するリアルタイムデータ分析のニーズがあるシナリオに適用されます。
大規模データ分析型クエリのシナリオ。
技術原理
TDSQL-C for MySQLの列ストレージインデックス機能は、以下の3つのキーテクノロジーポイントに基づいて実現されています:
1. 行データと列データのハイブリッドストレージ
TDSQL-C for MySQLでは、データはデフォルトで行形式で保存されます。分析クエリをより効果的にサポートするためには、列形式ストレージがより適切な選択肢です。統一されたアーキテクチャ上で、行ストレージテーブルに対して列ストレージインデックスを作成する方法を採用し、データのハイブリッドストレージを実現しています。
2. 行と列のハイブリッドプランの生成とスケジューリング実行
TDSQL-C for MySQLは、オプティマイザの統計情報とコストモデルに基づき、列ストレージインデックスを現在の行ストレージオプティマイザモデルに適合させ、CBO(コストベースオプティマイザ)の探索空間に参加させます。さらに、実行計画のフラグメントをプッシュダウンし、フラグメントに基づいたハイブリッドスケジューリングを実行します。
3. 高効率計算
列ストレージではデータが列単位でデータブロックに個別に格納されるため、計算時に必要な列のみを読み取ることで、特にワイドテーブルのシナリオにおいてIO層のオーバーヘッドを大幅に削減できます。さらに、列形式データはよりコンパクトな方法でメモリに格納可能であり、列ストレージインデックスCSIを使用した計算時には、各オペレータが複数行の列データをバッチ処理することで、CPUのキャッシュ親和性を十分に活用し、計算効率を向上させることができます。