Skip to content
cccskills
FreePublished on GitHub

clickhouse-pro

ClickHouse columnar analytics — schema design, MergeTree tuning, and fast queries — use for OLAP and high-volume event data.

The English summary is being prepared. Showing the original description.

See how to install

Files included (1)

  • SKILL.md4.4 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

Overview

ClickHouse is a columnar OLAP database built for sub-second analytics over billions of rows. Its speed comes from a storage layout (MergeTree family) and query engine designed for scans and aggregations — which means schema and query patterns differ sharply from row-oriented databases. This skill covers designing for ClickHouse's strengths.

When to use

  • Designing tables (MergeTree, ReplacingMergeTree, AggregatingMergeTree)
  • Choosing ORDER BY / partition keys for time-series or event data
  • Writing aggregation queries (GROUP BY, uniq, quantiles, window functions)
  • Tuning inserts (batches vs trickle), mutations, and background merges
  • Operating clusters: replication, sharding, backups

Core concepts

ORDER BY is the primary index. The ORDER BY key (sorting key) determines data layout on disk and which queries skip granules. Put the most-filtered columns first — typically (tenant_id, event_time, ...) — because ClickHouse prunes using this key. Choose wrong and every query scans everything.

Columnar means wide tables are cheap. Unlike row stores, selecting 5 columns from a 200-column table reads only those 5. Denormalize aggressively — joins are supported but the engine rewards flat, pre-joined event tables.

Inserts: batch, don't trickle. Each insert creates a part; thousands of tiny inserts create thousands of parts and merge storms. Batch to ~1k–100k rows per insert (or use async inserts / a buffer table). Aim for parts in the hundreds, not millions.

Engines encode update semantics. ReplacingMergeTree keeps the latest row per key (deduplication at merge time — queries should still use FINAL or argMax for exactness). AggregatingMergeTree stores partial aggregate states for incremental rollups. SummingMergeTree/CollapsingMergeTree handle specific accounting patterns. Pick the engine that matches how data changes.

Approximation is a feature. uniq(), quantiles(), and sampling (TABLESAMPLE, SAMPLE BY) trade tiny accuracy losses for 10–100x speedups — perfect for dashboards over billions of rows.

Practical workflow

  1. Start from the queries: list the filters and group-bys your dashboards need; these dictate the ORDER BY key and partitioning (usually by month on the timestamp).
  2. Define the table with the right engine, PARTITION BY toYYYYMM(ts), ORDER BY (tenant_id, ts), and low-cardinality types (LowCardinality(String), DateTime, appropriate integer widths) to cut storage.
  3. Load with batches: buffer upstream, insert in chunks, monitor system.parts count per table — sustained growth signals an insert problem.
  4. Write queries that prune: filter on the sorting key prefix, avoid SELECT *, use PREWHERE for highly selective filters on non-key columns, and prefer approximate functions for exploratory work.
  5. Handle mutations carefully: ALTER UPDATE/DELETE are heavyweight background operations — fine occasionally, not a workload pattern. Design around append-mostly data.
  6. Operate: replicate with ReplicatedMergeTree + ZooKeeper/ClickHouse Keeper, shard by a hash key for scale-out, back up with filesystem snapshots or BACKUP TABLE, and monitor merge/mutation queues.

Common pitfalls

  • Row-by-row inserts — the #1 ClickHouse anti-pattern; causes part explosion, merge backlog, and degraded queries. Batch always.
  • High-cardinality first in ORDER BY (e.g. a UUID) — destroys compression and pruning; order by commonly filtered low/medium-cardinality columns first.
  • Using FINAL on huge tables routinely — forces full merges at query time; use it sparingly or design deduplication into the pipeline.
  • Treating it like Postgres — frequent small updates, heavy joins, and transactional expectations fight the architecture. ClickHouse is append-mostly analytics.
  • Ignoring data types: String for everything wastes 5–10x storage vs LowCardinality(String) and right-sized numerics; storage is query speed in a columnar engine.
  • No TTL / retention policy on ever-growing event tables — disk fills, merges slow, queries degrade. Set TTL or drop old partitions on a schedule.

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Master 1Password: vaults, Watchtower, passkeys, SSH agent, CLI, and family/team administration. Use when getting full value from 1Password personally or administering it for others.

The English summary is being prepared. Showing the original description.

aicodedecode/awesome-muse-skills28Updated Oct 10, 2026

Create 3D visuals with modeling, texturing, lighting, rendering, and optimization for web and product.

The English summary is being prepared. Showing the original description.

aicodedecode/awesome-muse-skills28Updated Oct 10, 2026

Create 3D web experiences: scene setup, models, materials, lighting, animation, scroll-driven scenes, and performance budgets. Use when adding 3D to websites beyond basic demos.

The English summary is being prepared. Showing the original description.

aicodedecode/awesome-muse-skills28Updated Oct 10, 2026

Writing abstracts that get papers read — structured content, the 5-sentence core, and journal-specific constraints.

The English summary is being prepared. Showing the original description.

aicodedecode/awesome-muse-skills28Updated Oct 10, 2026

Learn effectively from courses and academies: choosing programs, studying actively, and converting courses into skills. Use when investing time/money in structured learning.

The English summary is being prepared. Showing the original description.

aicodedecode/awesome-muse-skills28Updated Oct 10, 2026

Audit designs for accessibility with WCAG checklists covering color, type, focus, motion, and content.

The English summary is being prepared. Showing the original description.

aicodedecode/awesome-muse-skills28Updated Oct 10, 2026

See all skills by aicodedecode

Report a problem with this skill