columns_cache_free_memory_ratio
サーバーのメモリ制限 (max_server_memory_usage) のうち、カラムキャッシュがクエリ用に空けておく割合です。
キャッシュが使用するメモリは、クエリと同じ制限に対してカウントされます。そのため、サーバーのその他の部分が max_server_memory_usage * (1 - columns_cache_free_memory_ratio) - columns_cache_size を超えるメモリを使用している間は実効的なキャッシュサイズが引き下げられ、
使用量が落ち着くと columns_cache_size に向けて再び引き上げられます。また、制限を超えるメモリ割り当てが発生した場合は、そのためにクエリが停止される前に、まずキャッシュからエントリが追い出されます。
page_cache_free_memory_ratio と同様の設定です。
実効的な制限値は CurrentMetrics.ColumnsCacheSizeLimit で確認できます。一方、system.server_settings では引き続き
設定済みの columns_cache_size が表示されます。
columns_cache_history_window_ms
カラムキャッシュは、自身が使用できるメモリ量を決定する際に、この設定で指定したミリ秒数の期間 (およびその直前の同じ長さのウィンドウ) における、サーバーのその他の部分によるピークメモリ使用量を考慮します。これにより、メモリ使用量が一時的に低下した隙にキャッシュが拡大し、その直後に再び追い出されるといった事態を防ぎます。page_cache_history_window_ms と同様の設定です。
columns_cache_policy
カラムキャッシュのポリシー名。columns_cache_size
カラムキャッシュの最大サイズ (バイト単位) です。カラムキャッシュは、MergeTree テーブルからデシリアライズされたカラムを保持します。 カラムキャッシュを使用すると、頻繁にアクセスされるカラムを毎回伸長・デシリアライズする必要がなくなります。 このキャッシュは、クエリレベルのオプションuse_columns_cache が有効な場合に使用されます。
この設定がサーバー設定に存在しない場合、キャッシュサイズはサーバーが利用可能なメモリに columns_cache_size_to_ram_ratio
(デフォルトは 10%) を掛けた値になります。これにより、メモリの多いサーバーほど、重いクエリのワーキングセットを保持できる大きさのキャッシュを確保できます。
この設定の組み込み値は、メモリ量を特定できない場合にのみ使用されます。他のキャッシュと同様に、サイズの上限は cache_size_to_ram_max_ratio によって制限されます。
この上限は、キャッシュが保持するメモリに対して適用されます。各エントリには、そのカラムの割り当てサイズ (含まれる行の論理サイズを超える場合があります) に、エントリごとのわずかなオーバーヘッドを加えた量が計上されます。system.columns_cache
はこの量をエントリごとに報告し、CurrentMetrics.ColumnsCacheBytes はその合計を報告します。
system.server_settings には、この設定の設定値がそのまま表示されます。サーバーの他の部分でメモリが不足している間は、実際に適用される上限がこれより低くなる場合があります (columns_cache_free_memory_ratio を参照) 。この実効値は
CurrentMetrics.ColumnsCacheSizeLimit として別途パブリッシュされます。
値を
0 にすると無効になります。この設定は実行時に変更でき、変更は即座に反映されます。columns_cache_size_ratio
カラムキャッシュにおける保護キュー (SLRU ポリシーの場合) のサイズを、キャッシュ全体のサイズに対する比率で指定します。columns_cache_size_to_ram_ratio
カラムキャッシュのサイズを、サーバーが利用可能なメモリに対する割合で指定します。この設定は、サーバー設定にcolumns_cache_size
が指定されていない場合に使用されます。その場合、キャッシュのサイズは RAM に対するこの割合で決まります (ただし
cache_size_to_ram_max_ratio による上限が適用されます) 。これにより、大規模なサーバーでは重いクエリのワーキングセットを保持できるだけのキャッシュが確保され、
小規模なサーバーではメモリのごく一部しかキャッシュに割かれません。メモリは必要に応じてのみ確保され、
use_columns_cache を有効にしてクエリを実行した場合に限り割り当てられます。
値を 0 にすると、columns_cache_size を明示的に設定しない限り、キャッシュは無効になります。