メインコンテンツまでスキップ
メインコンテンツまでスキップ

ユーザースペースページキャッシュ

概要

ユーザースペースページキャッシュは、OSページキャッシュに依存せずに、プロセス内メモリでデータをキャッシュする新しいキャッシュメカニズムです。

ClickHouseはすでに、Amazon S3、Google Cloud Storage (GCS)またはAzure Blob Storageなどのリモートオブジェクトストレージの上にキャッシュを構築する方法として、ファイルシステムキャッシュを提供しています。ユーザースペースページキャッシュは、通常のOSキャッシングでは十分なパフォーマンスが得られない場合にリモートデータへのアクセスを高速化するように設計されています。

ファイルシステムキャッシュとは以下の点で異なります:

ファイルシステムキャッシュユーザースペースページキャッシュ
ローカルファイルシステムにデータを書き込むメモリ内にのみ存在
ディスクスペースを占有(tmpfsでの設定も可能)ファイルシステムに依存しない
サーバーの再起動後も生き残るサーバーの再起動後は生き残らない
サーバーのメモリ使用量に表示されないサーバーのメモリ使用量に表示される
ディスク上およびメモリ内(OSページキャッシュ)の両方に適しているディスクレスサーバーに最適

設定と使用法

使用法

ユーザースペースページキャッシュを有効にするには、まずサーバーで設定を行います:

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

ユーザースペースページキャッシュは指定された量のメモリを使用しますが、このメモリ量は予約されません。他のサーバーのニーズのために必要に応じてメモリは追放されます。

次に、クエリレベルでの使用を有効にします:

SET use_page_cache_for_disks_without_file_cache=1;

設定

設定説明デフォルト
use_page_cache_for_disks_without_file_cacheファイルシステムキャッシュが有効でないリモートディスクに対してユーザースペースページキャッシュを使用します。0
use_page_cache_with_distributed_cache分散キャッシュが使用されるときにユーザースペースページキャッシュを使用します。0
read_from_page_cache_if_exists_otherwise_bypass_cacheread_from_filesystem_cache_if_exists_otherwise_bypass_cacheと同様に、パッシブモードでユーザースペースページキャッシュを使用します。0
page_cache_inject_evictionユーザースペースページキャッシュは、時々ランダムにいくつかのページを無効化します。テスト用です。0
page_cache_block_sizeユーザースペースページキャッシュに保存するファイルチャンクのサイズ(バイト単位)。キャッシュを通過するすべての読み取りは、このサイズの整数倍に切り上げられます。1048576
page_cache_history_window_ms自由になったメモリがユーザースペースページキャッシュによって使用される前の遅延。1000
page_cache_policyユーザースペースページキャッシュのポリシー名。SLRU
page_cache_size_ratioユーザースペースページキャッシュの保護されたキューのサイズをキャッシュの総サイズに対して表したもの。0.5
page_cache_min_sizeユーザースペースページキャッシュの最小サイズ。104857600
page_cache_max_sizeユーザースペースページキャッシュの最大サイズ。キャッシュを無効にするには0に設定します。page_cache_min_sizeより大きい場合、キャッシュサイズはこの範囲内で継続的に調整され、合計メモリ使用量を制限(max_server_memory_usage[_to_ram_ratio])の下に保ちながら、利用可能なメモリの大半を使用します。0
page_cache_free_memory_ratioユーザースペースページキャッシュから自由に保っておくメモリ制限の割合。Linuxのmin_free_kbytes設定に類似しています。0.15
page_cache_lookahead_blocksユーザースペースページキャッシュがミスした場合、基盤のストレージから一度にこれだけの連続するブロックを読み込みます。ただし、それらもキャッシュに存在しない場合のみです。各ブロックはpage_cache_block_sizeバイトです。16
page_cache_shardsユーザースペースページキャッシュをこれだけのシャードに分割してミューテックスの競合を減少させます。実験的であり、パフォーマンスの向上はあまり期待できません。4