Skip to main content
これらの設定は system.settings で確認でき、ソース から自動生成されます。

materialize_statistics_on_insert

有効な場合、INSERT 時に統計が構築され、挿入されます。無効な場合、統計はマージ中または明示的な MATERIALIZE STATISTICS によって構築・保存されます。現在のテーブルサイズと書き込まれるブロックのサイズの合計が materialize_statistics_on_insert_max_table_size を超えないテーブルのみが対象です。

materialize_statistics_on_insert_max_table_size

ディスク上のアクティブなパーツの現在の合計サイズ (圧縮後、バイト単位) に、書き込み中のブロックの非圧縮インメモリサイズを加えた値がこの値を超えないテーブルに対してのみ、INSERT 時にカラム統計を構築・保存します (materialize_statistics_on_insert を参照) 。この仕様は INSERT 単位ではなく、書き込みブロック単位で適用されます。1 回の INSERT はパーティションごとに 1 ブロックに分割され (ストリーミング挿入の場合は複数ブロックに分割され) 、進行中の INSERT によるパーツはまだアクティブではないため、各ブロックはすでにアクティブなパーツのサイズに対してチェックされます。したがって、空のテーブルへの 1 回の一括ロードでは、合計サイズがしきい値を超えていても、すべてのパーツについて統計を構築できます。上限が適用されるのは、その後の INSERT からです。パーツが書き込まれるまでは圧縮サイズが不明であるため、非圧縮ブロックサイズを使用することで、チェックは最大 1 ブロック分だけ意図的に保守的になります。これにより、コストベースの join 順序変更で重要な小規模ディメンションテーブルの統計を最新に保ちつつ、大規模ファクトテーブルでの INSERT ごとのオーバーヘッドを回避します (これらの統計は代わりにマージ中に構築されます) 。0 はサイズ上限なしを意味します。
最終更新日 2026年8月14日