ユーザースペースページキャッシュ
概要
ユーザースペースページキャッシュは、OSページキャッシュに依存せずに、プロセス内メモリでデータをキャッシュする新しいキャッシュメカニズムです。
ClickHouseはすでに、Amazon S3、Google Cloud Storage (GCS)またはAzure Blob Storageなどのリモートオブジェクトストレージの上にキャッシュを構築する方法として、ファイルシステムキャッシュを提供しています。ユーザースペースページキャッシュは、通常のOSキャッシングでは十分なパフォーマンスが得られない場合にリモートデータへのアクセスを高速化するように設計されています。
ファイルシステムキャッシュとは以下の点で異なります:
ファイルシステムキャッシュ | ユーザースペースページキャッシュ |
---|---|
ローカルファイルシステムにデータを書き込む | メモリ内にのみ存在 |
ディスクスペースを占有(tmpfsでの設定も可能) | ファイルシステムに依存しない |
サーバーの再起動後も生き残る | サーバーの再起動後は生き残らない |
サーバーのメモリ使用量に表示されない | サーバーのメモリ使用量に表示される |
ディスク上およびメモリ内(OSページキャッシュ)の両方に適している | ディスクレスサーバーに最適 |
設定と使用法
使用法
ユーザースペースページキャッシュを有効にするには、まずサーバーで設定を行います:
注記
ユーザースペースページキャッシュは指定された量のメモリを使用しますが、このメモリ量は予約されません。他のサーバーのニーズのために必要に応じてメモリは追放されます。
次に、クエリレベルでの使用を有効にします:
設定
設定 | 説明 | デフォルト |
---|---|---|
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 | ユーザースペースページキャッシュに保存するファイルチャンクのサイズ(バイト単位)。キャッシュを通過するすべての読み取りは、このサイズの整数倍に切り上げられます。 | 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 |