このトピックでは、Alibaba Cloud ClickHouse コミュニティ互換エディション 26.3 長期サポート (LTS) の主な変更点 (新機能、パフォーマンスの最適化、改善点など) について説明します。
概要
Alibaba Cloud ClickHouse コミュニティ互換エディションでは、新しい長期サポート (LTS) バージョン 26.3 をリリースしました。25.3 LTS に続く年次のメジャーリリースとして、26.3 はバッチストリーミング統合データレイク、ネイティブ転置インデックス、高い同時実行性における書き込みの安定性、複雑なクエリの最適化、オープンエコシステムの拡張性に重点を置いています。
主なハイライト
|
カテゴリ |
主な改善点 |
ビジネス価値 |
|
データレイクエコシステム |
Apache Paimon のネイティブサポートと DataLakeCatalog の自動マウント |
Flink CDC によるデータ取り込みシナリオで即時アクセスを実現し、シームレスなレイクハウスクエリを提供 |
|
ネイティブ転置インデックス |
転置インデックスが GA となり、ログおよびテキスト検索が 7 倍~10 倍向上 |
外部検索エンジンを置き換え、ストレージおよび運用保守コストを削減 |
|
データレイクと OSS の高速化 |
Parquet フッターの SLRU キャッシュと Iceberg メタデータのプリフェッチ |
I/O 集約型クエリと OSS 外部テーブルスキャンを 2 倍~5 倍高速化 |
|
複雑なクエリの最適化 |
マテリアライズド CTE と、すべての JOIN タイプに対応するインテリジェントな JOIN の並べ替え |
複雑なレポーティングと多次元分析の大幅な改善 |
|
高次元データとワイドテーブルの Time-To-Live (TTL) |
シャーディングされた Map によるポイントルックアップの 2 倍~49 倍の向上、および TTL の垂直マージ |
ポイントクエリのレイテンシを低減し、バックグラウンドクリーンアップのメモリオーバーヘッドを削減 |
|
オープンエコシステム |
31 の SQL 方言との互換性 |
コード変更なしで、エンジン間の SQL ワークロードを移行 |
データレイクエコシステム:Apache Paimon と統合カタログ
25.3 から 26.3 LTS にかけて、ClickHouse のデータレイク分析機能が大幅に強化されました:
-
Apache Paimon のネイティブサポート:26.3 LTS では、ネイティブの
paimonテーブル関数と Paimon テーブルエンジン (paimonClusterによるクラスタ並列クエリを含む) を提供します。OSS、S3、または HDFS に保存された Paimon テーブルに対して効率的な読み取り専用分析を実行でき、Flink CDC によるデータレイク取り込みシナリオに最適です。 -
DataLakeCatalog の自動マウント:Hive Metastore、AWS Glue、Alibaba Cloud DLF などの外部メタストアを ClickHouse データベースとして直接マウントできます。エンジンがカタログ内の Iceberg、Paimon、Delta Lake、Hudi テーブルを自動検出するため、手動でテーブルを作成する必要はありません。
-
多次元データレイクのクエリの高速化:
-
Parquet フッターの SLRU キャッシュ:
use_parquet_metadata_cache = 1によりデフォルトで有効です。同一の Parquet ファイルに対する繰り返しクエリでは、I/O の読み取りリクエストを最大 50% 削減できます。 -
Iceberg メタデータの非同期プリフェッチ:
iceberg_metadata_async_prefetch_period_msパラメータにより、バックグラウンドでローカルメタデータを最新状態に保ち、リモートカタログのボトルネックを解消します。 -
S3Queue の増分プル:順序付きモードで
StartAfterセマンティクスを使用するようになり、ListObjectsの頻度を減らして OSS API のコストとレイテンシを低減します。
-
全文検索:ネイティブ転置インデックスの GA
26.3 LTS のネイティブ転置インデックスと全文検索機能は、本番環境で利用可能 (GA) になりました。
-
大幅なパフォーマンス向上:テキストのあいまい一致やキーワード検索のシナリオでは、転置インデックスを有効にすることでコールドクエリのパフォーマンスが 7 倍~10 倍向上します。GitHub Events ログクエリのパフォーマンスベンチマークでは、複雑な検索のレイテンシが 193 秒から 0.42 秒に短縮されます。
-
シームレスな SQL 互換性:外部の Elasticsearch やサードパーティ検索プラグインは不要です。
INDEX idx_text content TYPE invertedを使用してインデックスを作成すると、HAS()、LIKE / ILIKE、JSON フィールド抽出クエリが自動的に高速化されます。 -
低いストレージコストとコンピューティングコスト:ClickHouse のカラムストア転置インデックス構造により、インデックスサイズは従来の検索エンジンよりも大幅に小さくなります。これにより、ログ、トレース、テキスト分析シナリオのストレージコストを大幅に削減できます。
コンピュートとオプティマイザ
マテリアライズド CTE
26.3 LTS では、マテリアライズド CTE の構文が導入されました。MATERIALIZED キーワードを使用すると、ClickHouse は CTE の結果を一時的なインメモリテーブルに格納します。これにより、冗長な計算を回避し、複雑なレポーティングや多次元分析の SQL クエリの実行効率を向上できます。
例:
SET enable_materialized_cte = 1;
WITH top_users AS MATERIALIZED (
SELECT user_id, count() AS cnt
FROM events
GROUP BY user_id
ORDER BY cnt DESC
LIMIT 1000
)
SELECT *
FROM top_users
INNER JOIN (SELECT user_id FROM top_users WHERE ...) ON ...;
すべての JOIN タイプに対応するインテリジェントな JOIN の並べ替え
26.3 LTS のコストベースオプティマイザ (CBO) は、標準の INNER JOIN や LEFT/RIGHT JOIN に加え、LEFT ANTI JOIN、SEMI JOIN、FULL JOIN に対しても Build/Probe 側の自動スワップをサポートするようになりました。オプティマイザはテーブル統計に基づいて小さい方のテーブルから自動的にハッシュテーブルを構築し、手動での不適切な SQL の順序付けによって発生するメモリ不足 (OOM) エラーを防止します。
ストレージエンジンとデータ型
シャーディングされた Map
Map 型にユーザープロファイルのタグや動的特徴量を格納するシナリオ向けに、26.3 LTS ではバケット化された物理シリアライゼーションレイアウトを導入しました。Map 内のデータがキーによってハッシュバケット化されるため、単一キーのルックアップが 2 倍~49 倍向上します。
例:
CREATE TABLE user_profiles (
id UInt64,
attributes Map(String, UInt64)
) ENGINE = MergeTree
ORDER BY id
SETTINGS map_serialization_version = 'with_buckets', max_buckets_in_map = 32;
ワイドテーブルの TTL クリーンアップ:垂直マージ
26.3 LTS では、TTL DELETE 操作向けに垂直マージアルゴリズムを導入しました。このマージは、無関係なワイド列を読み取らずに、プライマリキーと TTL 列のフィルタリングを優先します。これにより、バックグラウンドのデータクリーンアップ時の I/O とメモリオーバーヘッドが大幅に削減されます。
適応型可逆浮動小数点圧縮コーデック (ALP)
新しい可逆浮動小数点圧縮コーデック CODEC(ALP, ZSTD) を利用できます。ALP (Adaptive Lossless floating-Point) は、工業モニタリングおよび時系列メトリクスのシナリオにおける Float32 と Float64 データ向けに最適化されており、従来の Gorilla エンコーディングよりも高い圧縮率と高速な伸長を実現します。
オープンエコシステム:エンジン間の SQL 方言互換性 (Polyglot)
オープンソースの Polyglot パーシングライブラリを統合することで、26.3 LTS は Snowflake、BigQuery、PostgreSQL、Spark、Presto、DuckDB など、31 の外部データベース SQL 方言をネイティブにサポートします。次の設定を構成するだけで利用できます:
SET dialect = 'polyglot', polyglot_dialect = 'snowflake';
これにより、既存の SQL ワークロードを再利用できます。
主なパフォーマンス最適化
クエリ実行とオプティマイザ
-
クエリ条件キャッシュ、式の JIT コンパイル、JOIN ランタイムフィルターがデフォルトで有効になり、繰り返しスキャンと大規模テーブルの JOIN オーバーヘッドを削減します。
-
RIGHT JOIN と FULL JOIN は ConcurrentHashJoin を使用し、シナリオによっては最大 2 倍のパフォーマンス向上を実現します。新しい JOIN の順序付け最適化により、統計情報に基づいて複数テーブルの JOIN を自動的に並べ替えます。
-
プライマリキーとパーティションキーのインデックスプルーニングが拡張されました。プライマリキーはデータスキッピングのために任意の決定性式をサポートし、決定性関数チェーンでラップされたパーティションキーもプルーニングできます。
-
ORDER BY ... LIMIT Nクエリでは、スキップインデックスと動的しきい値フィルターにより、スキャンする行数を大幅に削減できます。
ストレージエンジンとデータスキッピング
-
Parquet reader v3 がデフォルトで有効になり、ページレベルのフィルタープッシュダウンと PREWHERE をサポートします。データレイクの読み取りでは、処理スレッドに基づいてパイプラインを自動調整し、マルチコアマシンで約 40 倍の改善を実現します。
-
読み取り時のストリーミングスキップインデックスフィルタリングがデフォルトで有効になりました。テキストインデックスはより多くの述語形式をサポートし、PREWHERE でも使用できます。
-
パーティションプルーニングが多いシナリオでは、10,000+ パーツを持つテーブルに対する SELECT クエリが最大 8 倍高速化されます。Iceberg テーブルは PREWHERE 最適化と非同期メタデータプリフェッチをサポートします。
分散実行と並列実行
-
並列分散 INSERT SELECT がデフォルトで有効になり、各シャードで独立して実行されます。分散 IN サブクエリは、シャード間の一時データ転送を削減するために DISTINCT を自動的に追加します。
-
分散インデックス分析は SharedMergeTree と共有ストレージのシナリオをサポートします。並列レプリカはレイジーマテリアライゼーションをサポートし、負荷分散を改善してテールレイテンシを低減します。
関数とインデックス
-
LIKE と正規表現は、より効率的な実装に自動的に書き換えられ、デフォルトで有効になりました。StringZilla は大文字と小文字を区別する文字列検索を高速化し、SIMD 動的ディスパッチは論理関数とブール列変換を高速化します。
メモリ、可観測性、ネットワーク
-
Mark、非圧縮、ページキャッシュは独立した jemalloc arena を使用し、フラグメンテーションを低減します。jemalloc のダーティページは独立スレッドでクリーンアップされます。システムログテーブルに minmax と bloom_filter インデックスが追加され、トラブルシューティングを高速化します。
-
分散クエリにおけるブロックのシリアライゼーションと圧縮をパイプラインスレッドにオフロードできるようになり、大容量データ転送の効率が向上します。
パフォーマンスベンチマーク:ClickBench の比較
公式 ClickBench バージョンベンチマーク (コールドクエリの観点から) に基づき、26.3 LTS は以前の LTS バージョン 25.3 と比べてパフォーマンスが継続的に向上しています:
|
指標 |
25.3 LTS と比較した 26.3 LTS の改善 |
|
コールドクエリの総レイテンシ |
総時間を 8%~15% 削減 |
|
データレイクとストレージスキャン |
I/O 集約型クエリと OSS 外部テーブルスキャンを 2 倍~5 倍高速化 |
|
ワイドテーブルの TTL コンパクション |
ピークメモリ使用量が 40% を超えて低減 |
|
テキストおよびログ検索 |
転置インデックスにより、複雑な検索のレイテンシが 193 秒から 0.42 秒に短縮 |
|
高次元 Map のポイントルックアップ |
シャーディングされた Map により、単一キーのルックアップが 2 倍~49 倍向上 |
ユーティリティ機能
26.3 LTS には、開発と運用保守のエクスペリエンスを向上させる機能も含まれています:
-
自然順ソート (naturalSortKey):数値を含む文字列を、人間にとって直感的な順序で並べ替えます。たとえば、
file2.txtはfile10.txtより前に正しくソートされます。 -
ツリー形式の EXPLAIN 出力:
EXPLAIN pretty=1, compact=1を実行すると、構造化された視覚的な実行計画ツリーを取得できます。 -
利用不可シャードのフォールトトレランス:
max_skip_unavailable_shards_numとmax_skip_unavailable_shards_ratioパラメータにより、クラスタ内の大規模テーブルクエリ実行時にスキップできる障害ノードの割合を上限付きで制御できます。
アップグレードの推奨事項
アップグレード前の準備
-
クローンまたはテスト環境での検証:まずはクローン環境またはテスト環境に新バージョンをデプロイし、バージョン変更が既存の設定やクエリに与える影響を評価してください。
-
依存関係の互換性確認:クライアントドライバとサードパーティツールが新バージョンと互換性があることを確認してください。
重要な注意事項
-
実験的機能の検証:このバージョンでは、マテリアライズド CTE と Polyglot 方言は Experimental と位置づけられています。本番環境で使用する前に、テストクラスタでこれらの機能を検証することを推奨します。
-
パフォーマンスリグレッションテスト:アップグレード後は、主要クエリの実行時間を比較し、Parquet キャッシュ、転置インデックス、JOIN の並べ替えなどの最適化が有効になっていることを確認してください。
-
モニタリングとアラートの調整:新しいメトリクスや変更点に基づき、モニタリングのしきい値を調整してください。
まとめ
ClickHouse 26.3 LTS は、幅と深さを兼ね備えたリリースです:
-
データレイクとオープンエコシステムの観点では、Paimon のネイティブサポートと 31 の SQL 方言との互換性により、レイクハウス統合とエンジン間での再利用を橋渡しします。
-
クエリと分析の観点では、GA となった転置インデックス、マテリアライズド CTE、JOIN の並べ替え、シャーディングされた Map により、ログ検索、複雑な分析、高次元のポイントルックアップにおける ClickHouse の機能が大幅に拡張されます。
-
安定性とコストの観点では、TTL の垂直マージと ALP コーデックにより、データクリーンアップとストレージ圧縮における運用の複雑さが低減されます。
Alibaba Cloud ClickHouse チームは、コミュニティ 26.3 LTS リリースに対するクラウド環境への対応と完全な互換性検証を完了しました。Alibaba Cloud ClickHouse コンソールで 26.3 LTS インスタンスを迅速に作成するか、既存インスタンスを最新バージョンにアップグレードして、より効率的で安定したリアルタイム分析を体験してください。