Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

ユーザー空間ページキャッシュ

概要

ユーザー空間ページキャッシュは、OS のページキャッシュに依存せず、プロセス内メモリにデータをキャッシュできる新しいキャッシュ機構です。

ClickHouse ではすでに、Amazon S3、Google Cloud ストレージ (GCS) 、Azure Blob Storage などのリモートオブジェクトストレージに対するキャッシュ手段として、ファイルシステムキャッシュ を提供しています。 ユーザー空間ページキャッシュは、通常の OS キャッシュでは十分な効果が得られない場合に、リモートデータへのアクセスを高速化することを目的として設計されています。

ファイルシステムキャッシュとの違いは次のとおりです。

Filesystem Cache Userspace page cache
データをローカルのファイルシステムに書き込む メモリ内にのみ存在する
ディスク容量を消費する (tmpfs に設定することも可能) ファイルシステムに依存しない
server の再起動後も保持される server の再起動後は保持されない
server の memory usage には現れない server の memory usage に現れる
ディスク上とメモリ内 (OS ページキャッシュ) の両方に適する ディスクレス server に適している

設定項目と使用方法

使用方法

ユーザー空間ページキャッシュを有効にするには、まずサーバー側で設定します。

cat config.d/page_cache.yaml
page_cache_max_size: 100G

次に、クエリレベルでこれを有効にします。

SET use_page_cache_for_disks_without_file_cache=1;

設定

Setting Description Default
use_page_cache_for_disks_without_file_cache ファイルシステムキャッシュが有効になっていないリモートディスクに対して、ユーザー空間ページキャッシュを使用します。 0
use_page_cache_with_distributed_cache 分散キャッシュの使用時に、ユーザー空間ページキャッシュを使用します。 0
read_from_page_cache_if_exists_otherwise_bypass_cache read_from_filesystem_cache_if_exists_otherwise_bypass_cache と同様に、パッシブモードでユーザー空間ページキャッシュを使用します。 0
page_cache_inject_eviction ユーザー空間ページキャッシュが、ときどき一部のページをランダムに無効化します。テスト用です。 0
page_cache_block_size ユーザー空間ページキャッシュに格納するファイル chunk のサイズ (バイト単位) です。キャッシュを経由するすべての読み取りは、このサイズの倍数に切り上げられます。 1048576
page_cache_history_window_ms 解放されたメモリをユーザー空間ページキャッシュで再利用できるようになるまでの遅延です。 1000
page_cache_policy ユーザー空間ページキャッシュのポリシー名です。 SLRU
page_cache_size_ratio ユーザー空間ページキャッシュにおける protected queue のサイズを、cache 全体のサイズに対する比率で指定します。 0.5
page_cache_min_size ユーザー空間ページキャッシュの最小サイズです。 104857600
page_cache_max_size ユーザー空間ページキャッシュの最大サイズです。cache を無効にするには 0 を設定します。page_cache_min_size より大きい場合、総メモリ使用量が制限 (max_server_memory_usage[_to_ram_ratio]) を下回るようにしつつ、使用可能なメモリの大部分を使うため、この範囲内で cache サイズが継続的に調整されます。 0
page_cache_free_memory_ratio ユーザー空間ページキャッシュで使用せずに確保しておく、メモリ制限に対する割合です。Linux の min_free_kbytes 設定に相当します。 0.15
page_cache_lookahead_blocks ユーザー空間ページキャッシュでミスした場合、それらも cache に存在しなければ、基盤ストレージから連続する最大この数の block を一度に読み取ります。各 block は page_cache_block_size バイトです。 16
page_cache_shards mutex の競合を減らすために、ユーザー空間ページキャッシュをこの数の分片にストライプ化します。Experimental であり、パフォーマンス改善につながる可能性は高くありません。 4
Navigation