型の最適化
project と subproject のカラムを見てみましょう。これらのカラムは String 型ですが、一意の値の数は比較的少数です。
LowCardinality() データ型を使えるということです。これにより、ClickHouse は元の文字列値ではなく内部の値 ID を保存するため、容量を大幅に節約できます。
hits カラムには UInt64 型も使用しています。これは 8 バイトを使用しますが、最大値は比較的小さめです。
UInt32 を使用できます。必要な容量は 4 バイトだけで、最大で約40億まで格納できます。
特殊なコーデック
time カラムには Delta コーデック を使用しています。これは時系列データに適しています。
適切な ordering key を選ぶことでも、ディスク容量を節約できます。
通常は path で絞り込みを行いたいため、sorting key に path を追加します。
そのため、テーブル を再作成する必要があります。
以下に、初期の テーブル と最適化後の テーブル の CREATE コマンドを示します。