Skip to content

Update ZigHouse#901

Merged
alexey-milovidov merged 9 commits into
ClickHouse:mainfrom
donge:zighouse-v0.2.0-clickbench-results
Jul 21, 2026
Merged

Update ZigHouse#901
alexey-milovidov merged 9 commits into
ClickHouse:mainfrom
donge:zighouse-v0.2.0-clickbench-results

Conversation

@donge

@donge donge commented May 14, 2026

Copy link
Copy Markdown
Contributor

Update ZigHouse

Update the zighouse entry per review feedback in #901. Switch to a generic v1.0.3 release binary with direct Parquet import.

Changes from review feedback

  • Generic binary — downloads v1.0.3 from donge/zighouse/releases instead of a ClickBench-specific binary
  • Parquet importimport-parquet --format=generic writes directly to a local column store, no HTTP server dependency
  • BENCH_RESTARTABLE=no — ZigHouse is an embedded CLI, so cold-cycle restarts are skipped (just drop_caches)
  • generic-smoke.sh — runs after the main benchmark (not inside ./load) to demonstrate generic SQL without inflating load_time
  • BENCH_CONCURRENT_DURATION=0 — single-process engine skips QPS test

Architecture

ZigHouse parses SQL with a native Zig recursive-descent parser, builds an IR plan, and executes via a pipeline-parallel executor. All 43 ClickBench queries run through the same generic SQL pipeline — there is no separate ClickBench-specific fast path.

Results on c6i.4xlarge (100M rows)

Metric Value
load_time 1366.64 s
data_size 75.78 GB
best-of-3 warm query sum (43 q) 46.82 s
null queries 1 (Q20 segfault)

The generic store format is deliberately simple (no compression, no marks, no primary index), resulting in larger storage but correct end-to-end import + query. Compression is on the roadmap.

Install

Binary: https://github.com/donge/zighouse/releases/tag/v1.0.3
SHA256: 4f63353bfc9b09a649fb54c77c447a113b4bf2b331957aa65d4b33648ef56d5b

@CLAassistant

CLAassistant commented May 14, 2026

Copy link
Copy Markdown

CLA assistant check
All committers have signed the CLA.

- Refresh c6i.4xlarge result with v0.2.0-clickbench binary
- Bump install to v0.2.0-clickbench (SHA256 5c30c8e3...)
- Add generic-smoke.sh demonstrating the generic SQL execution path
  (responds to feedback in ClickHouse#895 about hardcoded query handling)
@donge
donge force-pushed the zighouse-v0.2.0-clickbench-results branch from a420294 to 6552027 Compare May 14, 2026 11:34
@alexey-milovidov

Copy link
Copy Markdown
Member

Could you please sign a CLA?

@donge

donge commented May 14, 2026

Copy link
Copy Markdown
Contributor Author

Sure, done.

Comment thread zighouse/install Outdated
Comment thread zighouse/README.md Outdated
Comment thread zighouse/generic-smoke.sh
alexey-milovidov and others added 3 commits July 20, 2026 23:38
Address review feedback (ClickHouse#901): download a generic ZigHouse release
(`v1.0.2`) instead of the ClickBench-specific `v0.2.0-clickbench` binary.
The generic release has no ClickBench-tuned code paths — its CLI exposes
only `import`, `query`, `bench`, `serve`, `info`, `inspect`, `compact` —
so `install` now fetches `zighouse-linux-x86_64.gz`, decompresses it, and
verifies the SHA256 of the resulting executable.

`README.md` is rewritten to describe the generic single-execution-path
binary (the previous "two execution paths / hand-tuned fast paths" text
no longer applies), and `template.json` drops the `tuned` marker.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… server

The generic `v1.0.2` binary has no ClickBench-specific commands, and its
`import` subcommand cannot write a store separate from the source Parquet
file, so the previous embedded `import-clickbench-parquet-hot` /
`query-timed` harness no longer works. Rework the entry as a server:

- `start`/`stop`/`check` manage `zighouse serve` (native TCP on `--port`,
  HTTP on `--port`+1) and health-check via `/ping`.
- `create.sql` is the canonical ClickBench `hits` schema in
  ClickHouse-native types the DDL parser understands.
- `load` streams `hits.json` in <=256 MiB, line-aligned chunks, one
  `INSERT INTO hits FORMAT JSONEachRow` per chunk (the only bulk format
  the HTTP server ingests — it reads neither Parquet nor TSV), then runs
  `generic-smoke.sh`, which is now called from `load` per review feedback
  and rewritten to exercise the engine over HTTP.
- `query` posts one statement over HTTP and reports the wall-clock time;
  `data-size` measures the store directory.

The obsolete build-from-source `run.sh` is removed.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
These results were produced by the ClickBench-specific `v0.2.0-clickbench`
binary that this PR no longer uses. They do not reflect the generic
`v1.0.2` serve-mode entry and must be regenerated by a fresh benchmark run.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…bench-results

# Conflicts:
#	zighouse/benchmark.sh
@github-actions

Copy link
Copy Markdown
Contributor

The run of zighouse on c6a.4xlarge did not produce results.

Logs:

donge added a commit to donge/zighouse that referenced this pull request Jul 21, 2026
- install: use v1.0.0 generic release (not ClickBench-specific)
- query: measure timing via date + awk on stderr
- benchmark.sh: set BENCH_RESTARTABLE=no, BENCH_CONCURRENT_DURATION=0,
  call generic-smoke.sh after main benchmark
- generic-smoke.sh: new script demonstrating generic SQL capability
- Move smoke test out of load to avoid inflating load_time metric
- results: c6i.4xlarge v1.0.0 generic engine (2026-07-20)

Responds to review feedback in ClickHouse/ClickBench#901:
- Use generic binary instead of ClickBench-specific one
- Demonstrate generic SQL path via generic-smoke.sh
donge added a commit to donge/ClickBench that referenced this pull request Jul 21, 2026
Switch from HTTP JSONEachRow ingest to direct Parquet import using the
generic store. Update all scripts for v1.0.3 release binary.

- install: v1.0.3 binary with correct SHA256
- load: direct parquet import, no server dependency
- query: CLI-based timing via date/awk
- benchmark.sh: use BENCH_DOWNLOAD_SCRIPT for parquet,
  set BENCH_RESTARTABLE=no (embedded CLI), skip QPS test,
  run generic-smoke.sh after main benchmark
- generic-smoke.sh: remove expensive roadmap query,
  fix SCRIPT_DIR initialization
- results: add c6i.4xlarge v1.0.0 generic engine (2026-07-20)

Addresses review feedback in ClickHouse#901:
- Generic binary instead of ClickBench-specific
- Parquet import path (simpler, no server dependency)
- generic-smoke.sh demonstrates SQL capability
@donge
donge had a problem deploying to benchmark-approval July 21, 2026 14:49 — with GitHub Actions Error
@donge
donge had a problem deploying to benchmark-approval July 21, 2026 15:01 — with GitHub Actions Error
Switch from HTTP JSONEachRow ingest (by @alexey-milovidov) to direct
Parquet import using the generic store for simpler, server-free setup.

- install: use v1.0.3 generic release binary with verified SHA256
- load: direct parquet import via import-parquet, no server dependency
- query: CLI-based wall-clock timing via date/awk on stderr
- benchmark.sh: BENCH_RESTARTABLE=no (embedded CLI), skip QPS test,
  use standard download-hits-parquet-single, run smoke after benchmark
- generic-smoke.sh: demonstrate generic SQL capability,
  remove expensive roadmap GROUP BY URL query
- README.md: document generic binary and parquet import path
- results: c6i.4xlarge v1.0.0 generic engine (2026-07-20)
@donge
donge force-pushed the zighouse-v0.2.0-clickbench-results branch from b373b1e to a26e9ae Compare July 21, 2026 15:04
@donge
donge temporarily deployed to benchmark-approval July 21, 2026 15:04 — with GitHub Actions Inactive
@alexey-milovidov alexey-milovidov self-assigned this Jul 21, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Results for zighouse are ready for: c6a.4xlarge.
The result files are committed as 8641243.
Removed manually added result files: zighouse/results/20260720/c6i.4xlarge.json.

Logs:

@alexey-milovidov alexey-milovidov added the machine:all PR benchmark on every machine type label Jul 21, 2026
@github-actions

Copy link
Copy Markdown
Contributor

The run of zighouse on c8g.4xlarge did not produce results.

Logs:

@github-actions

Copy link
Copy Markdown
Contributor

Results for zighouse are ready for: c6a.4xlarge, c6a.metal, c7a.metal-48xl.
The result files are committed as b4b8d5a.
The run of zighouse on c6a.large did not produce results.
The run of zighouse on c6a.xlarge did not produce results.
The run of zighouse on t3a.small did not produce results.

Logs:

@github-actions

Copy link
Copy Markdown
Contributor

Results for zighouse are ready for: c6a.2xlarge.
The result files are committed as bcec567.

Logs:

@alexey-milovidov
alexey-milovidov merged commit f511335 into ClickHouse:main Jul 21, 2026
1 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

machine:all PR benchmark on every machine type

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants