メインコンテンツまでスキップ
バージョン: 26.x

テーブルインデックス設計の最適化

概要

Dorisは現在、2種類のインデックスをサポートしています:

  1. Built-in Indexes: prefixインデックス、ZoneMapインデックスなどが含まれます。
  2. Secondary Indexes: inverted indexes、Bloom filterインデックス、N-Gram Bloom filterインデックス、Bitmapインデックスなどが含まれます。

ビジネス最適化のプロセスにおいて、ビジネス特性を十分に分析し、インデックスを効果的に活用することで、クエリと分析の効果を大幅に向上させ、パフォーマンスチューニングの目的を達成できます。

各インデックスの詳細な紹介については、Table Indexセクションを参照してください。この章では、実際のケースの観点から、いくつかの典型的なシナリオにおけるインデックス使用技術を実演し、ビジネスチューニングの参考となる最適化提案をまとめます。

Case 1: Key列の順序を最適化してPrefix Indexesを活用し、クエリを高速化する

テーブルスキーマ設計の最適化において、適切なフィールドをkeyフィールドとして選択し、Dorisのkey列ソート機能を活用してクエリを高速化する方法を紹介しました。このケースでは、このシナリオをさらに展開します。

Dorisのbuilt-in prefix index機能により、テーブル作成時に自動的にテーブルのKeyの最初の36バイトをprefix indexとして取得します。クエリ条件がprefix indexのprefixと一致する場合、クエリを大幅に高速化できます。以下はテーブル定義の例です:

CREATE TABLE `t1` (
`c1` VARCHAR(10) NULL,
`c2` VARCHAR(10) NULL
) ENGINE=OLAP
DUPLICATE KEY(`c1`)
DISTRIBUTED BY HASH(`c2`) BUCKETS 10
PROPERTIES (
"replication_allocation" = "tag.location.default: 1"
);

対応するビジネスSQLパターンは以下の通りです:

select * from t1 where t1.c2 = '1';
select * from t1 where t1.c2 in ('1', '2', '3');

上記のスキーマ定義では、c1c2より前に配置されています。しかし、クエリではフィルタリングにc2フィールドを使用しています。この場合、プリフィックスインデックスの加速機能を利用できません。最適化するために、c1c2の定義順序を調整し、c2カラムを最初のフィールド位置に配置することで、プリフィックスインデックスの加速機能を活用できます。

調整後のスキーマは以下の通りです:

CREATE TABLE `t1` (
`c2` VARCHAR(10) NULL,
`c1` VARCHAR(10) NULL
) ENGINE=OLAP
DUPLICATE KEY(`c2`)
DISTRIBUTED BY HASH(`c1`) BUCKETS 10
PROPERTIES (
"replication_allocation" = "tag.location.default: 1"
);
ヒント

スキーマカラムの順序を定義する際は、ビジネスクエリフィルタリングにおける高頻度かつ高優先度のカラムを参照し、Dorisのprefix indexアクセラレーション機能を最大限に活用してください。

ケース2: Inverted Indexを使用したクエリアクセラレーション

Dorisは、テキストタイプの等値、範囲、および全文検索などのビジネスシナリオを高速化するためのセカンダリインデックスとして、inverted indexをサポートしています。inverted indexの作成と管理は独立しており、元のテーブルスキーマに影響を与えることなく、またテーブルデータの再インポートを必要とすることなく、便利なビジネスパフォーマンス最適化を可能にします。

典型的な使用シナリオ、構文、およびケースについては、Table Index - Inverted Indexセクションの詳細な説明を参照してください。この章では説明を繰り返しません。

ヒント

テキストタイプの全文検索や、string、numeric、datetimeタイプフィールドの等値または範囲クエリでは、inverted indexを活用してクエリを高速化できます。特に、元のテーブル構造とキー定義の最適化が困難な場合や、テーブルデータの再インポートコストが高い場合など、特定の状況において、inverted indexはビジネス実行パフォーマンスを最適化するための柔軟なアクセラレーションソリューションを提供します。

まとめ

スキーマチューニングにおいて、テーブルレベルのスキーマ最適化に加えて、インデックス最適化も重要な位置を占めています。Dorisは、prefix indexなどの組み込みインデックス、およびinverted indexなどのセカンダリインデックスを含む複数のインデックスタイプを提供し、パフォーマンスアクセラレーションに強力なサポートを提供しています。これらのインデックスを合理的に活用することで、複数のシナリオにおけるビジネスクエリと分析の速度を大幅に向上させることができ、これは多シナリオビジネスクエリと分析にとって重要な意味を持ちます。