跳到主要内容
跳到主要内容

用户空间页缓存

概述

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

ClickHouse 已经提供了 文件系统缓存 作为在 Amazon S3、Google Cloud Storage (GCS) 或 Azure Blob Storage 等远程对象存储之上的缓存方式。用户空间页缓存的设计旨在加速远程数据的访问,当正常的操作系统缓存无法满足需求时使用。

它与文件系统缓存有以下不同之处:

文件系统缓存用户空间页缓存
将数据写入本地文件系统仅存在于内存中
占用磁盘空间(也可以在 tmpfs 上配置)不依赖于文件系统
能够在服务器重启后存活在服务器重启后无法存活
不会显示在服务器的内存使用中会显示在服务器的内存使用中
适合本地磁盘和内存(操作系统页缓存)适合无磁盘服务器

配置设置和使用

使用

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

备注

用户空间页缓存将使用指定量的内存,但这部分内存并不是保留的。当服务器需要其他内存时,这部分内存会被逐出。

接下来,启用查询级别的使用:

设置

设置描述默认值
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