Passer au contenu principal

Vue d’ensemble

Le cache de pages en espace utilisateur est un nouveau mécanisme de mise en cache qui permet de stocker les données en cache dans la mémoire du processus, plutôt que de s’appuyer sur le cache de pages de l’OS.
ClickHouse propose déjà le cache du système de fichiers comme mécanisme de mise en cache au-dessus d’un stockage d’objets distant tel qu’Amazon S3, Google Cloud Storage (GCS) ou Azure Blob Storage. Le cache de pages en espace utilisateur est conçu pour accélérer l’accès aux données distantes lorsque le cache de l’OS n’est pas suffisamment efficace. Il diffère du cache du système de fichiers de la manière suivante :
Cache du système de fichiersCache de pages en espace utilisateur
Écrit les données sur le système de fichiers localPrésent uniquement en mémoire
Occupe de l’espace disque (également configurable sur tmpfs)Indépendant du système de fichiers
Persiste après le redémarrage du serveurNe persiste pas après le redémarrage du serveur
N’apparaît pas dans l’utilisation mémoire du serveurApparaît dans l’utilisation mémoire du serveur
Convient aussi bien au stockage sur disque qu’en mémoire (cache de pages de l’OS)Bien adapté aux serveurs sans disque

Paramètres de configuration et utilisation

Utilisation

Pour activer le cache de pages en espace utilisateur, commencez par le configurer sur le serveur :
cat config.d/page_cache.yaml
page_cache_max_size: 100G
Le cache de pages en espace utilisateur utilisera jusqu’à la quantité de mémoire spécifiée, mais cette quantité de mémoire n’est pas réservée. Cette mémoire sera libérée lorsqu’elle sera nécessaire pour d’autres besoins du serveur.
Ensuite, activez son utilisation au niveau de la requête :
SET use_page_cache_for_disks_without_file_cache=1;

Paramètres

ParamètreDescriptionValeur par défaut
use_page_cache_for_disks_without_file_cacheUtilise le cache de pages en espace utilisateur pour les disques distants pour lesquels le cache du système de fichiers n’est pas activé.0
use_page_cache_with_distributed_cacheUtilise le cache de pages en espace utilisateur lorsque Distributed Cache est utilisé.0
read_from_page_cache_if_exists_otherwise_bypass_cacheUtilise le cache de pages en espace utilisateur en mode passif, comme read_from_filesystem_cache_if_exists_otherwise_bypass_cache.0
page_cache_inject_evictionLe cache de pages en espace utilisateur invalide parfois certaines pages de manière aléatoire. Destiné aux tests.0
page_cache_block_sizeTaille des fragments de fichier à stocker dans le cache de pages en espace utilisateur, en octets. Toutes les lectures qui passent par le cache sont arrondies au multiple supérieur de cette taille.1048576
page_cache_history_window_msDélai avant que la mémoire libérée puisse être réutilisée par le cache de pages en espace utilisateur.1000
page_cache_policyNom de la stratégie du cache de pages en espace utilisateur.SLRU
page_cache_size_ratioTaille de la file protégée dans le cache de pages en espace utilisateur par rapport à la taille totale du cache.0.5
page_cache_min_sizeTaille minimale du cache de pages en espace utilisateur.104857600
page_cache_max_sizeTaille maximale du cache de pages en espace utilisateur. Définissez-la sur 0 pour désactiver le cache. Si elle est supérieure à page_cache_min_size, la taille du cache sera ajustée en continu dans cette plage afin d’utiliser la majeure partie de la mémoire disponible tout en maintenant l’utilisation totale de la mémoire sous la limite (max_server_memory_usage[_to_ram_ratio]).0
page_cache_free_memory_ratioFraction de la limite de mémoire à conserver libre du cache de pages en espace utilisateur. Analogue au paramètre Linux min_free_kbytes.0.15
page_cache_lookahead_blocksEn cas d’absence dans le cache de pages en espace utilisateur, lit en une seule fois jusqu’à ce nombre de blocs consécutifs depuis le stockage sous-jacent, s’ils ne sont pas non plus dans le cache. Chaque bloc a une taille de page_cache_block_size octets.16
page_cache_shardsRépartit le cache de pages en espace utilisateur sur ce nombre de segments afin de réduire la contention sur les mutex. Expérimental, peu susceptible d’améliorer les performances.4
Dernière modification le 29 juin 2026