[Clickhouse] 디스크 사용량 추적

[원본 링크]

디스크 사용량을 모니터링하고 쫓아가는 방법을 정리해본다.




전체 디스크 사용량 확인

가장 간단하게 디스크 사용량을 확인하는 방법은 disk 테이블을 읽는 것이다.

SELECT
    name AS disk,
    path,
    type,
    formatReadableSize(total_space) AS total,
    formatReadableSize(total_space - free_space) AS used
FROM system.disks

이러면 호스트 전체 디스크의 크기는 900GB고, 사용중인 용량이 115GB라는 말이 된다.

근데 여기에는 허수가 좀 크게 들어있다.
이 disk 정보는 clickhouse가 쓰는 영역만 계산하는게 아니라, 해당 파일시스템의 총 사용량을 계산하는 것이기 때문이다. 그래서 루트 파일시스템(/)을 쓴다면, 그 사용량이 그대로 전이된다.

가장 정확한 사용량을 재는 방법은 parts를 읽는 것이다.

SELECT
    formatReadableSize(sum(bytes_on_disk)) AS size
FROM system.parts

이게 진짜 clickhouse의 사용량이다.




inactive parts

다른 DB들이 그렇듯이, clickhouse도 미사용영역에 대한 dead parts가 항상 남아있다.
이건 merge되고 남은 옛 잔여물일 수도 있고 삭제된 옛 데이터일 수도 있다.

시간이 지나면 정리되긴 하지만, 경우에 따라서는 크게 튈 수 있어서 세부 조정이 필요할 수 있다.

SELECT
    active,
    formatReadableSize(sum(bytes_on_disk)) AS size,
    count() AS parts
FROM system.parts
GROUP BY active;




DB별 크기 조회

DB별 크기 조회 쿼리다.

SELECT
    database,
    sum(bytes_on_disk) AS bytes,
    formatReadableSize(bytes) AS size,
    sum(rows) AS rows,
    uniqExact(table) AS table_count,
    count() AS active_part_count
FROM system.parts
WHERE active = 1
GROUP BY database
ORDER BY bytes DESC;




테이블별 크기 조회

테이블별로 크기를 조회하는 쿼리다.

SELECT
    database,
    table,
    disk_name,
    sum(bytes_on_disk) AS bytes_on_disk,
    formatReadableSize(bytes_on_disk) AS size_on_disk,
    formatReadableSize(sum(data_compressed_bytes))
        AS compressed_data,
    formatReadableSize(sum(data_uncompressed_bytes))
        AS uncompressed_data,
    round(
        sum(data_uncompressed_bytes)
        / nullIf(sum(data_compressed_bytes), 0),
        2
    ) AS compression_ratio,
    sum(rows) AS rows,
    count() AS active_parts
FROM system.parts
WHERE active = 1
GROUP BY
    database,
    table,
    disk_name
ORDER BY bytes_on_disk DESC;

테이블과 실제 디스크 사용량, 미압축시의 원본 데이터도 볼 수 있다.
압축이 상당히 잘되더라.




시스템 로그

DB를 장기간 운영하다보면 system 테이블이 수상할 정도로 부풀 수 있다.
clickhouse은 로그를 굉장히 열심히 쌓는 편인데, 그걸 알아서 치우질 않기 때문이다.
이건 알아서 잘 정리해줘야 한다.

정리 방법은 별도 포스트를 참조한다.
https://blog.naver.com/sssang97/224173373332



참조
https://clickhouse.com/docs/operations/system-tables/disks

Search