En cas de problèmes de mémoire ou de fuite mémoire, il est utile de savoir quelles requêtes et quelles ressources consomment beaucoup de mémoire. Vous trouverez ci-dessous des requêtes qui peuvent vous aider à diagnostiquer ces problèmes en identifiant les requêtes, bases de données et tables qui peuvent être optimisées :
Lister les processus en cours d’exécution par utilisation maximale de la mémoire
SELECT
initial_query_id,
query,
elapsed,
formatReadableSize(memory_usage),
formatReadableSize(peak_memory_usage),
FROM system.processes
ORDER BY peak_memory_usage DESC
LIMIT 100;Lister les métriques d’utilisation de la mémoire
SELECT
metric, description, formatReadableSize(value) size
FROM
system.asynchronous_metrics
WHERE
metric LIKE '%Cach%'
OR metric LIKE '%Mem%'
ORDER BY
value DESC;Lister les tables par utilisation de la mémoire actuelle
SELECT
database,
name,
formatReadableSize(total_bytes)
FROM system.tables
WHERE engine IN ('Memory','Set','Join');Afficher la mémoire totale utilisée par les fusions en cours
SELECT formatReadableSize(sum(memory_usage)) FROM system.merges;Afficher la mémoire totale utilisée par les processus en cours
SELECT formatReadableSize(sum(memory_usage)) FROM system.processes;Afficher la mémoire totale utilisée par les Dictionaries
SELECT formatReadableSize(sum(bytes_allocated)) FROM system.dictionaries;Afficher la mémoire totale utilisée par les clés primaires et la granularité d’index
SELECT
sumIf(data_uncompressed_bytes, part_type = 'InMemory') AS memory_parts,
formatReadableSize(sum(primary_key_bytes_in_memory)) AS primary_key_bytes_in_memory,
formatReadableSize(sum(primary_key_bytes_in_memory_allocated)) AS primary_key_bytes_in_memory_allocated,
formatReadableSize(sum(index_granularity_bytes_in_memory)) AS index_granularity_bytes_in_memory,
formatReadableSize(sum(index_granularity_bytes_in_memory_allocated)) AS index_granularity_bytes_in_memory_allocated
FROM system.parts;