Clickhouse provides a system table for monitoring running queries. When working with a cluster, you need to use the clusterAllReplicas
function to get processes from all nodes.
SELECT query FROM clusterAllReplicas(default, system.processes);
For a single-node Clickhouse instance, you can simply query the system.processes table directly without the cluster function:
SELECT query FROM system.processes;
For more detailed information about the running processes, include additional fields:
SELECT
user,
query_id,
address,
elapsed,
formatReadableSize(memory_usage) AS memory,
substring(query, 1, 80) AS query_snippet
FROM clusterAllReplicas(default, system.processes)
ORDER BY elapsed DESC
Query id: 7d23f9a1-8c42-4e21-b9f3-52a749cc2f8d
┌─user────┬─query_id──────────────────┬─address────────┬─elapsed─┬─memory───┬─query_snippet────────────────────────────────────────────────────────────┐
│ default │ 98e7b642-2fe3-4a39-aa4... │ 192.168.1.105 │ 42.91 │ 2.35 GiB │ SELECT count() FROM events WHERE toDate(timestamp) >= today() - 7 │
│ admin │ 7d23f9a1-8c42-4e21-b9f... │ 192.168.1.101 │ 14.23 │ 4.12 MiB │ SELECT user, query_id, address, elapsed, formatReadableSize(memory_usa... │
└─────────┴───────────────────────────┴────────────────┴─────────┴──────────┴──────────────────────────────────────────────────────────────────────────┘
2 rows in set. Elapsed: 0.103 sec.
If you’re not sure which columns are available, you can always run:
DESCRIBE system.processes