DBAtlas · Atlas d'exploitation des bases de données

Mesurer le taux de succès du cache

Oracle

SELECT metric_name, ROUND(value, 2) AS pct
FROM v$sysmetric
WHERE metric_name = 'Buffer Cache Hit Ratio'
  AND intsize_csec = (SELECT MAX(intsize_csec) FROM v$sysmetric);

Un taux faible n'est pas toujours mauvais ; interprétez-le dans le contexte de la charge de travail, pas isolément.

PostgreSQL

SELECT ROUND(sum(blks_hit) * 100.0 / NULLIF(sum(blks_hit) + sum(blks_read), 0), 2) AS cache_hit_pct
FROM pg_stat_database;

La cible est généralement 99 %+. S'il est faible, revoyez shared_buffers et le cache de l'OS.

MySQL

SELECT ROUND((1 - (
    (SELECT variable_value FROM performance_schema.global_status WHERE variable_name='Innodb_buffer_pool_reads') /
    (SELECT variable_value FROM performance_schema.global_status WHERE variable_name='Innodb_buffer_pool_read_requests')
  )) * 100, 2) AS buffer_pool_hit_pct;

reads correspond aux lectures disque, read_requests au total des lectures. S'il est faible, augmentez innodb_buffer_pool_size.

SQL Server

SELECT ROUND(
  100.0 * (SELECT cntr_value FROM sys.dm_os_performance_counters WHERE counter_name='Buffer cache hit ratio')
        / NULLIF((SELECT cntr_value FROM sys.dm_os_performance_counters WHERE counter_name='Buffer cache hit ratio base'), 0), 2) AS pct;

Sur un SQL Server moderne, Page Life Expectancy (PLE) est un indicateur plus pertinent de la pression mémoire.

MongoDB

var c = db.serverStatus().wiredTiger.cache;
({ configuredMB: +(c['maximum bytes configured']/1048576).toFixed(0),
   inCacheMB:    +(c['bytes currently in the cache']/1048576).toFixed(0),
   readIntoCache: c['pages read into cache'],
   evictedPages:  c['unmodified pages evicted'] })

Des valeurs élevées de « pages read into cache » et d'éviction indiquent que le cache WiredTiger est trop petit.

Redis

INFO stats
# keyspace_hits / (keyspace_hits + keyspace_misses) = hit ratio

Un taux de succès durablement faible indique qu'il faut revoir les réglages TTL/éviction ou le schéma d'accès.

Ouvrir dans DBAtlas →