How large are your ClickHouse tables?

Learn how to query for ClickHouse table sizes!

Featured image

How do you find out how large your ClickHouse tables are?

The system.parts table in ClickHouse contains all information regarding table sizes and more.

To find out the size of your tables, you can query for that information in the following manner:

SELECT table,
    formatReadableSize(sum(bytes)) as size,
    min(min_date) as min_date,
    max(max_date) as max_date
    FROM system.parts
    WHERE active
    GROUP BY table;

Sample output:

┌─table───────────────────┬─size───────┬───min_date─┬───max_date─┐
 metric_log               558.95 KiB  2023-10-05  2023-10-05 
 trace_log                22.57 KiB   2023-10-05  2023-10-05 
 query_log                16.36 KiB   2023-10-05  2023-10-05 
 asynchronous_metric_log  315.40 KiB  2023-10-05  2023-10-05 
└─────────────────────────┴────────────┴────────────┴────────────┘

For more details about each table including information regarding bytes allocated for primary keys in memory (vs on disk), total bytes on disk, compressed bytes, etc. you can do the following:

SELECT 
    table,
    formatReadableSize(min(primary_key_bytes_in_memory_allocated)) AS min,
    formatReadableSize(median(primary_key_bytes_in_memory_allocated)) AS median,
    formatReadableSize(max(primary_key_bytes_in_memory_allocated)) AS max,
    formatReadableSize(sum(primary_key_bytes_in_memory)) AS in_memory,
    formatReadableSize(sum(primary_key_bytes_in_memory_allocated)) AS allocated,
    formatReadableSize(sum(bytes_on_disk)) AS total_size_on_disk,
    formatReadableSize(sum(data_compressed_bytes)) AS data_size_on_disk,
    count()
FROM system.parts 
GROUP BY table;

Sample output:

┌─table───────────────────┬─min───────┬─median────┬─max───────┬─in_memory─┬─allocated──┬─total_size_on_disk─┬─data_size_on_disk─┬─count()─┐
 metric_log               8.00 KiB   8.00 KiB   8.00 KiB   966.00 B   632.00 KiB  8.62 MiB            3.65 MiB                79 
 trace_log                8.00 KiB   8.00 KiB   8.00 KiB   396.00 B   264.00 KiB  162.10 KiB          131.60 KiB              33 
 query_log                8.00 KiB   8.00 KiB   8.00 KiB   120.00 B   80.00 KiB   82.25 KiB           46.10 KiB               10 
 asynchronous_metric_log  14.52 KiB  14.52 KiB  17.06 KiB  9.81 KiB   1.24 MiB    5.07 MiB            5.01 MiB                85 
└─────────────────────────┴───────────┴───────────┴───────────┴───────────┴────────────┴────────────────────┴───────────────────┴─────────┘

This system table is quite powerful and contains many important statistics. For more information, check out the ClickHouse documentation for the system.parts table.