跳至主要内容
跳至主要内容
编辑此页

用户空间页面缓存

概述

用户空间页面缓存是一种新的缓存机制,它允许在进程内内存中缓存数据,而不是依赖于操作系统页面缓存。

ClickHouse 已经提供了 文件系统缓存 作为在远程对象存储(如 Amazon S3、Google Cloud Storage (GCS) 或 Azure Blob Storage)之上进行缓存的一种方式。用户空间页面缓存旨在加速访问远程数据,当正常的操作系统缓存效果不佳时。

它与文件系统缓存的不同之处在于:

文件系统缓存用户空间页面缓存
将数据写入本地文件系统仅存在于内存中
占用磁盘空间(也可配置为 tmpfs)独立于文件系统
在服务器重启后仍然存在在服务器重启后不会存在
不会显示在服务器的内存使用情况中显示在服务器的内存使用情况中
适用于磁盘和内存(操作系统页面缓存)适合无盘服务器

配置设置和用法

用法

要启用用户空间页面缓存,首先在服务器上进行配置:

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_cache以被动模式使用用户空间页面缓存,类似于 read_from_filesystem_cache_if_exists_otherwise_bypass_cache0
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
    © . This site is unofficial and not affiliated with ClickHouse, Inc.