diff --git a/chdb-rc-no-final-default/README.md b/chdb-rc-no-final-default/README.md new file mode 100644 index 0000000000..aed11843e2 --- /dev/null +++ b/chdb-rc-no-final-default/README.md @@ -0,0 +1,7 @@ +Diagnostic copy of `chdb/` for a chdb-core release candidate. Not meant to be merged. + +- `install` pins chdb-core to the `CORE_TAG` release instead of the latest one. +- `create.sql` explicitly disables automatic statistics and otherwise uses the default codec. +- The measured load does not run `OPTIMIZE TABLE ... FINAL`. +- After the measured flow, `profile` repeats the load with part_log and query_log enabled and + prints a JSON report between `=== load_profile json ===` and `=== load_profile end ===`. diff --git a/chdb-rc-no-final-default/benchmark.sh b/chdb-rc-no-final-default/benchmark.sh new file mode 100755 index 0000000000..9fc3378847 --- /dev/null +++ b/chdb-rc-no-final-default/benchmark.sh @@ -0,0 +1,7 @@ +#!/bin/bash +export BENCH_DOWNLOAD_SCRIPT="download-hits-csv" +export BENCH_RESTARTABLE=no +# See chdb/benchmark.sh. +export BENCH_CONCURRENT_DURATION="${BENCH_CONCURRENT_DURATION:-0}" +../lib/benchmark-common.sh +./profile diff --git a/chdb-rc-no-final-default/check b/chdb-rc-no-final-default/check new file mode 100755 index 0000000000..cd67e7c07c --- /dev/null +++ b/chdb-rc-no-final-default/check @@ -0,0 +1,6 @@ +#!/bin/bash +set -e + +# shellcheck disable=SC1091 +source myenv/bin/activate +python3 -c "import chdb; chdb.query('SELECT 1')" >/dev/null diff --git a/chdb-rc-no-final-default/create.sql b/chdb-rc-no-final-default/create.sql new file mode 100644 index 0000000000..73fcb182b3 --- /dev/null +++ b/chdb-rc-no-final-default/create.sql @@ -0,0 +1,115 @@ +CREATE DATABASE IF NOT EXISTS clickbench ENGINE = Atomic; + +USE clickbench; + +CREATE TABLE IF NOT EXISTS hits +( + WatchID BIGINT NOT NULL, + JavaEnable SMALLINT NOT NULL, + Title TEXT NOT NULL, + GoodEvent SMALLINT NOT NULL, + EventTime TIMESTAMP NOT NULL, + EventDate Date NOT NULL, + CounterID INTEGER NOT NULL, + ClientIP INTEGER NOT NULL, + RegionID INTEGER NOT NULL, + UserID BIGINT NOT NULL, + CounterClass SMALLINT NOT NULL, + OS SMALLINT NOT NULL, + UserAgent SMALLINT NOT NULL, + URL TEXT NOT NULL, + Referer TEXT NOT NULL, + IsRefresh SMALLINT NOT NULL, + RefererCategoryID SMALLINT NOT NULL, + RefererRegionID INTEGER NOT NULL, + URLCategoryID SMALLINT NOT NULL, + URLRegionID INTEGER NOT NULL, + ResolutionWidth SMALLINT NOT NULL, + ResolutionHeight SMALLINT NOT NULL, + ResolutionDepth SMALLINT NOT NULL, + FlashMajor SMALLINT NOT NULL, + FlashMinor SMALLINT NOT NULL, + FlashMinor2 TEXT NOT NULL, + NetMajor SMALLINT NOT NULL, + NetMinor SMALLINT NOT NULL, + UserAgentMajor SMALLINT NOT NULL, + UserAgentMinor VARCHAR(255) NOT NULL, + CookieEnable SMALLINT NOT NULL, + JavascriptEnable SMALLINT NOT NULL, + IsMobile SMALLINT NOT NULL, + MobilePhone SMALLINT NOT NULL, + MobilePhoneModel TEXT NOT NULL, + Params TEXT NOT NULL, + IPNetworkID INTEGER NOT NULL, + TraficSourceID SMALLINT NOT NULL, + SearchEngineID SMALLINT NOT NULL, + SearchPhrase TEXT NOT NULL, + AdvEngineID SMALLINT NOT NULL, + IsArtifical SMALLINT NOT NULL, + WindowClientWidth SMALLINT NOT NULL, + WindowClientHeight SMALLINT NOT NULL, + ClientTimeZone SMALLINT NOT NULL, + ClientEventTime TIMESTAMP NOT NULL, + SilverlightVersion1 SMALLINT NOT NULL, + SilverlightVersion2 SMALLINT NOT NULL, + SilverlightVersion3 INTEGER NOT NULL, + SilverlightVersion4 SMALLINT NOT NULL, + PageCharset TEXT NOT NULL, + CodeVersion INTEGER NOT NULL, + IsLink SMALLINT NOT NULL, + IsDownload SMALLINT NOT NULL, + IsNotBounce SMALLINT NOT NULL, + FUniqID BIGINT NOT NULL, + OriginalURL TEXT NOT NULL, + HID INTEGER NOT NULL, + IsOldCounter SMALLINT NOT NULL, + IsEvent SMALLINT NOT NULL, + IsParameter SMALLINT NOT NULL, + DontCountHits SMALLINT NOT NULL, + WithHash SMALLINT NOT NULL, + HitColor CHAR NOT NULL, + LocalEventTime TIMESTAMP NOT NULL, + Age SMALLINT NOT NULL, + Sex SMALLINT NOT NULL, + Income SMALLINT NOT NULL, + Interests SMALLINT NOT NULL, + Robotness SMALLINT NOT NULL, + RemoteIP INTEGER NOT NULL, + WindowName INTEGER NOT NULL, + OpenerName INTEGER NOT NULL, + HistoryLength SMALLINT NOT NULL, + BrowserLanguage TEXT NOT NULL, + BrowserCountry TEXT NOT NULL, + SocialNetwork TEXT NOT NULL, + SocialAction TEXT NOT NULL, + HTTPError SMALLINT NOT NULL, + SendTiming INTEGER NOT NULL, + DNSTiming INTEGER NOT NULL, + ConnectTiming INTEGER NOT NULL, + ResponseStartTiming INTEGER NOT NULL, + ResponseEndTiming INTEGER NOT NULL, + FetchTiming INTEGER NOT NULL, + SocialSourceNetworkID SMALLINT NOT NULL, + SocialSourcePage TEXT NOT NULL, + ParamPrice BIGINT NOT NULL, + ParamOrderID TEXT NOT NULL, + ParamCurrency TEXT NOT NULL, + ParamCurrencyID SMALLINT NOT NULL, + OpenstatServiceName TEXT NOT NULL, + OpenstatCampaignID TEXT NOT NULL, + OpenstatAdID TEXT NOT NULL, + OpenstatSourceID TEXT NOT NULL, + UTMSource TEXT NOT NULL, + UTMMedium TEXT NOT NULL, + UTMCampaign TEXT NOT NULL, + UTMContent TEXT NOT NULL, + UTMTerm TEXT NOT NULL, + FromTag TEXT NOT NULL, + HasGCLID SMALLINT NOT NULL, + RefererHash BIGINT NOT NULL, + URLHash BIGINT NOT NULL, + CLID INTEGER NOT NULL, + PRIMARY KEY (CounterID, EventDate, UserID, EventTime, WatchID) +) +ENGINE = MergeTree +SETTINGS auto_statistics_types = ''; diff --git a/chdb-rc-no-final-default/data-size b/chdb-rc-no-final-default/data-size new file mode 100755 index 0000000000..226c121b8f --- /dev/null +++ b/chdb-rc-no-final-default/data-size @@ -0,0 +1,4 @@ +#!/bin/bash +set -e + +du -bcs .clickbench | awk '/total$/ { print $1 }' diff --git a/chdb-rc-no-final-default/insert.sql b/chdb-rc-no-final-default/insert.sql new file mode 100644 index 0000000000..c9cbb59a1f --- /dev/null +++ b/chdb-rc-no-final-default/insert.sql @@ -0,0 +1,3 @@ +INSERT INTO clickbench.hits +SELECT * +FROM file('hits.csv'); diff --git a/chdb-rc-no-final-default/install b/chdb-rc-no-final-default/install new file mode 100755 index 0000000000..a381dee031 --- /dev/null +++ b/chdb-rc-no-final-default/install @@ -0,0 +1,53 @@ +#!/bin/bash +set -euo pipefail + +# Candidate chdb-core build under test; the stock chdb entry installs the latest release. +CORE_TAG=v26.9.1-rc.1 + +sudo apt-get update -y +sudo apt-get install -y python3-pip python3-venv + +if [ ! -d myenv ]; then + python3 -m venv myenv +fi + +# shellcheck disable=SC1091 +source myenv/bin/activate + +pip install --upgrade pip +pip install psutil pyarrow "chdb==4.4.0" + +wheel_url=$(python3 - "$CORE_TAG" <<'PY' +import json +import platform +import sys +import urllib.request + +tag = sys.argv[1] +release = json.load(urllib.request.urlopen( + f"https://api.github.com/repos/chdb-io/chdb-core/releases/tags/{tag}", timeout=30)) +arch = platform.machine() +for asset in release["assets"]: + name = asset["name"] + if name.endswith(".whl") and "_lite" not in name and "linux" in name and arch in name: + print(asset["browser_download_url"]) + break +else: + raise SystemExit(f"no full Linux wheel for chdb-core {tag} on {arch}") +PY +) +wheel=$(basename "$wheel_url") +curl -fSL --retry 3 -o "$wheel" "$wheel_url" +pip uninstall --quiet -y chdb-core || true +pip install --quiet "./$wheel" + +# The profiling script ships in the same tag. +curl -fSL --retry 3 -o load_profile.py \ + "https://raw.githubusercontent.com/chdb-io/chdb-core/${CORE_TAG}/benchmark/load_profile.py" + +python3 - <<'PY' +from importlib.metadata import version + +print(f"Installed chdb: {version('chdb')}") +print(f"Installed chdb-core: {version('chdb-core')}") +PY diff --git a/chdb-rc-no-final-default/load b/chdb-rc-no-final-default/load new file mode 100755 index 0000000000..edbebac7e8 --- /dev/null +++ b/chdb-rc-no-final-default/load @@ -0,0 +1,24 @@ +#!/bin/bash +set -e + +# shellcheck disable=SC1091 +source myenv/bin/activate + +# Idempotent: blow away any prior data dir. +rm -rf .clickbench + +python3 - <<'PY' +from chdb import dbapi + +con = dbapi.connect(path=".clickbench") +cur = con.cursor() + +cur.execute(open("create.sql").read()) +cur.execute(open("insert.sql").read()) + +cur.close() +con.close() +PY + +# hits.csv stays for ./profile, which benchmark.sh runs after the measured flow. +sync diff --git a/chdb-rc-no-final-default/profile b/chdb-rc-no-final-default/profile new file mode 100755 index 0000000000..d25b7d8bf2 --- /dev/null +++ b/chdb-rc-no-final-default/profile @@ -0,0 +1,24 @@ +#!/bin/bash +# Repeat the load once more, outside every measured window, with part_log and +# query_log on, and print where the parts and the time went. +set -e + +# shellcheck disable=SC1091 +source myenv/bin/activate + +rm -rf .clickbench .profile +sync + +echo "=== load_profile begin ===" +python3 load_profile.py \ + --path .profile \ + --create create.sql \ + --load "$(tr '\n' ' ' < insert.sql | sed 's/;[[:space:]]*$//')" \ + --table hits \ + --out profile.json +echo "=== load_profile json ===" +python3 -c "import json; r = json.load(open('profile.json')); r['pipeline'].pop('explain_pipeline'); print(json.dumps(r))" +echo "=== load_profile end ===" + +rm -rf .profile hits.csv +sync diff --git a/chdb-rc-no-final-default/queries.sql b/chdb-rc-no-final-default/queries.sql new file mode 100644 index 0000000000..4b05870ab9 --- /dev/null +++ b/chdb-rc-no-final-default/queries.sql @@ -0,0 +1,43 @@ +SELECT COUNT(*) FROM clickbench.hits; +SELECT COUNT(*) FROM clickbench.hits WHERE AdvEngineID <> 0; +SELECT SUM(AdvEngineID), COUNT(*), AVG(ResolutionWidth) FROM clickbench.hits; +SELECT AVG(UserID) FROM clickbench.hits; +SELECT COUNT(DISTINCT UserID) FROM clickbench.hits; +SELECT COUNT(DISTINCT SearchPhrase) FROM clickbench.hits; +SELECT MIN(EventDate), MAX(EventDate) FROM clickbench.hits; +SELECT AdvEngineID, COUNT(*) FROM clickbench.hits WHERE AdvEngineID <> 0 GROUP BY AdvEngineID ORDER BY COUNT(*) DESC; +SELECT RegionID, COUNT(DISTINCT UserID) AS u FROM clickbench.hits GROUP BY RegionID ORDER BY u DESC LIMIT 10; +SELECT RegionID, SUM(AdvEngineID), COUNT(*) AS c, AVG(ResolutionWidth), COUNT(DISTINCT UserID) FROM clickbench.hits GROUP BY RegionID ORDER BY c DESC LIMIT 10; +SELECT MobilePhoneModel, COUNT(DISTINCT UserID) AS u FROM clickbench.hits WHERE MobilePhoneModel <> '' GROUP BY MobilePhoneModel ORDER BY u DESC LIMIT 10; +SELECT MobilePhone, MobilePhoneModel, COUNT(DISTINCT UserID) AS u FROM clickbench.hits WHERE MobilePhoneModel <> '' GROUP BY MobilePhone, MobilePhoneModel ORDER BY u DESC LIMIT 10; +SELECT SearchPhrase, COUNT(*) AS c FROM clickbench.hits WHERE SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY c DESC LIMIT 10; +SELECT SearchPhrase, COUNT(DISTINCT UserID) AS u FROM clickbench.hits WHERE SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY u DESC LIMIT 10; +SELECT SearchEngineID, SearchPhrase, COUNT(*) AS c FROM clickbench.hits WHERE SearchPhrase <> '' GROUP BY SearchEngineID, SearchPhrase ORDER BY c DESC LIMIT 10; +SELECT UserID, COUNT(*) FROM clickbench.hits GROUP BY UserID ORDER BY COUNT(*) DESC LIMIT 10; +SELECT UserID, SearchPhrase, COUNT(*) FROM clickbench.hits GROUP BY UserID, SearchPhrase ORDER BY COUNT(*) DESC LIMIT 10; +SELECT UserID, SearchPhrase, COUNT(*) FROM clickbench.hits GROUP BY UserID, SearchPhrase LIMIT 10; +SELECT UserID, extract(minute FROM EventTime) AS m, SearchPhrase, COUNT(*) FROM clickbench.hits GROUP BY UserID, m, SearchPhrase ORDER BY COUNT(*) DESC LIMIT 10; +SELECT UserID FROM clickbench.hits WHERE UserID = 435090932899640449; +SELECT COUNT(*) FROM clickbench.hits WHERE URL LIKE '%google%'; +SELECT SearchPhrase, MIN(URL), COUNT(*) AS c FROM clickbench.hits WHERE URL LIKE '%google%' AND SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY c DESC LIMIT 10; +SELECT SearchPhrase, MIN(URL), MIN(Title), COUNT(*) AS c, COUNT(DISTINCT UserID) FROM clickbench.hits WHERE Title LIKE '%Google%' AND URL NOT LIKE '%.google.%' AND SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY c DESC LIMIT 10; +SELECT * FROM clickbench.hits WHERE URL LIKE '%google%' ORDER BY EventTime LIMIT 10; +SELECT SearchPhrase FROM clickbench.hits WHERE SearchPhrase <> '' ORDER BY EventTime LIMIT 10; +SELECT SearchPhrase FROM clickbench.hits WHERE SearchPhrase <> '' ORDER BY SearchPhrase LIMIT 10; +SELECT SearchPhrase FROM clickbench.hits WHERE SearchPhrase <> '' ORDER BY EventTime, SearchPhrase LIMIT 10; +SELECT CounterID, AVG(length(URL)) AS l, COUNT(*) AS c FROM clickbench.hits WHERE URL <> '' GROUP BY CounterID HAVING COUNT(*) > 100000 ORDER BY l DESC LIMIT 25; +SELECT REGEXP_REPLACE(Referer, '^https?://(?:www\.)?([^/]+)/.*$', '\1') AS k, AVG(length(Referer)) AS l, COUNT(*) AS c, MIN(Referer) FROM clickbench.hits WHERE Referer <> '' GROUP BY k HAVING COUNT(*) > 100000 ORDER BY l DESC LIMIT 25; +SELECT SUM(ResolutionWidth), SUM(ResolutionWidth + 1), SUM(ResolutionWidth + 2), SUM(ResolutionWidth + 3), SUM(ResolutionWidth + 4), SUM(ResolutionWidth + 5), SUM(ResolutionWidth + 6), SUM(ResolutionWidth + 7), SUM(ResolutionWidth + 8), SUM(ResolutionWidth + 9), SUM(ResolutionWidth + 10), SUM(ResolutionWidth + 11), SUM(ResolutionWidth + 12), SUM(ResolutionWidth + 13), SUM(ResolutionWidth + 14), SUM(ResolutionWidth + 15), SUM(ResolutionWidth + 16), SUM(ResolutionWidth + 17), SUM(ResolutionWidth + 18), SUM(ResolutionWidth + 19), SUM(ResolutionWidth + 20), SUM(ResolutionWidth + 21), SUM(ResolutionWidth + 22), SUM(ResolutionWidth + 23), SUM(ResolutionWidth + 24), SUM(ResolutionWidth + 25), SUM(ResolutionWidth + 26), SUM(ResolutionWidth + 27), SUM(ResolutionWidth + 28), SUM(ResolutionWidth + 29), SUM(ResolutionWidth + 30), SUM(ResolutionWidth + 31), SUM(ResolutionWidth + 32), SUM(ResolutionWidth + 33), SUM(ResolutionWidth + 34), SUM(ResolutionWidth + 35), SUM(ResolutionWidth + 36), SUM(ResolutionWidth + 37), SUM(ResolutionWidth + 38), SUM(ResolutionWidth + 39), SUM(ResolutionWidth + 40), SUM(ResolutionWidth + 41), SUM(ResolutionWidth + 42), SUM(ResolutionWidth + 43), SUM(ResolutionWidth + 44), SUM(ResolutionWidth + 45), SUM(ResolutionWidth + 46), SUM(ResolutionWidth + 47), SUM(ResolutionWidth + 48), SUM(ResolutionWidth + 49), SUM(ResolutionWidth + 50), SUM(ResolutionWidth + 51), SUM(ResolutionWidth + 52), SUM(ResolutionWidth + 53), SUM(ResolutionWidth + 54), SUM(ResolutionWidth + 55), SUM(ResolutionWidth + 56), SUM(ResolutionWidth + 57), SUM(ResolutionWidth + 58), SUM(ResolutionWidth + 59), SUM(ResolutionWidth + 60), SUM(ResolutionWidth + 61), SUM(ResolutionWidth + 62), SUM(ResolutionWidth + 63), SUM(ResolutionWidth + 64), SUM(ResolutionWidth + 65), SUM(ResolutionWidth + 66), SUM(ResolutionWidth + 67), SUM(ResolutionWidth + 68), SUM(ResolutionWidth + 69), SUM(ResolutionWidth + 70), SUM(ResolutionWidth + 71), SUM(ResolutionWidth + 72), SUM(ResolutionWidth + 73), SUM(ResolutionWidth + 74), SUM(ResolutionWidth + 75), SUM(ResolutionWidth + 76), SUM(ResolutionWidth + 77), SUM(ResolutionWidth + 78), SUM(ResolutionWidth + 79), SUM(ResolutionWidth + 80), SUM(ResolutionWidth + 81), SUM(ResolutionWidth + 82), SUM(ResolutionWidth + 83), SUM(ResolutionWidth + 84), SUM(ResolutionWidth + 85), SUM(ResolutionWidth + 86), SUM(ResolutionWidth + 87), SUM(ResolutionWidth + 88), SUM(ResolutionWidth + 89) FROM clickbench.hits; +SELECT SearchEngineID, ClientIP, COUNT(*) AS c, SUM(IsRefresh), AVG(ResolutionWidth) FROM clickbench.hits WHERE SearchPhrase <> '' GROUP BY SearchEngineID, ClientIP ORDER BY c DESC LIMIT 10; +SELECT WatchID, ClientIP, COUNT(*) AS c, SUM(IsRefresh), AVG(ResolutionWidth) FROM clickbench.hits WHERE SearchPhrase <> '' GROUP BY WatchID, ClientIP ORDER BY c DESC LIMIT 10; +SELECT WatchID, ClientIP, COUNT(*) AS c, SUM(IsRefresh), AVG(ResolutionWidth) FROM clickbench.hits GROUP BY WatchID, ClientIP ORDER BY c DESC LIMIT 10; +SELECT URL, COUNT(*) AS c FROM clickbench.hits GROUP BY URL ORDER BY c DESC LIMIT 10; +SELECT 1, URL, COUNT(*) AS c FROM clickbench.hits GROUP BY 1, URL ORDER BY c DESC LIMIT 10; +SELECT ClientIP, ClientIP - 1, ClientIP - 2, ClientIP - 3, COUNT(*) AS c FROM clickbench.hits GROUP BY ClientIP, ClientIP - 1, ClientIP - 2, ClientIP - 3 ORDER BY c DESC LIMIT 10; +SELECT URL, COUNT(*) AS PageViews FROM clickbench.hits WHERE CounterID = 62 AND EventDate >= '2013-07-01' AND EventDate <= '2013-07-31' AND DontCountHits = 0 AND IsRefresh = 0 AND URL <> '' GROUP BY URL ORDER BY PageViews DESC LIMIT 10; +SELECT Title, COUNT(*) AS PageViews FROM clickbench.hits WHERE CounterID = 62 AND EventDate >= '2013-07-01' AND EventDate <= '2013-07-31' AND DontCountHits = 0 AND IsRefresh = 0 AND Title <> '' GROUP BY Title ORDER BY PageViews DESC LIMIT 10; +SELECT URL, COUNT(*) AS PageViews FROM clickbench.hits WHERE CounterID = 62 AND EventDate >= '2013-07-01' AND EventDate <= '2013-07-31' AND IsRefresh = 0 AND IsLink <> 0 AND IsDownload = 0 GROUP BY URL ORDER BY PageViews DESC LIMIT 10 OFFSET 1000; +SELECT TraficSourceID, SearchEngineID, AdvEngineID, CASE WHEN (SearchEngineID = 0 AND AdvEngineID = 0) THEN Referer ELSE '' END AS Src, URL AS Dst, COUNT(*) AS PageViews FROM clickbench.hits WHERE CounterID = 62 AND EventDate >= '2013-07-01' AND EventDate <= '2013-07-31' AND IsRefresh = 0 GROUP BY TraficSourceID, SearchEngineID, AdvEngineID, Src, Dst ORDER BY PageViews DESC LIMIT 10 OFFSET 1000; +SELECT URLHash, EventDate, COUNT(*) AS PageViews FROM clickbench.hits WHERE CounterID = 62 AND EventDate >= '2013-07-01' AND EventDate <= '2013-07-31' AND IsRefresh = 0 AND TraficSourceID IN (-1, 6) AND RefererHash = 3594120000172545465 GROUP BY URLHash, EventDate ORDER BY PageViews DESC LIMIT 10 OFFSET 100; +SELECT WindowClientWidth, WindowClientHeight, COUNT(*) AS PageViews FROM clickbench.hits WHERE CounterID = 62 AND EventDate >= '2013-07-01' AND EventDate <= '2013-07-31' AND IsRefresh = 0 AND DontCountHits = 0 AND URLHash = 2868770270353813622 GROUP BY WindowClientWidth, WindowClientHeight ORDER BY PageViews DESC LIMIT 10 OFFSET 10000; +SELECT DATE_TRUNC('minute', EventTime) AS M, COUNT(*) AS PageViews FROM clickbench.hits WHERE CounterID = 62 AND EventDate >= '2013-07-14' AND EventDate <= '2013-07-15' AND IsRefresh = 0 AND DontCountHits = 0 GROUP BY DATE_TRUNC('minute', EventTime) ORDER BY DATE_TRUNC('minute', EventTime) LIMIT 10 OFFSET 1000; diff --git a/chdb-rc-no-final-default/query b/chdb-rc-no-final-default/query new file mode 100755 index 0000000000..f2399c6656 --- /dev/null +++ b/chdb-rc-no-final-default/query @@ -0,0 +1,42 @@ +#!/bin/bash +# Reads a SQL query from stdin, runs it via chdb against the .clickbench dir. +# Stdout: query result. +# Stderr: query runtime in fractional seconds on the last line. +# Exit non-zero on error. +set -e + +# shellcheck disable=SC1091 +source myenv/bin/activate + +# Stage stdin into a temp file: `python3 - <<'PY'` already consumes stdin to +# read the program, so sys.stdin.read() inside the heredoc returns "". +query_file=$(mktemp) +trap 'rm -f "$query_file"' EXIT +cat > "$query_file" + +python3 - "$query_file" <<'PY' +import sys +import timeit +import chdb + +with open(sys.argv[1]) as f: + query = f.read() + +# The hits table is created inside the `clickbench` database (see +# create.sql + load), but the session defaults to `default`. Prepend +# USE so a bare `SELECT * FROM hits` resolves regardless. +sess = chdb.session.Session(".clickbench") +start = timeit.default_timer() +try: + res = sess.query(f"USE clickbench; {query}", "Pretty") + out = str(res) + end = timeit.default_timer() + if out: + sys.stdout.write(out) + if not out.endswith("\n"): + sys.stdout.write("\n") +finally: + sess.close() + +print(f"{end - start:.3f}", file=sys.stderr) +PY diff --git a/chdb-rc-no-final-default/results/20261008/c6a.2xlarge.json b/chdb-rc-no-final-default/results/20261008/c6a.2xlarge.json new file mode 100644 index 0000000000..c10f73aba9 --- /dev/null +++ b/chdb-rc-no-final-default/results/20261008/c6a.2xlarge.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc, no FINAL, default codec)", + "date": "2026-10-08", + "machine": "c6a.2xlarge", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 532, + "data_size": 21985896258, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.024, 0.016, 0.021], + [0.04, 0.014, 0.014], + [0.179, 0.115, 0.098], + [0.287, 0.142, 0.121], + [0.737, 0.604, 0.57], + [1.048, 0.893, 0.904], + [0.118, 0.058, 0.051], + [0.134, 0.034, 0.084], + [1.049, 0.89, 0.859], + [1.167, 0.987, 1.014], + [0.424, 0.257, 0.267], + [0.47, 0.288, 0.281], + [0.916, 0.732, 0.794], + [1.299, 1.107, 1.102], + [1.109, 0.958, 0.964], + [0.642, 0.478, 0.504], + [1.965, 1.767, 1.78], + [1.037, 0.762, 0.798], + [3.293, 3.013, 2.997], + [0.208, 0.11, 0.088], + [5.463, 1.69, 1.707], + [6.477, 1.962, 1.967], + [7.853, 2.289, 2.293], + [1.119, 0.393, 0.347], + [0.444, 0.171, 0.201], + [0.584, 0.411, 0.411], + [0.408, 0.169, 0.179], + [0.475, 0.365, 0.321], + [5.847, 3.233, 3.274], + [0.206, 0.102, 0.121], + [0.665, 0.53, 0.534], + [3.349, 0.659, 0.624], + [5.617, 3.715, 3.715], + [6.278, 3.839, 4.014], + [6.154, 3.99, 4.013], + [0.58, 0.489, 0.484], + [0.217, 0.139, 0.142], + [0.18, 0.111, 0.089], + [0.185, 0.079, 0.082], + [0.284, 0.177, 0.156], + [0.171, 0.081, 0.056], + [0.16, 0.053, 0.087], + [0.152, 0.026, 0.057] +] + } + \ No newline at end of file diff --git a/chdb-rc-no-final-default/results/20261008/c6a.4xlarge.json b/chdb-rc-no-final-default/results/20261008/c6a.4xlarge.json new file mode 100644 index 0000000000..2c4452f03d --- /dev/null +++ b/chdb-rc-no-final-default/results/20261008/c6a.4xlarge.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc, no FINAL, default codec)", + "date": "2026-10-08", + "machine": "c6a.4xlarge", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 496, + "data_size": 21290969516, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.024, 0.007, 0.009], + [0.027, 0.003, 0.006], + [0.111, 0.067, 0.069], + [0.174, 0.07, 0.068], + [0.402, 0.278, 0.282], + [0.576, 0.48, 0.474], + [0.072, 0.035, 0.034], + [0.091, 0.039, 0.047], + [0.63, 0.55, 0.574], + [0.738, 0.623, 0.597], + [0.288, 0.168, 0.155], + [0.631, 0.193, 0.186], + [0.571, 0.457, 0.465], + [1.067, 0.673, 0.662], + [0.656, 0.549, 0.545], + [0.428, 0.316, 0.329], + [1.323, 1.207, 1.195], + [0.754, 0.507, 0.507], + [2.81, 2.186, 2.176], + [0.107, 0.051, 0.05], + [5.431, 0.82, 0.808], + [6.319, 0.951, 0.941], + [7.519, 1.106, 1.125], + [1.086, 0.214, 0.191], + [0.359, 0.099, 0.089], + [0.307, 0.222, 0.219], + [0.352, 0.092, 0.079], + [0.269, 0.185, 0.185], + [5.391, 1.785, 1.772], + [0.114, 0.064, 0.06], + [0.404, 0.316, 0.292], + [3.153, 0.396, 0.414], + [4.457, 2.415, 2.419], + [5.924, 2.175, 2.198], + [5.916, 2.214, 2.151], + [0.337, 0.26, 0.262], + [0.154, 0.077, 0.07], + [0.129, 0.058, 0.045], + [0.145, 0.05, 0.055], + [0.225, 0.111, 0.112], + [0.133, 0.046, 0.049], + [0.123, 0.045, 0.042], + [0.122, 0.034, 0.035] +] + } + \ No newline at end of file diff --git a/chdb-rc-no-final-default/results/20261008/c6a.large.json b/chdb-rc-no-final-default/results/20261008/c6a.large.json new file mode 100644 index 0000000000..77b44c2e8f --- /dev/null +++ b/chdb-rc-no-final-default/results/20261008/c6a.large.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc, no FINAL, default codec)", + "date": "2026-10-08", + "machine": "c6a.large", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 1109, + "data_size": 10094287043, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.074, 0.016, 0.013], + [0.09, 0.052, 0.034], + [0.915, 0.709, 0.78], + [1.571, 1.441, 1.369], + [4.314, 4.267, 4.262], + [8.162, 7.937, 8.279], + [0.387, 0.372, 0.373], + [0.306, 0.235, 0.193], + [8.855, 8.96, 8.64], + [10.278, 9.86, 10.312], + [3.03, 3.075, 2.9], + [4.139, 3.393, 3.746], + [9.82, 9.773, 9.856], + [14.073, 13.814, 14.106], + [11.61, 11.342, 11.922], + [5.338, 5.352, 5.285], + [49.937, 50.302, 49.847], + [12.514, 12.824, 12.511], + [90.479, 90.068, 89.328], + [0.821, 0.536, 0.519], + [22.208, 20.824, 20.235], + [27.368, 26.505, 26.867], + [32.858, 31.805, 32.842], + [5.529, 4.662, 4.458], + [2.132, 1.838, 1.629], + [5.825, 5.843, 5.852], + [2.14, 1.956, 1.764], + [4.282, 4.256, 4.11], + [56.76, 55.988, 56.81], + [0.748, 0.748, 0.778], + [6.872, 6.753, 6.988], + [9.903, 8.7, 8.629], + [119.401, 119.584, 118.635], + [86.189, 87.262, 87.156], + [87.114, 86.629, 87.228], + [4.692, 4.853, 4.633], + [0.621, 0.592, 0.572], + [0.431, 0.32, 0.34], + [0.379, 0.285, 0.331], + [1.348, 1.303, 1.221], + [0.25, 0.165, 0.16], + [0.206, 0.137, 0.106], + [0.179, 0.114, 0.113] +] + } + \ No newline at end of file diff --git a/chdb-rc-no-final-default/results/20261008/c6a.metal.json b/chdb-rc-no-final-default/results/20261008/c6a.metal.json new file mode 100644 index 0000000000..b531e23fe2 --- /dev/null +++ b/chdb-rc-no-final-default/results/20261008/c6a.metal.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc, no FINAL, default codec)", + "date": "2026-10-08", + "machine": "c6a.metal", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 98, + "data_size": 15244259601, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.08, 0.069, 0.06], + [0.118, 0.031, 0.014], + [0.768, 0.099, 0.1], + [0.833, 0.096, 0.109], + [0.847, 0.174, 0.156], + [1.482, 0.193, 0.195], + [0.346, 0.073, 0.105], + [0.583, 0.087, 0.084], + [1.425, 0.411, 0.404], + [1.972, 0.398, 0.408], + [1.271, 0.188, 0.192], + [1.594, 0.199, 0.211], + [1.473, 0.204, 0.194], + [2.15, 0.254, 0.248], + [1.785, 0.229, 0.22], + [0.904, 0.153, 0.17], + [2.106, 0.312, 0.283], + [2.093, 0.183, 0.175], + [3.192, 0.464, 0.492], + [0.643, 0.112, 0.107], + [8.906, 0.202, 0.206], + [10.37, 0.228, 0.222], + [12.512, 0.29, 0.287], + [2.661, 0.191, 0.192], + [1.582, 0.121, 0.113], + [1.401, 0.142, 0.143], + [1.575, 0.121, 0.117], + [1.046, 0.14, 0.133], + [7.675, 0.444, 0.434], + [0.501, 0.083, 0.085], + [1.847, 0.198, 0.182], + [3.518, 0.223, 0.222], + [3.385, 0.52, 0.529], + [9.178, 0.614, 0.645], + [9.117, 0.61, 0.622], + [0.721, 0.127, 0.137], + [0.428, 0.124, 0.111], + [0.387, 0.106, 0.106], + [0.387, 0.109, 0.112], + [0.552, 0.157, 0.15], + [0.426, 0.105, 0.095], + [0.386, 0.104, 0.103], + [0.378, 0.074, 0.102] +] + } + \ No newline at end of file diff --git a/chdb-rc-no-final-default/results/20261008/c6a.xlarge.json b/chdb-rc-no-final-default/results/20261008/c6a.xlarge.json new file mode 100644 index 0000000000..cecd44350b --- /dev/null +++ b/chdb-rc-no-final-default/results/20261008/c6a.xlarge.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc, no FINAL, default codec)", + "date": "2026-10-08", + "machine": "c6a.xlarge", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 534, + "data_size": 15052203540, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.161, 0.042, 0.009], + [0.121, 0.039, 0.014], + [0.315, 0.217, 0.2], + [0.42, 0.267, 0.28], + [1.243, 1.119, 1.164], + [2.394, 2.1, 2.102], + [0.219, 0.081, 0.086], + [0.262, 0.13, 0.107], + [2.234, 2.057, 2.082], + [2.557, 2.353, 2.297], + [0.754, 0.572, 0.542], + [0.823, 0.596, 0.633], + [1.963, 1.795, 1.791], + [2.62, 2.439, 2.478], + [2.27, 2.181, 2.193], + [1.228, 1.061, 1.054], + [4.191, 4.057, 4.168], + [2.136, 1.914, 1.951], + [20.412, 20.012, 19.709], + [0.342, 0.118, 0.153], + [8.09, 4.241, 4.267], + [9.133, 5.094, 5.005], + [10.824, 5.797, 5.815], + [1.406, 0.723, 0.74], + [0.683, 0.366, 0.358], + [1.128, 0.989, 0.94], + [0.608, 0.389, 0.367], + [0.901, 0.862, 0.814], + [9.046, 8.159, 8.267], + [0.335, 0.194, 0.219], + [1.391, 1.255, 1.275], + [4.138, 1.461, 1.425], + [30.702, 30.162, 29.049], + [23.716, 25.078, 23.497], + [23.284, 23.834, 24.486], + [1.258, 1.141, 1.166], + [0.375, 0.166, 0.212], + [0.265, 0.09, 0.118], + [0.323, 0.116, 0.113], + [0.573, 0.433, 0.413], + [0.233, 0.079, 0.118], + [0.26, 0.085, 0.155], + [0.235, 0.104, 0.091] +] + } + \ No newline at end of file diff --git a/chdb-rc-no-final-default/results/20261008/c7a.metal-48xl.json b/chdb-rc-no-final-default/results/20261008/c7a.metal-48xl.json new file mode 100644 index 0000000000..a91ec6b5c1 --- /dev/null +++ b/chdb-rc-no-final-default/results/20261008/c7a.metal-48xl.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc, no FINAL, default codec)", + "date": "2026-10-08", + "machine": "c7a.metal-48xl", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 99, + "data_size": 16734682717, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.218, 0.056, 0.057], + [0.274, 0.028, 0.031], + [0.803, 0.089, 0.082], + [0.982, 0.102, 0.095], + [0.956, 0.177, 0.158], + [1.477, 0.173, 0.177], + [0.433, 0.073, 0.07], + [0.626, 0.085, 0.076], + [1.463, 0.385, 0.366], + [2.032, 0.396, 0.41], + [1.357, 0.19, 0.189], + [1.634, 0.184, 0.185], + [1.508, 0.166, 0.17], + [2.14, 0.193, 0.21], + [1.786, 0.176, 0.193], + [0.96, 0.143, 0.144], + [2.157, 0.233, 0.25], + [2.112, 0.16, 0.156], + [3.146, 0.345, 0.368], + [0.721, 0.082, 0.085], + [8.826, 0.182, 0.186], + [10.222, 0.191, 0.196], + [12.249, 0.249, 0.259], + [2.612, 0.182, 0.205], + [1.6, 0.11, 0.104], + [1.446, 0.127, 0.121], + [1.628, 0.11, 0.113], + [1.077, 0.12, 0.126], + [7.356, 0.348, 0.339], + [0.522, 0.082, 0.094], + [1.825, 0.173, 0.161], + [3.525, 0.183, 0.189], + [3.377, 0.397, 0.384], + [8.945, 0.497, 0.47], + [9.01, 0.479, 0.491], + [0.739, 0.117, 0.136], + [0.522, 0.103, 0.094], + [0.44, 0.076, 0.09], + [0.478, 0.095, 0.084], + [0.554, 0.122, 0.128], + [0.447, 0.078, 0.089], + [0.43, 0.075, 0.07], + [0.42, 0.076, 0.076] +] + } + \ No newline at end of file diff --git a/chdb-rc-no-final-default/results/20261008/c8g.4xlarge.json b/chdb-rc-no-final-default/results/20261008/c8g.4xlarge.json new file mode 100644 index 0000000000..c6be5dcc3d --- /dev/null +++ b/chdb-rc-no-final-default/results/20261008/c8g.4xlarge.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc, no FINAL, default codec)", + "date": "2026-10-08", + "machine": "c8g.4xlarge", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 501, + "data_size": 21290969516, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.021, 0.005, 0.005], + [0.014, 0.002, 0.007], + [0.07, 0.036, 0.041], + [0.165, 0.048, 0.05], + [0.228, 0.174, 0.181], + [0.303, 0.214, 0.22], + [0.046, 0.024, 0.021], + [0.064, 0.034, 0.036], + [0.367, 0.296, 0.294], + [0.423, 0.301, 0.331], + [0.211, 0.107, 0.101], + [0.222, 0.142, 0.129], + [0.326, 0.229, 0.215], + [0.876, 0.307, 0.311], + [0.41, 0.274, 0.26], + [0.236, 0.168, 0.154], + [0.9, 0.489, 0.489], + [0.787, 0.221, 0.224], + [2.095, 0.764, 0.76], + [0.102, 0.03, 0.021], + [5.43, 0.469, 0.455], + [6.322, 0.512, 0.505], + [7.543, 0.604, 0.609], + [1.058, 0.137, 0.154], + [0.361, 0.062, 0.075], + [0.279, 0.124, 0.126], + [0.344, 0.063, 0.063], + [0.161, 0.103, 0.112], + [5.178, 0.92, 0.925], + [0.076, 0.039, 0.04], + [0.243, 0.174, 0.17], + [3.067, 0.224, 0.217], + [3.494, 0.893, 0.897], + [5.592, 1.049, 1.048], + [5.586, 1.047, 1.048], + [0.196, 0.139, 0.137], + [0.094, 0.052, 0.049], + [0.089, 0.042, 0.032], + [0.094, 0.044, 0.039], + [0.142, 0.077, 0.075], + [0.08, 0.042, 0.028], + [0.077, 0.026, 0.03], + [0.073, 0.03, 0.028] +] + } + \ No newline at end of file diff --git a/chdb-rc-no-final-default/results/20261008/c8g.metal-48xl.json b/chdb-rc-no-final-default/results/20261008/c8g.metal-48xl.json new file mode 100644 index 0000000000..0c92de0528 --- /dev/null +++ b/chdb-rc-no-final-default/results/20261008/c8g.metal-48xl.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc, no FINAL, default codec)", + "date": "2026-10-08", + "machine": "c8g.metal-48xl", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 104, + "data_size": 16425555218, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.064, 0.05, 0.05], + [0.181, 0.036, 0.031], + [0.84, 0.079, 0.094], + [0.883, 0.093, 0.086], + [0.931, 0.129, 0.135], + [1.473, 0.15, 0.144], + [0.432, 0.065, 0.091], + [0.6, 0.072, 0.071], + [1.406, 0.314, 0.317], + [1.967, 0.316, 0.324], + [1.382, 0.155, 0.152], + [1.582, 0.144, 0.151], + [1.503, 0.177, 0.148], + [2.136, 0.197, 0.195], + [1.747, 0.17, 0.174], + [0.942, 0.134, 0.139], + [2.13, 0.254, 0.261], + [2.065, 0.166, 0.167], + [3.153, 0.419, 0.417], + [0.743, 0.069, 0.072], + [8.876, 0.174, 0.182], + [10.378, 0.193, 0.196], + [12.454, 0.248, 0.255], + [2.851, 0.153, 0.149], + [1.566, 0.095, 0.101], + [1.434, 0.12, 0.104], + [1.576, 0.101, 0.097], + [1.079, 0.103, 0.103], + [7.481, 0.347, 0.337], + [0.556, 0.085, 0.085], + [1.913, 0.147, 0.144], + [3.484, 0.171, 0.176], + [3.495, 0.419, 0.434], + [9.019, 0.421, 0.403], + [9.006, 0.414, 0.411], + [0.759, 0.114, 0.126], + [0.494, 0.104, 0.092], + [0.41, 0.081, 0.08], + [0.506, 0.077, 0.083], + [0.566, 0.111, 0.122], + [0.453, 0.072, 0.071], + [0.462, 0.069, 0.068], + [0.403, 0.072, 0.066] +] + } + \ No newline at end of file diff --git a/chdb-rc-no-final-default/results/20261008/t3a.small.json b/chdb-rc-no-final-default/results/20261008/t3a.small.json new file mode 100644 index 0000000000..bdfb86f00b --- /dev/null +++ b/chdb-rc-no-final-default/results/20261008/t3a.small.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc, no FINAL, default codec)", + "date": "2026-10-08", + "machine": "t3a.small", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 1545, + "data_size": 9505468264, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.191, 0.071, 0.09], + [0.173, 0.088, 0.038], + [2.019, 1.457, 1.512], + [3.093, 2.916, 2.579], + [6.488, 5.791, 5.826], + [14.307, 13.011, 13.681], + [0.925, 0.837, 0.817], + [0.793, 0.471, 0.351], + [14.537, 14.023, 13.848], + [16.848, 16.922, 16.316], + [6.048, 5.592, 5.182], + [7.349, 6.408, 6.905], + [15.131, 14.894, 15.308], + [42.763, 42.421, 42.253], + [31.417, 31.807, 32.411], + [14.719, 14.3, 14.666], + [66.371, 66.258, 66.224], + [20.845, 19.921, 19.751], + [115.671, 113.136, 112.567], + [1.641, 0.903, 0.966], + [37.97, 37.525, 37.692], + [46.01, 45.907, 46.09], + [56.898, 57.68, 57.389], + [10.536, 8.846, 8.262], + [3.727, 2.922, 2.796], + [10.518, 10.059, 9.764], + [3.63, 2.834, 3.149], + [7.477, 7.005, 6.973], + [92.347, 92.536, 92.549], + [1.471, 1.326, 1.328], + [11.44, 10.199, 10.801], + [32.877, 33.501, 33.702], + [169.781, 165.451, 164.134], + [134.261, 133.607, 134.286], + [133.17, 134.041, 132.736], + [5.835, 5.364, 5.743], + [1.031, 0.844, 0.851], + [0.677, 0.549, 0.54], + [0.601, 0.481, 0.404], + [1.958, 1.803, 1.805], + [0.338, 0.193, 0.212], + [0.317, 0.186, 0.189], + [0.312, 0.167, 0.164] +] + } + \ No newline at end of file diff --git a/chdb-rc-no-final-default/start b/chdb-rc-no-final-default/start new file mode 100755 index 0000000000..71836e5f8f --- /dev/null +++ b/chdb-rc-no-final-default/start @@ -0,0 +1,3 @@ +#!/bin/bash +# chdb is an embedded library — no daemon to start. +exit 0 diff --git a/chdb-rc-no-final-default/stop b/chdb-rc-no-final-default/stop new file mode 100755 index 0000000000..1e5556318f --- /dev/null +++ b/chdb-rc-no-final-default/stop @@ -0,0 +1,3 @@ +#!/bin/bash +# chdb is an embedded library — no daemon to stop. +exit 0 diff --git a/chdb-rc-no-final-default/template.json b/chdb-rc-no-final-default/template.json new file mode 100644 index 0000000000..ed50f70012 --- /dev/null +++ b/chdb-rc-no-final-default/template.json @@ -0,0 +1,7 @@ +{ + "system": "chDB (rc, no FINAL, default codec)", + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"] +} diff --git a/chdb-rc-no-final-lz4-i1/README.md b/chdb-rc-no-final-lz4-i1/README.md new file mode 100644 index 0000000000..f7fb2e5065 --- /dev/null +++ b/chdb-rc-no-final-lz4-i1/README.md @@ -0,0 +1,8 @@ +Diagnostic copy of `chdb/` for a chdb-core release candidate. Not meant to be merged. + +- `install` pins chdb-core to the `CORE_TAG` release instead of the latest one. +- `create.sql` disables automatic statistics and forces LZ4 with adaptive codec selection off. +- `insert.sql` fixes `max_insert_threads` at 1. +- The measured load does not run `OPTIMIZE TABLE ... FINAL`. +- After the measured flow, `profile` repeats the load with part_log and query_log enabled and + prints a JSON report between `=== load_profile json ===` and `=== load_profile end ===`. diff --git a/chdb-rc-no-final-lz4-i1/benchmark.sh b/chdb-rc-no-final-lz4-i1/benchmark.sh new file mode 100755 index 0000000000..9fc3378847 --- /dev/null +++ b/chdb-rc-no-final-lz4-i1/benchmark.sh @@ -0,0 +1,7 @@ +#!/bin/bash +export BENCH_DOWNLOAD_SCRIPT="download-hits-csv" +export BENCH_RESTARTABLE=no +# See chdb/benchmark.sh. +export BENCH_CONCURRENT_DURATION="${BENCH_CONCURRENT_DURATION:-0}" +../lib/benchmark-common.sh +./profile diff --git a/chdb-rc-no-final-lz4-i1/check b/chdb-rc-no-final-lz4-i1/check new file mode 100755 index 0000000000..cd67e7c07c --- /dev/null +++ b/chdb-rc-no-final-lz4-i1/check @@ -0,0 +1,6 @@ +#!/bin/bash +set -e + +# shellcheck disable=SC1091 +source myenv/bin/activate +python3 -c "import chdb; chdb.query('SELECT 1')" >/dev/null diff --git a/chdb-rc-no-final-lz4-i1/create.sql b/chdb-rc-no-final-lz4-i1/create.sql new file mode 100644 index 0000000000..f37de082fe --- /dev/null +++ b/chdb-rc-no-final-lz4-i1/create.sql @@ -0,0 +1,118 @@ +CREATE DATABASE IF NOT EXISTS clickbench ENGINE = Atomic; + +USE clickbench; + +CREATE TABLE IF NOT EXISTS hits +( + WatchID BIGINT NOT NULL, + JavaEnable SMALLINT NOT NULL, + Title TEXT NOT NULL, + GoodEvent SMALLINT NOT NULL, + EventTime TIMESTAMP NOT NULL, + EventDate Date NOT NULL, + CounterID INTEGER NOT NULL, + ClientIP INTEGER NOT NULL, + RegionID INTEGER NOT NULL, + UserID BIGINT NOT NULL, + CounterClass SMALLINT NOT NULL, + OS SMALLINT NOT NULL, + UserAgent SMALLINT NOT NULL, + URL TEXT NOT NULL, + Referer TEXT NOT NULL, + IsRefresh SMALLINT NOT NULL, + RefererCategoryID SMALLINT NOT NULL, + RefererRegionID INTEGER NOT NULL, + URLCategoryID SMALLINT NOT NULL, + URLRegionID INTEGER NOT NULL, + ResolutionWidth SMALLINT NOT NULL, + ResolutionHeight SMALLINT NOT NULL, + ResolutionDepth SMALLINT NOT NULL, + FlashMajor SMALLINT NOT NULL, + FlashMinor SMALLINT NOT NULL, + FlashMinor2 TEXT NOT NULL, + NetMajor SMALLINT NOT NULL, + NetMinor SMALLINT NOT NULL, + UserAgentMajor SMALLINT NOT NULL, + UserAgentMinor VARCHAR(255) NOT NULL, + CookieEnable SMALLINT NOT NULL, + JavascriptEnable SMALLINT NOT NULL, + IsMobile SMALLINT NOT NULL, + MobilePhone SMALLINT NOT NULL, + MobilePhoneModel TEXT NOT NULL, + Params TEXT NOT NULL, + IPNetworkID INTEGER NOT NULL, + TraficSourceID SMALLINT NOT NULL, + SearchEngineID SMALLINT NOT NULL, + SearchPhrase TEXT NOT NULL, + AdvEngineID SMALLINT NOT NULL, + IsArtifical SMALLINT NOT NULL, + WindowClientWidth SMALLINT NOT NULL, + WindowClientHeight SMALLINT NOT NULL, + ClientTimeZone SMALLINT NOT NULL, + ClientEventTime TIMESTAMP NOT NULL, + SilverlightVersion1 SMALLINT NOT NULL, + SilverlightVersion2 SMALLINT NOT NULL, + SilverlightVersion3 INTEGER NOT NULL, + SilverlightVersion4 SMALLINT NOT NULL, + PageCharset TEXT NOT NULL, + CodeVersion INTEGER NOT NULL, + IsLink SMALLINT NOT NULL, + IsDownload SMALLINT NOT NULL, + IsNotBounce SMALLINT NOT NULL, + FUniqID BIGINT NOT NULL, + OriginalURL TEXT NOT NULL, + HID INTEGER NOT NULL, + IsOldCounter SMALLINT NOT NULL, + IsEvent SMALLINT NOT NULL, + IsParameter SMALLINT NOT NULL, + DontCountHits SMALLINT NOT NULL, + WithHash SMALLINT NOT NULL, + HitColor CHAR NOT NULL, + LocalEventTime TIMESTAMP NOT NULL, + Age SMALLINT NOT NULL, + Sex SMALLINT NOT NULL, + Income SMALLINT NOT NULL, + Interests SMALLINT NOT NULL, + Robotness SMALLINT NOT NULL, + RemoteIP INTEGER NOT NULL, + WindowName INTEGER NOT NULL, + OpenerName INTEGER NOT NULL, + HistoryLength SMALLINT NOT NULL, + BrowserLanguage TEXT NOT NULL, + BrowserCountry TEXT NOT NULL, + SocialNetwork TEXT NOT NULL, + SocialAction TEXT NOT NULL, + HTTPError SMALLINT NOT NULL, + SendTiming INTEGER NOT NULL, + DNSTiming INTEGER NOT NULL, + ConnectTiming INTEGER NOT NULL, + ResponseStartTiming INTEGER NOT NULL, + ResponseEndTiming INTEGER NOT NULL, + FetchTiming INTEGER NOT NULL, + SocialSourceNetworkID SMALLINT NOT NULL, + SocialSourcePage TEXT NOT NULL, + ParamPrice BIGINT NOT NULL, + ParamOrderID TEXT NOT NULL, + ParamCurrency TEXT NOT NULL, + ParamCurrencyID SMALLINT NOT NULL, + OpenstatServiceName TEXT NOT NULL, + OpenstatCampaignID TEXT NOT NULL, + OpenstatAdID TEXT NOT NULL, + OpenstatSourceID TEXT NOT NULL, + UTMSource TEXT NOT NULL, + UTMMedium TEXT NOT NULL, + UTMCampaign TEXT NOT NULL, + UTMContent TEXT NOT NULL, + UTMTerm TEXT NOT NULL, + FromTag TEXT NOT NULL, + HasGCLID SMALLINT NOT NULL, + RefererHash BIGINT NOT NULL, + URLHash BIGINT NOT NULL, + CLID INTEGER NOT NULL, + PRIMARY KEY (CounterID, EventDate, UserID, EventTime, WatchID) +) +ENGINE = MergeTree +SETTINGS + auto_statistics_types = '', + default_compression_codec = 'LZ4', + enable_adaptive_codec_selection = 0; diff --git a/chdb-rc-no-final-lz4-i1/data-size b/chdb-rc-no-final-lz4-i1/data-size new file mode 100755 index 0000000000..226c121b8f --- /dev/null +++ b/chdb-rc-no-final-lz4-i1/data-size @@ -0,0 +1,4 @@ +#!/bin/bash +set -e + +du -bcs .clickbench | awk '/total$/ { print $1 }' diff --git a/chdb-rc-no-final-lz4-i1/insert.sql b/chdb-rc-no-final-lz4-i1/insert.sql new file mode 100644 index 0000000000..8a96982622 --- /dev/null +++ b/chdb-rc-no-final-lz4-i1/insert.sql @@ -0,0 +1,4 @@ +INSERT INTO clickbench.hits +SELECT * +FROM file('hits.csv') +SETTINGS max_insert_threads = 1; diff --git a/chdb-rc-no-final-lz4-i1/install b/chdb-rc-no-final-lz4-i1/install new file mode 100755 index 0000000000..a381dee031 --- /dev/null +++ b/chdb-rc-no-final-lz4-i1/install @@ -0,0 +1,53 @@ +#!/bin/bash +set -euo pipefail + +# Candidate chdb-core build under test; the stock chdb entry installs the latest release. +CORE_TAG=v26.9.1-rc.1 + +sudo apt-get update -y +sudo apt-get install -y python3-pip python3-venv + +if [ ! -d myenv ]; then + python3 -m venv myenv +fi + +# shellcheck disable=SC1091 +source myenv/bin/activate + +pip install --upgrade pip +pip install psutil pyarrow "chdb==4.4.0" + +wheel_url=$(python3 - "$CORE_TAG" <<'PY' +import json +import platform +import sys +import urllib.request + +tag = sys.argv[1] +release = json.load(urllib.request.urlopen( + f"https://api.github.com/repos/chdb-io/chdb-core/releases/tags/{tag}", timeout=30)) +arch = platform.machine() +for asset in release["assets"]: + name = asset["name"] + if name.endswith(".whl") and "_lite" not in name and "linux" in name and arch in name: + print(asset["browser_download_url"]) + break +else: + raise SystemExit(f"no full Linux wheel for chdb-core {tag} on {arch}") +PY +) +wheel=$(basename "$wheel_url") +curl -fSL --retry 3 -o "$wheel" "$wheel_url" +pip uninstall --quiet -y chdb-core || true +pip install --quiet "./$wheel" + +# The profiling script ships in the same tag. +curl -fSL --retry 3 -o load_profile.py \ + "https://raw.githubusercontent.com/chdb-io/chdb-core/${CORE_TAG}/benchmark/load_profile.py" + +python3 - <<'PY' +from importlib.metadata import version + +print(f"Installed chdb: {version('chdb')}") +print(f"Installed chdb-core: {version('chdb-core')}") +PY diff --git a/chdb-rc-no-final-lz4-i1/load b/chdb-rc-no-final-lz4-i1/load new file mode 100755 index 0000000000..edbebac7e8 --- /dev/null +++ b/chdb-rc-no-final-lz4-i1/load @@ -0,0 +1,24 @@ +#!/bin/bash +set -e + +# shellcheck disable=SC1091 +source myenv/bin/activate + +# Idempotent: blow away any prior data dir. +rm -rf .clickbench + +python3 - <<'PY' +from chdb import dbapi + +con = dbapi.connect(path=".clickbench") +cur = con.cursor() + +cur.execute(open("create.sql").read()) +cur.execute(open("insert.sql").read()) + +cur.close() +con.close() +PY + +# hits.csv stays for ./profile, which benchmark.sh runs after the measured flow. +sync diff --git a/chdb-rc-no-final-lz4-i1/profile b/chdb-rc-no-final-lz4-i1/profile new file mode 100755 index 0000000000..d25b7d8bf2 --- /dev/null +++ b/chdb-rc-no-final-lz4-i1/profile @@ -0,0 +1,24 @@ +#!/bin/bash +# Repeat the load once more, outside every measured window, with part_log and +# query_log on, and print where the parts and the time went. +set -e + +# shellcheck disable=SC1091 +source myenv/bin/activate + +rm -rf .clickbench .profile +sync + +echo "=== load_profile begin ===" +python3 load_profile.py \ + --path .profile \ + --create create.sql \ + --load "$(tr '\n' ' ' < insert.sql | sed 's/;[[:space:]]*$//')" \ + --table hits \ + --out profile.json +echo "=== load_profile json ===" +python3 -c "import json; r = json.load(open('profile.json')); r['pipeline'].pop('explain_pipeline'); print(json.dumps(r))" +echo "=== load_profile end ===" + +rm -rf .profile hits.csv +sync diff --git a/chdb-rc-no-final-lz4-i1/queries.sql b/chdb-rc-no-final-lz4-i1/queries.sql new file mode 100644 index 0000000000..4b05870ab9 --- /dev/null +++ b/chdb-rc-no-final-lz4-i1/queries.sql @@ -0,0 +1,43 @@ +SELECT COUNT(*) FROM clickbench.hits; +SELECT COUNT(*) FROM clickbench.hits WHERE AdvEngineID <> 0; +SELECT SUM(AdvEngineID), COUNT(*), AVG(ResolutionWidth) FROM clickbench.hits; +SELECT AVG(UserID) FROM clickbench.hits; +SELECT COUNT(DISTINCT UserID) FROM clickbench.hits; +SELECT COUNT(DISTINCT SearchPhrase) FROM clickbench.hits; +SELECT MIN(EventDate), MAX(EventDate) FROM clickbench.hits; +SELECT AdvEngineID, COUNT(*) FROM clickbench.hits WHERE AdvEngineID <> 0 GROUP BY AdvEngineID ORDER BY COUNT(*) DESC; +SELECT RegionID, COUNT(DISTINCT UserID) AS u FROM clickbench.hits GROUP BY RegionID ORDER BY u DESC LIMIT 10; +SELECT RegionID, SUM(AdvEngineID), COUNT(*) AS c, AVG(ResolutionWidth), COUNT(DISTINCT UserID) FROM clickbench.hits GROUP BY RegionID ORDER BY c DESC LIMIT 10; +SELECT MobilePhoneModel, COUNT(DISTINCT UserID) AS u FROM clickbench.hits WHERE MobilePhoneModel <> '' GROUP BY MobilePhoneModel ORDER BY u DESC LIMIT 10; +SELECT MobilePhone, MobilePhoneModel, COUNT(DISTINCT UserID) AS u FROM clickbench.hits WHERE MobilePhoneModel <> '' GROUP BY MobilePhone, MobilePhoneModel ORDER BY u DESC LIMIT 10; +SELECT SearchPhrase, COUNT(*) AS c FROM clickbench.hits WHERE SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY c DESC LIMIT 10; +SELECT SearchPhrase, COUNT(DISTINCT UserID) AS u FROM clickbench.hits WHERE SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY u DESC LIMIT 10; +SELECT SearchEngineID, SearchPhrase, COUNT(*) AS c FROM clickbench.hits WHERE SearchPhrase <> '' GROUP BY SearchEngineID, SearchPhrase ORDER BY c DESC LIMIT 10; +SELECT UserID, COUNT(*) FROM clickbench.hits GROUP BY UserID ORDER BY COUNT(*) DESC LIMIT 10; +SELECT UserID, SearchPhrase, COUNT(*) FROM clickbench.hits GROUP BY UserID, SearchPhrase ORDER BY COUNT(*) DESC LIMIT 10; +SELECT UserID, SearchPhrase, COUNT(*) FROM clickbench.hits GROUP BY UserID, SearchPhrase LIMIT 10; +SELECT UserID, extract(minute FROM EventTime) AS m, SearchPhrase, COUNT(*) FROM clickbench.hits GROUP BY UserID, m, SearchPhrase ORDER BY COUNT(*) DESC LIMIT 10; +SELECT UserID FROM clickbench.hits WHERE UserID = 435090932899640449; +SELECT COUNT(*) FROM clickbench.hits WHERE URL LIKE '%google%'; +SELECT SearchPhrase, MIN(URL), COUNT(*) AS c FROM clickbench.hits WHERE URL LIKE '%google%' AND SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY c DESC LIMIT 10; +SELECT SearchPhrase, MIN(URL), MIN(Title), COUNT(*) AS c, COUNT(DISTINCT UserID) FROM clickbench.hits WHERE Title LIKE '%Google%' AND URL NOT LIKE '%.google.%' AND SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY c DESC LIMIT 10; +SELECT * FROM clickbench.hits WHERE URL LIKE '%google%' ORDER BY EventTime LIMIT 10; +SELECT SearchPhrase FROM clickbench.hits WHERE SearchPhrase <> '' ORDER BY EventTime LIMIT 10; +SELECT SearchPhrase FROM clickbench.hits WHERE SearchPhrase <> '' ORDER BY SearchPhrase LIMIT 10; +SELECT SearchPhrase FROM clickbench.hits WHERE SearchPhrase <> '' ORDER BY EventTime, SearchPhrase LIMIT 10; +SELECT CounterID, AVG(length(URL)) AS l, COUNT(*) AS c FROM clickbench.hits WHERE URL <> '' GROUP BY CounterID HAVING COUNT(*) > 100000 ORDER BY l DESC LIMIT 25; +SELECT REGEXP_REPLACE(Referer, '^https?://(?:www\.)?([^/]+)/.*$', '\1') AS k, AVG(length(Referer)) AS l, COUNT(*) AS c, MIN(Referer) FROM clickbench.hits WHERE Referer <> '' GROUP BY k HAVING COUNT(*) > 100000 ORDER BY l DESC LIMIT 25; +SELECT SUM(ResolutionWidth), SUM(ResolutionWidth + 1), SUM(ResolutionWidth + 2), SUM(ResolutionWidth + 3), SUM(ResolutionWidth + 4), SUM(ResolutionWidth + 5), SUM(ResolutionWidth + 6), SUM(ResolutionWidth + 7), SUM(ResolutionWidth + 8), SUM(ResolutionWidth + 9), SUM(ResolutionWidth + 10), SUM(ResolutionWidth + 11), SUM(ResolutionWidth + 12), SUM(ResolutionWidth + 13), SUM(ResolutionWidth + 14), SUM(ResolutionWidth + 15), SUM(ResolutionWidth + 16), SUM(ResolutionWidth + 17), SUM(ResolutionWidth + 18), SUM(ResolutionWidth + 19), SUM(ResolutionWidth + 20), SUM(ResolutionWidth + 21), SUM(ResolutionWidth + 22), SUM(ResolutionWidth + 23), SUM(ResolutionWidth + 24), SUM(ResolutionWidth + 25), SUM(ResolutionWidth + 26), SUM(ResolutionWidth + 27), SUM(ResolutionWidth + 28), SUM(ResolutionWidth + 29), SUM(ResolutionWidth + 30), SUM(ResolutionWidth + 31), SUM(ResolutionWidth + 32), SUM(ResolutionWidth + 33), SUM(ResolutionWidth + 34), SUM(ResolutionWidth + 35), SUM(ResolutionWidth + 36), SUM(ResolutionWidth + 37), SUM(ResolutionWidth + 38), SUM(ResolutionWidth + 39), SUM(ResolutionWidth + 40), SUM(ResolutionWidth + 41), SUM(ResolutionWidth + 42), SUM(ResolutionWidth + 43), SUM(ResolutionWidth + 44), SUM(ResolutionWidth + 45), SUM(ResolutionWidth + 46), SUM(ResolutionWidth + 47), SUM(ResolutionWidth + 48), SUM(ResolutionWidth + 49), SUM(ResolutionWidth + 50), SUM(ResolutionWidth + 51), SUM(ResolutionWidth + 52), SUM(ResolutionWidth + 53), SUM(ResolutionWidth + 54), SUM(ResolutionWidth + 55), SUM(ResolutionWidth + 56), SUM(ResolutionWidth + 57), SUM(ResolutionWidth + 58), SUM(ResolutionWidth + 59), SUM(ResolutionWidth + 60), SUM(ResolutionWidth + 61), SUM(ResolutionWidth + 62), SUM(ResolutionWidth + 63), SUM(ResolutionWidth + 64), SUM(ResolutionWidth + 65), SUM(ResolutionWidth + 66), SUM(ResolutionWidth + 67), SUM(ResolutionWidth + 68), SUM(ResolutionWidth + 69), SUM(ResolutionWidth + 70), SUM(ResolutionWidth + 71), SUM(ResolutionWidth + 72), SUM(ResolutionWidth + 73), SUM(ResolutionWidth + 74), SUM(ResolutionWidth + 75), SUM(ResolutionWidth + 76), SUM(ResolutionWidth + 77), SUM(ResolutionWidth + 78), SUM(ResolutionWidth + 79), SUM(ResolutionWidth + 80), SUM(ResolutionWidth + 81), SUM(ResolutionWidth + 82), SUM(ResolutionWidth + 83), SUM(ResolutionWidth + 84), SUM(ResolutionWidth + 85), SUM(ResolutionWidth + 86), SUM(ResolutionWidth + 87), SUM(ResolutionWidth + 88), SUM(ResolutionWidth + 89) FROM clickbench.hits; +SELECT SearchEngineID, ClientIP, COUNT(*) AS c, SUM(IsRefresh), AVG(ResolutionWidth) FROM clickbench.hits WHERE SearchPhrase <> '' GROUP BY SearchEngineID, ClientIP ORDER BY c DESC LIMIT 10; +SELECT WatchID, ClientIP, COUNT(*) AS c, SUM(IsRefresh), AVG(ResolutionWidth) FROM clickbench.hits WHERE SearchPhrase <> '' GROUP BY WatchID, ClientIP ORDER BY c DESC LIMIT 10; +SELECT WatchID, ClientIP, COUNT(*) AS c, SUM(IsRefresh), AVG(ResolutionWidth) FROM clickbench.hits GROUP BY WatchID, ClientIP ORDER BY c DESC LIMIT 10; +SELECT URL, COUNT(*) AS c FROM clickbench.hits GROUP BY URL ORDER BY c DESC LIMIT 10; +SELECT 1, URL, COUNT(*) AS c FROM clickbench.hits GROUP BY 1, URL ORDER BY c DESC LIMIT 10; +SELECT ClientIP, ClientIP - 1, ClientIP - 2, ClientIP - 3, COUNT(*) AS c FROM clickbench.hits GROUP BY ClientIP, ClientIP - 1, ClientIP - 2, ClientIP - 3 ORDER BY c DESC LIMIT 10; +SELECT URL, COUNT(*) AS PageViews FROM clickbench.hits WHERE CounterID = 62 AND EventDate >= '2013-07-01' AND EventDate <= '2013-07-31' AND DontCountHits = 0 AND IsRefresh = 0 AND URL <> '' GROUP BY URL ORDER BY PageViews DESC LIMIT 10; +SELECT Title, COUNT(*) AS PageViews FROM clickbench.hits WHERE CounterID = 62 AND EventDate >= '2013-07-01' AND EventDate <= '2013-07-31' AND DontCountHits = 0 AND IsRefresh = 0 AND Title <> '' GROUP BY Title ORDER BY PageViews DESC LIMIT 10; +SELECT URL, COUNT(*) AS PageViews FROM clickbench.hits WHERE CounterID = 62 AND EventDate >= '2013-07-01' AND EventDate <= '2013-07-31' AND IsRefresh = 0 AND IsLink <> 0 AND IsDownload = 0 GROUP BY URL ORDER BY PageViews DESC LIMIT 10 OFFSET 1000; +SELECT TraficSourceID, SearchEngineID, AdvEngineID, CASE WHEN (SearchEngineID = 0 AND AdvEngineID = 0) THEN Referer ELSE '' END AS Src, URL AS Dst, COUNT(*) AS PageViews FROM clickbench.hits WHERE CounterID = 62 AND EventDate >= '2013-07-01' AND EventDate <= '2013-07-31' AND IsRefresh = 0 GROUP BY TraficSourceID, SearchEngineID, AdvEngineID, Src, Dst ORDER BY PageViews DESC LIMIT 10 OFFSET 1000; +SELECT URLHash, EventDate, COUNT(*) AS PageViews FROM clickbench.hits WHERE CounterID = 62 AND EventDate >= '2013-07-01' AND EventDate <= '2013-07-31' AND IsRefresh = 0 AND TraficSourceID IN (-1, 6) AND RefererHash = 3594120000172545465 GROUP BY URLHash, EventDate ORDER BY PageViews DESC LIMIT 10 OFFSET 100; +SELECT WindowClientWidth, WindowClientHeight, COUNT(*) AS PageViews FROM clickbench.hits WHERE CounterID = 62 AND EventDate >= '2013-07-01' AND EventDate <= '2013-07-31' AND IsRefresh = 0 AND DontCountHits = 0 AND URLHash = 2868770270353813622 GROUP BY WindowClientWidth, WindowClientHeight ORDER BY PageViews DESC LIMIT 10 OFFSET 10000; +SELECT DATE_TRUNC('minute', EventTime) AS M, COUNT(*) AS PageViews FROM clickbench.hits WHERE CounterID = 62 AND EventDate >= '2013-07-14' AND EventDate <= '2013-07-15' AND IsRefresh = 0 AND DontCountHits = 0 GROUP BY DATE_TRUNC('minute', EventTime) ORDER BY DATE_TRUNC('minute', EventTime) LIMIT 10 OFFSET 1000; diff --git a/chdb-rc-no-final-lz4-i1/query b/chdb-rc-no-final-lz4-i1/query new file mode 100755 index 0000000000..f2399c6656 --- /dev/null +++ b/chdb-rc-no-final-lz4-i1/query @@ -0,0 +1,42 @@ +#!/bin/bash +# Reads a SQL query from stdin, runs it via chdb against the .clickbench dir. +# Stdout: query result. +# Stderr: query runtime in fractional seconds on the last line. +# Exit non-zero on error. +set -e + +# shellcheck disable=SC1091 +source myenv/bin/activate + +# Stage stdin into a temp file: `python3 - <<'PY'` already consumes stdin to +# read the program, so sys.stdin.read() inside the heredoc returns "". +query_file=$(mktemp) +trap 'rm -f "$query_file"' EXIT +cat > "$query_file" + +python3 - "$query_file" <<'PY' +import sys +import timeit +import chdb + +with open(sys.argv[1]) as f: + query = f.read() + +# The hits table is created inside the `clickbench` database (see +# create.sql + load), but the session defaults to `default`. Prepend +# USE so a bare `SELECT * FROM hits` resolves regardless. +sess = chdb.session.Session(".clickbench") +start = timeit.default_timer() +try: + res = sess.query(f"USE clickbench; {query}", "Pretty") + out = str(res) + end = timeit.default_timer() + if out: + sys.stdout.write(out) + if not out.endswith("\n"): + sys.stdout.write("\n") +finally: + sess.close() + +print(f"{end - start:.3f}", file=sys.stderr) +PY diff --git a/chdb-rc-no-final-lz4-i1/results/20261008/c6a.2xlarge.json b/chdb-rc-no-final-lz4-i1/results/20261008/c6a.2xlarge.json new file mode 100644 index 0000000000..d9a1792897 --- /dev/null +++ b/chdb-rc-no-final-lz4-i1/results/20261008/c6a.2xlarge.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc, no FINAL, LZ4, insert threads 1)", + "date": "2026-10-08", + "machine": "c6a.2xlarge", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 576, + "data_size": 24801622605, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.043, 0.011, 0.015], + [0.042, 0.019, 0.009], + [0.211, 0.091, 0.118], + [0.251, 0.113, 0.112], + [0.736, 0.596, 0.582], + [1.021, 0.812, 0.854], + [0.162, 0.055, 0.086], + [0.17, 0.073, 0.086], + [0.997, 0.905, 0.888], + [1.124, 1.013, 1], + [0.396, 0.235, 0.224], + [0.433, 0.257, 0.296], + [1.039, 0.693, 0.723], + [2.088, 1.008, 1.03], + [1.246, 0.886, 0.865], + [0.626, 0.474, 0.48], + [2.287, 1.737, 1.713], + [1.729, 0.718, 0.725], + [4.521, 3.033, 3.052], + [0.221, 0.092, 0.073], + [10.645, 0.978, 0.974], + [12.127, 1.171, 1.226], + [14.935, 1.524, 1.579], + [1.772, 0.297, 0.278], + [0.875, 0.099, 0.126], + [0.822, 0.326, 0.319], + [0.893, 0.112, 0.128], + [0.402, 0.23, 0.24], + [9.522, 2.879, 2.855], + [0.21, 0.095, 0.103], + [0.668, 0.465, 0.409], + [3.862, 0.683, 0.653], + [6.243, 3.851, 3.856], + [11.534, 10.579, 3.658], + [12.493, 16.88, 3.738], + [0.579, 0.46, 0.497], + [0.25, 0.138, 0.162], + [0.189, 0.109, 0.101], + [0.196, 0.122, 0.091], + [0.341, 0.178, 0.21], + [0.165, 0.109, 0.099], + [0.178, 0.108, 0.087], + [0.175, 0.115, 0.05] +] + } + \ No newline at end of file diff --git a/chdb-rc-no-final-lz4-i1/results/20261008/c6a.4xlarge.json b/chdb-rc-no-final-lz4-i1/results/20261008/c6a.4xlarge.json new file mode 100644 index 0000000000..5b1ef125b9 --- /dev/null +++ b/chdb-rc-no-final-lz4-i1/results/20261008/c6a.4xlarge.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc, no FINAL, LZ4, insert threads 1)", + "date": "2026-10-08", + "machine": "c6a.4xlarge", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 537, + "data_size": 22189996802, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.038, 0.004, 0.004], + [0.025, 0.003, 0.014], + [0.12, 0.051, 0.051], + [0.177, 0.063, 0.058], + [0.538, 0.289, 0.291], + [0.813, 0.421, 0.417], + [0.074, 0.042, 0.022], + [0.098, 0.049, 0.037], + [0.642, 0.579, 0.532], + [0.86, 0.64, 0.639], + [1.114, 0.178, 0.159], + [0.475, 0.188, 0.167], + [0.927, 0.429, 0.437], + [1.986, 0.649, 0.632], + [1.183, 0.509, 0.52], + [0.42, 0.332, 0.336], + [2.112, 1.245, 1.22], + [1.675, 0.545, 0.539], + [4.224, 2.255, 2.265], + [0.126, 0.039, 0.055], + [10.832, 0.536, 0.549], + [12.396, 0.688, 0.683], + [14.594, 1.03, 1.064], + [1.703, 0.176, 0.17], + [0.896, 0.055, 0.068], + [0.804, 0.183, 0.202], + [0.892, 0.082, 0.071], + [0.325, 0.115, 0.118], + [9.576, 1.934, 2.001], + [0.125, 0.062, 0.058], + [0.591, 0.288, 0.273], + [3.762, 0.411, 0.395], + [5.057, 2.485, 2.482], + [11.468, 2.113, 2.123], + [11.43, 2.095, 2.123], + [0.36, 0.293, 0.286], + [0.363, 0.076, 0.061], + [0.286, 0.068, 0.039], + [0.127, 0.057, 0.064], + [0.221, 0.118, 0.107], + [0.128, 0.049, 0.049], + [0.122, 0.043, 0.041], + [0.108, 0.045, 0.038] +] + } + \ No newline at end of file diff --git a/chdb-rc-no-final-lz4-i1/results/20261008/c6a.large.json b/chdb-rc-no-final-lz4-i1/results/20261008/c6a.large.json new file mode 100644 index 0000000000..c82bd0e57e --- /dev/null +++ b/chdb-rc-no-final-lz4-i1/results/20261008/c6a.large.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc, no FINAL, LZ4, insert threads 1)", + "date": "2026-10-08", + "machine": "c6a.large", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 957, + "data_size": 15258004050, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.021, 0.009, 0.012], + [0.023, 0.005, 0.007], + [0.592, 0.484, 0.543], + [1.197, 0.975, 0.867], + [3.658, 3.672, 3.705], + [7.151, 6.701, 6.508], + [0.27, 0.291, 0.269], + [0.233, 0.135, 0.125], + [7.382, 7.518, 7.191], + [8.46, 8.202, 8.584], + [2.555, 2.443, 2.268], + [3.039, 2.94, 3.023], + [8.496, 8.161, 7.88], + [11.798, 11.684, 11.805], + [9.768, 9.663, 10.184], + [4.5, 4.309, 4.472], + [44.859, 44.832, 45.157], + [10.679, 10.199, 10.318], + [72.658, 62.017, 61.732], + [0.547, 0.321, 0.241], + [14.133, 12.009, 12.231], + [16.801, 15.125, 15.162], + [22.465, 20.259, 19.703], + [3.54, 2.297, 2.055], + [1.29, 0.674, 0.684], + [4.155, 3.321, 3.296], + [1.33, 0.684, 0.637], + [2.515, 1.887, 1.882], + [40.758, 40.61, 40.412], + [0.414, 0.329, 0.354], + [4.107, 3.758, 3.639], + [6.663, 5.06, 4.832], + [81.902, 80.131, 79.326], + [58.182, 59.088, 59.024], + [58.858, 58.531, 58.397], + [3.234, 3.029, 2.964], + [0.507, 0.396, 0.371], + [0.327, 0.236, 0.193], + [0.305, 0.182, 0.134], + [1.034, 0.796, 0.831], + [0.207, 0.087, 0.087], + [0.17, 0.082, 0.064], + [0.214, 0.074, 0.06] +] + } + \ No newline at end of file diff --git a/chdb-rc-no-final-lz4-i1/results/20261008/c6a.metal.json b/chdb-rc-no-final-lz4-i1/results/20261008/c6a.metal.json new file mode 100644 index 0000000000..4b56af0402 --- /dev/null +++ b/chdb-rc-no-final-lz4-i1/results/20261008/c6a.metal.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc, no FINAL, LZ4, insert threads 1)", + "date": "2026-10-08", + "machine": "c6a.metal", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 168, + "data_size": 16649907112, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.018, 0.006, 0.007], + [0.017, 0.004, 0.003], + [0.097, 0.036, 0.032], + [0.151, 0.044, 0.05], + [0.188, 0.101, 0.108], + [0.666, 0.151, 0.163], + [0.063, 0.031, 0.032], + [0.079, 0.032, 0.028], + [0.563, 0.333, 0.326], + [0.802, 0.363, 0.363], + [0.286, 0.14, 0.138], + [0.3, 0.137, 0.134], + [0.736, 0.151, 0.156], + [1.565, 0.201, 0.2], + [0.904, 0.168, 0.166], + [0.208, 0.1, 0.123], + [1.58, 0.283, 0.279], + [1.501, 0.131, 0.131], + [3.091, 0.446, 0.454], + [0.116, 0.03, 0.03], + [10.065, 0.162, 0.159], + [11.658, 0.169, 0.174], + [14.253, 0.209, 0.224], + [2.356, 0.15, 0.139], + [0.879, 0.064, 0.052], + [0.614, 0.094, 0.078], + [0.892, 0.061, 0.069], + [0.212, 0.072, 0.071], + [8.808, 0.458, 0.423], + [0.113, 0.048, 0.046], + [0.548, 0.115, 0.118], + [3.32, 0.151, 0.159], + [3.383, 0.569, 0.49], + [10.317, 0.655, 0.575], + [10.262, 0.666, 0.601], + [0.205, 0.093, 0.097], + [0.126, 0.061, 0.051], + [0.093, 0.046, 0.039], + [0.124, 0.039, 0.043], + [0.174, 0.097, 0.086], + [0.11, 0.032, 0.041], + [0.121, 0.038, 0.041], + [0.107, 0.037, 0.041] +] + } + \ No newline at end of file diff --git a/chdb-rc-no-final-lz4-i1/results/20261008/c6a.xlarge.json b/chdb-rc-no-final-lz4-i1/results/20261008/c6a.xlarge.json new file mode 100644 index 0000000000..018e9396ee --- /dev/null +++ b/chdb-rc-no-final-lz4-i1/results/20261008/c6a.xlarge.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc, no FINAL, LZ4, insert threads 1)", + "date": "2026-10-08", + "machine": "c6a.xlarge", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 604, + "data_size": 24802360947, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.077, 0.057, 0.042], + [0.064, 0.009, 0.031], + [0.382, 0.213, 0.204], + [0.531, 0.231, 0.248], + [1.274, 1.084, 1.094], + [2.001, 1.722, 1.742], + [0.313, 0.164, 0.107], + [0.297, 0.115, 0.155], + [1.983, 1.714, 1.729], + [2.164, 1.995, 2.015], + [0.744, 0.494, 0.48], + [0.931, 0.469, 0.566], + [1.82, 1.415, 1.539], + [2.608, 2.022, 1.896], + [2.035, 1.733, 1.76], + [1.265, 0.982, 0.971], + [3.528, 3.309, 3.402], + [2.083, 1.54, 1.566], + [17.211, 17.711, 18.28], + [0.437, 0.147, 0.182], + [13.079, 2.24, 2.189], + [15.039, 2.676, 2.616], + [17.102, 3.309, 3.33], + [2.088, 0.437, 0.525], + [1.11, 0.287, 0.247], + [1.335, 0.663, 0.666], + [1.175, 0.179, 0.251], + [0.954, 0.575, 0.469], + [12.501, 6.088, 5.946], + [0.442, 0.218, 0.241], + [1.317, 0.973, 1.021], + [4.459, 1.187, 1.178], + [28.668, 27.158, 27.306], + [31.558, 30.285, 30.9], + [30.874, 30.532, 32.569], + [1.212, 1.02, 0.958], + [0.46, 0.211, 0.244], + [0.341, 0.181, 0.208], + [0.319, 0.161, 0.158], + [0.589, 0.333, 0.378], + [0.278, 0.169, 0.141], + [0.295, 0.129, 0.172], + [0.26, 0.162, 0.17] +] + } + \ No newline at end of file diff --git a/chdb-rc-no-final-lz4-i1/results/20261008/c7a.metal-48xl.json b/chdb-rc-no-final-lz4-i1/results/20261008/c7a.metal-48xl.json new file mode 100644 index 0000000000..6f9e0d5cad --- /dev/null +++ b/chdb-rc-no-final-lz4-i1/results/20261008/c7a.metal-48xl.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc, no FINAL, LZ4, insert threads 1)", + "date": "2026-10-08", + "machine": "c7a.metal-48xl", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 163, + "data_size": 15264881861, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.016, 0.006, 0.006], + [0.016, 0.003, 0.003], + [0.09, 0.046, 0.035], + [0.353, 0.046, 0.055], + [0.245, 0.104, 0.101], + [0.653, 0.126, 0.128], + [0.061, 0.03, 0.026], + [0.071, 0.03, 0.034], + [0.511, 0.328, 0.321], + [0.757, 0.358, 0.363], + [0.259, 0.13, 0.132], + [0.393, 0.132, 0.131], + [0.734, 0.117, 0.123], + [1.549, 0.153, 0.149], + [0.909, 0.128, 0.141], + [0.2, 0.09, 0.087], + [1.511, 0.202, 0.193], + [1.49, 0.104, 0.094], + [3.01, 0.326, 0.331], + [0.095, 0.031, 0.035], + [10.06, 0.131, 0.124], + [11.654, 0.148, 0.154], + [14.419, 0.158, 0.163], + [2.108, 0.155, 0.151], + [0.875, 0.065, 0.07], + [0.605, 0.079, 0.08], + [0.888, 0.069, 0.065], + [0.316, 0.067, 0.074], + [8.812, 0.301, 0.312], + [0.108, 0.041, 0.046], + [0.414, 0.115, 0.105], + [3.306, 0.126, 0.125], + [3.255, 0.33, 0.334], + [10.246, 0.454, 0.419], + [10.368, 0.426, 0.46], + [0.21, 0.092, 0.078], + [0.118, 0.045, 0.045], + [0.106, 0.026, 0.048], + [0.144, 0.034, 0.042], + [0.182, 0.077, 0.082], + [0.107, 0.04, 0.033], + [0.1, 0.044, 0.035], + [0.101, 0.035, 0.032] +] + } + \ No newline at end of file diff --git a/chdb-rc-no-final-lz4-i1/results/20261008/c8g.4xlarge.json b/chdb-rc-no-final-lz4-i1/results/20261008/c8g.4xlarge.json new file mode 100644 index 0000000000..b1c21ff4ea --- /dev/null +++ b/chdb-rc-no-final-lz4-i1/results/20261008/c8g.4xlarge.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc, no FINAL, LZ4, insert threads 1)", + "date": "2026-10-08", + "machine": "c8g.4xlarge", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 535, + "data_size": 24705891673, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.016, 0.005, 0.003], + [0.016, 0.007, 0.005], + [0.079, 0.042, 0.046], + [0.251, 0.048, 0.051], + [0.288, 0.181, 0.179], + [0.92, 0.213, 0.222], + [0.052, 0.019, 0.029], + [0.071, 0.036, 0.038], + [0.639, 0.318, 0.283], + [0.842, 0.368, 0.362], + [0.397, 0.141, 0.13], + [0.465, 0.125, 0.146], + [0.952, 0.232, 0.214], + [1.852, 0.314, 0.3], + [1.143, 0.255, 0.273], + [0.315, 0.167, 0.163], + [1.893, 0.48, 0.49], + [1.784, 0.212, 0.199], + [3.459, 0.761, 0.758], + [0.097, 0.035, 0.041], + [10.783, 0.353, 0.33], + [12.347, 0.397, 0.414], + [14.749, 0.513, 0.506], + [1.932, 0.148, 0.12], + [0.922, 0.061, 0.058], + [0.877, 0.119, 0.114], + [0.94, 0.047, 0.044], + [0.412, 0.091, 0.094], + [9.303, 0.871, 0.871], + [0.088, 0.04, 0.043], + [0.667, 0.162, 0.164], + [3.69, 0.215, 0.205], + [4.022, 0.911, 0.92], + [11.007, 0.982, 0.987], + [11.019, 0.976, 0.972], + [0.204, 0.152, 0.149], + [0.101, 0.049, 0.058], + [0.08, 0.052, 0.058], + [0.1, 0.041, 0.043], + [0.138, 0.074, 0.077], + [0.089, 0.029, 0.038], + [0.084, 0.038, 0.033], + [0.073, 0.026, 0.04] +] + } + \ No newline at end of file diff --git a/chdb-rc-no-final-lz4-i1/results/20261008/c8g.metal-48xl.json b/chdb-rc-no-final-lz4-i1/results/20261008/c8g.metal-48xl.json new file mode 100644 index 0000000000..b4de391dfd --- /dev/null +++ b/chdb-rc-no-final-lz4-i1/results/20261008/c8g.metal-48xl.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc, no FINAL, LZ4, insert threads 1)", + "date": "2026-10-08", + "machine": "c8g.metal-48xl", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 162, + "data_size": 29574979056, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.02, 0.011, 0.011], + [0.016, 0.007, 0.007], + [0.254, 0.043, 0.03], + [0.724, 0.036, 0.047], + [0.744, 0.092, 0.096], + [1.416, 0.108, 0.111], + [0.042, 0.029, 0.03], + [0.194, 0.025, 0.032], + [1.298, 0.288, 0.27], + [1.613, 0.283, 0.289], + [1.004, 0.11, 0.116], + [1.192, 0.118, 0.119], + [1.415, 0.123, 0.117], + [2.061, 0.162, 0.17], + [1.649, 0.128, 0.135], + [0.885, 0.09, 0.084], + [2.075, 0.219, 0.215], + [2.048, 0.114, 0.117], + [3.304, 0.367, 0.351], + [0.481, 0.038, 0.03], + [9.887, 0.146, 0.138], + [11.402, 0.167, 0.166], + [14.192, 0.192, 0.203], + [2.654, 0.12, 0.117], + [1.427, 0.052, 0.061], + [1.394, 0.076, 0.07], + [1.348, 0.05, 0.061], + [1.044, 0.059, 0.074], + [8.477, 0.305, 0.302], + [0.385, 0.038, 0.045], + [1.415, 0.099, 0.098], + [3.334, 0.125, 0.114], + [3.325, 0.393, 0.379], + [9.918, 0.4, 0.359], + [9.984, 0.377, 0.408], + [0.794, 0.067, 0.084], + [0.341, 0.049, 0.047], + [0.257, 0.033, 0.037], + [0.313, 0.041, 0.043], + [0.438, 0.076, 0.07], + [0.283, 0.042, 0.038], + [0.273, 0.032, 0.036], + [0.243, 0.027, 0.021] +] + } + \ No newline at end of file diff --git a/chdb-rc-no-final-lz4-i1/results/20261009/c6a.2xlarge.json b/chdb-rc-no-final-lz4-i1/results/20261009/c6a.2xlarge.json new file mode 100644 index 0000000000..2948424180 --- /dev/null +++ b/chdb-rc-no-final-lz4-i1/results/20261009/c6a.2xlarge.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc, no FINAL, LZ4, insert threads 1)", + "date": "2026-10-09", + "machine": "c6a.2xlarge", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 582, + "data_size": 24802359492, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.028, 0.023, 0.019], + [0.044, 0.02, 0.007], + [0.201, 0.113, 0.129], + [0.263, 0.127, 0.136], + [0.711, 0.572, 0.599], + [1.003, 0.783, 0.829], + [0.117, 0.07, 0.086], + [0.172, 0.088, 0.077], + [0.979, 0.856, 0.858], + [1.074, 0.934, 0.918], + [0.39, 0.234, 0.213], + [0.438, 0.24, 0.264], + [1.032, 0.676, 0.689], + [2.066, 0.985, 0.971], + [1.203, 0.823, 0.821], + [0.601, 0.473, 0.494], + [2.263, 1.687, 1.787], + [1.715, 0.696, 0.69], + [4.447, 2.8, 2.867], + [0.22, 0.081, 0.1], + [10.675, 0.959, 0.963], + [12.199, 1.169, 1.16], + [14.93, 1.485, 1.519], + [1.652, 0.252, 0.273], + [0.883, 0.122, 0.137], + [0.829, 0.258, 0.312], + [0.892, 0.151, 0.114], + [0.406, 0.219, 0.241], + [9.51, 2.719, 2.752], + [0.188, 0.11, 0.115], + [0.683, 0.443, 0.463], + [3.859, 0.624, 0.57], + [6.054, 3.637, 3.728], + [11.535, 3.575, 3.554], + [11.508, 10.4, 3.448], + [0.582, 0.485, 0.485], + [0.237, 0.122, 0.114], + [0.193, 0.131, 0.11], + [0.202, 0.118, 0.098], + [0.329, 0.193, 0.177], + [0.19, 0.097, 0.07], + [0.188, 0.077, 0.065], + [0.159, 0.08, 0.116] +] + } + \ No newline at end of file diff --git a/chdb-rc-no-final-lz4-i1/results/20261009/c6a.4xlarge.json b/chdb-rc-no-final-lz4-i1/results/20261009/c6a.4xlarge.json new file mode 100644 index 0000000000..700b71e320 --- /dev/null +++ b/chdb-rc-no-final-lz4-i1/results/20261009/c6a.4xlarge.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc, no FINAL, LZ4, insert threads 1)", + "date": "2026-10-09", + "machine": "c6a.4xlarge", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 529, + "data_size": 24911306247, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.018, 0.006, 0.011], + [0.025, 0.008, 0.006], + [0.143, 0.071, 0.048], + [0.547, 0.074, 0.071], + [0.46, 0.299, 0.297], + [0.928, 0.426, 0.412], + [0.146, 0.051, 0.045], + [0.106, 0.049, 0.062], + [0.812, 0.595, 0.566], + [0.959, 0.6, 0.61], + [0.453, 0.177, 0.213], + [0.53, 0.205, 0.199], + [0.948, 0.45, 0.459], + [1.897, 0.66, 0.667], + [1.113, 0.509, 0.523], + [0.499, 0.347, 0.343], + [2.036, 1.273, 1.267], + [1.596, 0.565, 0.575], + [4.151, 2.304, 2.271], + [0.304, 0.065, 0.036], + [10.118, 0.58, 0.584], + [11.633, 0.698, 0.706], + [14.274, 1.08, 1.063], + [1.818, 0.189, 0.183], + [0.87, 0.094, 0.084], + [0.808, 0.203, 0.208], + [0.873, 0.071, 0.089], + [0.48, 0.125, 0.131], + [8.977, 2.042, 2.039], + [0.152, 0.069, 0.062], + [0.731, 0.286, 0.283], + [3.697, 0.423, 0.416], + [4.948, 2.492, 2.463], + [10.763, 2.136, 2.128], + [10.704, 2.136, 2.129], + [0.367, 0.269, 0.274], + [0.164, 0.087, 0.088], + [0.15, 0.059, 0.042], + [0.156, 0.071, 0.062], + [0.239, 0.138, 0.122], + [0.159, 0.06, 0.059], + [0.119, 0.066, 0.047], + [0.156, 0.046, 0.056] +] + } + \ No newline at end of file diff --git a/chdb-rc-no-final-lz4-i1/results/20261009/c6a.large.json b/chdb-rc-no-final-lz4-i1/results/20261009/c6a.large.json new file mode 100644 index 0000000000..1c0d82aeac --- /dev/null +++ b/chdb-rc-no-final-lz4-i1/results/20261009/c6a.large.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc, no FINAL, LZ4, insert threads 1)", + "date": "2026-10-09", + "machine": "c6a.large", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 972, + "data_size": 15259942560, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.022, 0.007, 0.012], + [0.026, 0.003, 0.01], + [0.623, 0.509, 0.467], + [1.111, 0.992, 0.957], + [3.818, 3.676, 3.761], + [7.163, 6.892, 6.651], + [0.296, 0.306, 0.283], + [0.237, 0.159, 0.14], + [7.351, 7.003, 7.303], + [8.604, 8.297, 8.361], + [2.681, 2.414, 2.42], + [3.163, 3.08, 2.943], + [8.495, 8.503, 8.228], + [12.162, 12.328, 12.402], + [9.972, 9.273, 10.044], + [4.636, 4.526, 4.533], + [45.262, 44.97, 44.844], + [10.956, 10.24, 10.633], + [72.48, 62.62, 62.671], + [0.558, 0.24, 0.253], + [14.358, 12.461, 12.508], + [16.843, 15.16, 15.51], + [21.275, 20.195, 19.6], + [3.666, 2.314, 2.311], + [1.326, 0.682, 0.68], + [4.138, 3.427, 3.332], + [1.342, 0.649, 0.665], + [2.429, 1.793, 1.945], + [40.012, 40.652, 40.437], + [0.455, 0.367, 0.386], + [4.195, 3.959, 3.69], + [6.687, 5.25, 5.021], + [82.537, 82.185, 84.075], + [58.127, 57.962, 58.156], + [57.816, 58.061, 58.881], + [3.576, 3.083, 3.07], + [0.542, 0.326, 0.326], + [0.31, 0.191, 0.251], + [0.296, 0.127, 0.139], + [1.099, 0.819, 0.801], + [0.213, 0.094, 0.096], + [0.171, 0.08, 0.064], + [0.155, 0.073, 0.075] +] + } + \ No newline at end of file diff --git a/chdb-rc-no-final-lz4-i1/results/20261009/c6a.metal.json b/chdb-rc-no-final-lz4-i1/results/20261009/c6a.metal.json new file mode 100644 index 0000000000..c7db5f1538 --- /dev/null +++ b/chdb-rc-no-final-lz4-i1/results/20261009/c6a.metal.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc, no FINAL, LZ4, insert threads 1)", + "date": "2026-10-09", + "machine": "c6a.metal", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 169, + "data_size": 15265147145, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.017, 0.006, 0.006], + [0.016, 0.004, 0.003], + [0.103, 0.039, 0.044], + [0.579, 0.035, 0.046], + [0.214, 0.114, 0.129], + [0.669, 0.162, 0.137], + [0.052, 0.032, 0.027], + [0.067, 0.036, 0.04], + [0.548, 0.329, 0.345], + [0.737, 0.378, 0.353], + [0.333, 0.138, 0.135], + [0.262, 0.139, 0.143], + [0.712, 0.142, 0.161], + [1.552, 0.206, 0.194], + [0.909, 0.169, 0.175], + [0.209, 0.097, 0.093], + [1.578, 0.267, 0.259], + [1.509, 0.119, 0.138], + [3.081, 0.435, 0.474], + [0.096, 0.029, 0.029], + [10.072, 0.153, 0.149], + [11.65, 0.176, 0.185], + [14.245, 0.207, 0.282], + [1.798, 0.134, 0.137], + [0.876, 0.07, 0.072], + [0.624, 0.083, 0.077], + [0.88, 0.081, 0.067], + [0.284, 0.077, 0.068], + [8.747, 0.445, 0.492], + [0.092, 0.041, 0.045], + [0.47, 0.123, 0.125], + [3.331, 0.147, 0.145], + [3.375, 0.487, 0.474], + [10.38, 0.594, 0.606], + [10.5, 0.599, 0.615], + [0.171, 0.087, 0.102], + [0.127, 0.062, 0.06], + [0.097, 0.043, 0.045], + [0.125, 0.045, 0.039], + [0.178, 0.087, 0.081], + [0.106, 0.04, 0.038], + [0.111, 0.034, 0.033], + [0.093, 0.031, 0.031] +] + } + \ No newline at end of file diff --git a/chdb-rc-no-final-lz4-i1/results/20261009/c6a.xlarge.json b/chdb-rc-no-final-lz4-i1/results/20261009/c6a.xlarge.json new file mode 100644 index 0000000000..71e45949fd --- /dev/null +++ b/chdb-rc-no-final-lz4-i1/results/20261009/c6a.xlarge.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc, no FINAL, LZ4, insert threads 1)", + "date": "2026-10-09", + "machine": "c6a.xlarge", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 613, + "data_size": 15260551403, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.072, 0.019, 0.054], + [0.039, 0.032, 0.024], + [0.502, 0.194, 0.179], + [0.572, 0.236, 0.282], + [1.242, 1.081, 1.097], + [2.025, 1.75, 1.792], + [0.262, 0.107, 0.19], + [0.336, 0.164, 0.193], + [2.005, 1.814, 1.802], + [2.167, 1.99, 2.031], + [0.756, 0.517, 0.519], + [0.846, 0.609, 0.583], + [1.777, 1.429, 1.451], + [2.686, 2.065, 1.986], + [1.937, 1.718, 1.809], + [1.198, 1.002, 0.994], + [3.694, 3.457, 3.457], + [2.222, 1.551, 1.513], + [17.675, 17.992, 18.551], + [0.357, 0.165, 0.153], + [13.386, 2.272, 2.162], + [15.087, 2.734, 2.726], + [17.738, 3.429, 3.439], + [2.006, 0.55, 0.489], + [1.113, 0.292, 0.261], + [1.104, 0.707, 0.753], + [1.095, 0.257, 0.287], + [0.784, 0.505, 0.419], + [12.823, 6.223, 6.044], + [0.371, 0.271, 0.287], + [1.259, 0.967, 0.96], + [4.413, 1.296, 1.267], + [28.623, 27.827, 27.896], + [30.387, 31.388, 33.533], + [31.1, 30.941, 33.153], + [1.008, 0.89, 0.881], + [0.244, 0.112, 0.108], + [0.159, 0.068, 0.059], + [0.178, 0.052, 0.049], + [0.42, 0.25, 0.256], + [0.136, 0.03, 0.032], + [0.117, 0.026, 0.028], + [0.11, 0.022, 0.025] +] + } + \ No newline at end of file diff --git a/chdb-rc-no-final-lz4-i1/results/20261009/c7a.metal-48xl.json b/chdb-rc-no-final-lz4-i1/results/20261009/c7a.metal-48xl.json new file mode 100644 index 0000000000..d9cdc0ef39 --- /dev/null +++ b/chdb-rc-no-final-lz4-i1/results/20261009/c7a.metal-48xl.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc, no FINAL, LZ4, insert threads 1)", + "date": "2026-10-09", + "machine": "c7a.metal-48xl", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 191, + "data_size": 36678138139, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.017, 0.006, 0.006], + [0.022, 0.006, 0.003], + [0.152, 0.056, 0.054], + [0.643, 0.05, 0.057], + [0.656, 0.12, 0.123], + [1.568, 0.138, 0.14], + [0.087, 0.037, 0.043], + [0.188, 0.037, 0.035], + [1.471, 0.346, 0.353], + [1.755, 0.361, 0.352], + [1.171, 0.141, 0.138], + [1.395, 0.139, 0.14], + [1.601, 0.124, 0.125], + [2.394, 0.167, 0.172], + [1.797, 0.148, 0.141], + [0.945, 0.107, 0.091], + [2.32, 0.195, 0.193], + [2.155, 0.1, 0.107], + [3.345, 0.327, 0.304], + [0.467, 0.039, 0.031], + [10.183, 0.128, 0.14], + [11.735, 0.165, 0.154], + [14.531, 0.177, 0.173], + [3.106, 0.146, 0.167], + [1.503, 0.068, 0.07], + [1.537, 0.092, 0.086], + [1.532, 0.066, 0.07], + [1.164, 0.086, 0.083], + [9.114, 0.31, 0.308], + [0.367, 0.061, 0.073], + [1.477, 0.111, 0.12], + [3.431, 0.131, 0.141], + [3.371, 0.336, 0.328], + [10.444, 0.439, 0.429], + [10.408, 0.458, 0.444], + [0.689, 0.101, 0.082], + [0.46, 0.057, 0.058], + [0.43, 0.038, 0.042], + [0.474, 0.05, 0.044], + [0.629, 0.082, 0.084], + [0.413, 0.039, 0.038], + [0.402, 0.045, 0.034], + [0.303, 0.038, 0.03] +] + } + \ No newline at end of file diff --git a/chdb-rc-no-final-lz4-i1/results/20261009/c8g.4xlarge.json b/chdb-rc-no-final-lz4-i1/results/20261009/c8g.4xlarge.json new file mode 100644 index 0000000000..4760692cc9 --- /dev/null +++ b/chdb-rc-no-final-lz4-i1/results/20261009/c8g.4xlarge.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc, no FINAL, LZ4, insert threads 1)", + "date": "2026-10-09", + "machine": "c8g.4xlarge", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 529, + "data_size": 22189996802, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.02, 0.003, 0.007], + [0.022, 0.002, 0.002], + [0.082, 0.029, 0.033], + [0.168, 0.049, 0.047], + [0.263, 0.164, 0.167], + [0.882, 0.199, 0.224], + [0.047, 0.023, 0.025], + [0.07, 0.038, 0.024], + [0.551, 0.318, 0.312], + [0.739, 0.349, 0.32], + [0.277, 0.117, 0.12], + [0.491, 0.131, 0.14], + [0.964, 0.217, 0.201], + [1.789, 0.313, 0.311], + [1.095, 0.243, 0.267], + [0.335, 0.167, 0.146], + [1.855, 0.48, 0.475], + [1.729, 0.209, 0.211], + [3.932, 0.764, 0.772], + [0.208, 0.026, 0.031], + [10.845, 0.364, 0.354], + [12.418, 0.406, 0.404], + [14.611, 0.504, 0.494], + [1.759, 0.122, 0.119], + [0.897, 0.053, 0.05], + [0.796, 0.113, 0.11], + [0.896, 0.064, 0.054], + [0.351, 0.077, 0.084], + [9.366, 0.877, 0.885], + [0.087, 0.036, 0.043], + [0.564, 0.161, 0.142], + [3.688, 0.223, 0.223], + [4.051, 0.931, 0.93], + [11.112, 0.996, 0.998], + [11.067, 1.003, 0.989], + [0.382, 0.151, 0.148], + [0.095, 0.054, 0.051], + [0.083, 0.044, 0.04], + [0.097, 0.034, 0.035], + [0.264, 0.076, 0.075], + [0.081, 0.031, 0.021], + [0.131, 0.022, 0.036], + [0.08, 0.023, 0.031] +] + } + \ No newline at end of file diff --git a/chdb-rc-no-final-lz4-i1/results/20261009/c8g.metal-48xl.json b/chdb-rc-no-final-lz4-i1/results/20261009/c8g.metal-48xl.json new file mode 100644 index 0000000000..4036e36950 --- /dev/null +++ b/chdb-rc-no-final-lz4-i1/results/20261009/c8g.metal-48xl.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc, no FINAL, LZ4, insert threads 1)", + "date": "2026-10-09", + "machine": "c8g.metal-48xl", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 161, + "data_size": 29363466486, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.027, 0.017, 0.018], + [0.019, 0.01, 0.009], + [0.487, 0.046, 0.043], + [0.837, 0.053, 0.047], + [0.869, 0.12, 0.102], + [1.476, 0.117, 0.117], + [0.068, 0.035, 0.035], + [0.347, 0.041, 0.043], + [1.356, 0.259, 0.275], + [1.743, 0.293, 0.294], + [1.117, 0.13, 0.118], + [1.268, 0.112, 0.119], + [1.467, 0.12, 0.124], + [2.147, 0.166, 0.158], + [1.703, 0.127, 0.142], + [0.899, 0.096, 0.098], + [2.105, 0.234, 0.215], + [2.076, 0.122, 0.121], + [3.239, 0.353, 0.379], + [0.58, 0.038, 0.036], + [9.783, 0.149, 0.151], + [11.373, 0.168, 0.156], + [14.213, 0.208, 0.215], + [2.755, 0.129, 0.12], + [1.453, 0.06, 0.064], + [1.399, 0.072, 0.088], + [1.435, 0.059, 0.051], + [1.053, 0.072, 0.076], + [8.59, 0.315, 0.314], + [0.256, 0.048, 0.04], + [1.514, 0.11, 0.104], + [3.348, 0.127, 0.136], + [3.343, 0.394, 0.397], + [9.931, 0.391, 0.387], + [9.953, 0.407, 0.376], + [0.598, 0.084, 0.077], + [0.329, 0.068, 0.049], + [0.313, 0.051, 0.043], + [0.353, 0.045, 0.045], + [0.478, 0.074, 0.073], + [0.304, 0.041, 0.037], + [0.297, 0.038, 0.044], + [0.261, 0.035, 0.039] +] + } + \ No newline at end of file diff --git a/chdb-rc-no-final-lz4-i1/results/20261009/t3a.small.json b/chdb-rc-no-final-lz4-i1/results/20261009/t3a.small.json new file mode 100644 index 0000000000..b13c1d5613 --- /dev/null +++ b/chdb-rc-no-final-lz4-i1/results/20261009/t3a.small.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc, no FINAL, LZ4, insert threads 1)", + "date": "2026-10-09", + "machine": "t3a.small", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 1502, + "data_size": 15260262183, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.244, 0.163, 0.233], + [0.107, 0.294, 0.096], + [1.285, 1.083, 0.84], + [2.328, 1.78, 1.708], + [5.546, 4.926, 5.167], + [11.538, 10.939, 10.987], + [0.795, 0.597, 0.607], + [0.743, 0.278, 0.425], + [11.432, 11.638, 12.09], + [13.876, 12.937, 13.327], + [4.172, 3.384, 3.851], + [5.059, 4.304, 4.331], + [12.249, 12.403, 12.112], + [37.546, 37.044, 38.679], + [27.562, 28.095, 27.944], + [13.17, 13.013, 13.38], + [60.636, 61.252, 61.099], + [17.15, 16.701, 17.216], + [109.936, 108.307, 108.082], + [1.127, 0.638, 0.611], + [30.857, 31.069, 30.56], + [36.942, 38.545, 38.585], + [47.245, 46.388, 46.351], + [7.78, 5.027, 5.282], + [2.657, 1.447, 1.304], + [8.05, 7.572, 7.596], + [2.686, 1.448, 1.427], + [4.547, 4.094, 4.013], + [83.788, 88.246, 85.254], + [0.817, 0.703, 0.692], + [7.677, 7.553, 7.563], + [27.747, 29.81, 28.352], + [151.721, 157.371, 157.221], + [122.926, 127.21, 122.33], + [191.793, 866.635, 873.32], + [32.083, 7.442, 4.466], + [5.481, 0.721, 0.705], + [2.442, 0.491, 0.482], + [5.484, 0.281, 0.324], + [8.76, 1.541, 1.419], + [3.169, 0.168, 0.156], + [2.4, 0.153, 0.14], + [1.977, 0.153, 0.141] +] + } + \ No newline at end of file diff --git a/chdb-rc-no-final-lz4-i1/start b/chdb-rc-no-final-lz4-i1/start new file mode 100755 index 0000000000..71836e5f8f --- /dev/null +++ b/chdb-rc-no-final-lz4-i1/start @@ -0,0 +1,3 @@ +#!/bin/bash +# chdb is an embedded library — no daemon to start. +exit 0 diff --git a/chdb-rc-no-final-lz4-i1/stop b/chdb-rc-no-final-lz4-i1/stop new file mode 100755 index 0000000000..1e5556318f --- /dev/null +++ b/chdb-rc-no-final-lz4-i1/stop @@ -0,0 +1,3 @@ +#!/bin/bash +# chdb is an embedded library — no daemon to stop. +exit 0 diff --git a/chdb-rc-no-final-lz4-i1/template.json b/chdb-rc-no-final-lz4-i1/template.json new file mode 100644 index 0000000000..f387782731 --- /dev/null +++ b/chdb-rc-no-final-lz4-i1/template.json @@ -0,0 +1,7 @@ +{ + "system": "chDB (rc, no FINAL, LZ4, insert threads 1)", + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"] +} diff --git a/chdb-rc-no-final-lz4/README.md b/chdb-rc-no-final-lz4/README.md new file mode 100644 index 0000000000..fc509190ca --- /dev/null +++ b/chdb-rc-no-final-lz4/README.md @@ -0,0 +1,7 @@ +Diagnostic copy of `chdb/` for a chdb-core release candidate. Not meant to be merged. + +- `install` pins chdb-core to the `CORE_TAG` release instead of the latest one. +- `create.sql` disables automatic statistics and forces LZ4 with adaptive codec selection off. +- The measured load does not run `OPTIMIZE TABLE ... FINAL`. +- After the measured flow, `profile` repeats the load with part_log and query_log enabled and + prints a JSON report between `=== load_profile json ===` and `=== load_profile end ===`. diff --git a/chdb-rc-no-final-lz4/benchmark.sh b/chdb-rc-no-final-lz4/benchmark.sh new file mode 100755 index 0000000000..9fc3378847 --- /dev/null +++ b/chdb-rc-no-final-lz4/benchmark.sh @@ -0,0 +1,7 @@ +#!/bin/bash +export BENCH_DOWNLOAD_SCRIPT="download-hits-csv" +export BENCH_RESTARTABLE=no +# See chdb/benchmark.sh. +export BENCH_CONCURRENT_DURATION="${BENCH_CONCURRENT_DURATION:-0}" +../lib/benchmark-common.sh +./profile diff --git a/chdb-rc-no-final-lz4/check b/chdb-rc-no-final-lz4/check new file mode 100755 index 0000000000..cd67e7c07c --- /dev/null +++ b/chdb-rc-no-final-lz4/check @@ -0,0 +1,6 @@ +#!/bin/bash +set -e + +# shellcheck disable=SC1091 +source myenv/bin/activate +python3 -c "import chdb; chdb.query('SELECT 1')" >/dev/null diff --git a/chdb-rc-no-final-lz4/create.sql b/chdb-rc-no-final-lz4/create.sql new file mode 100644 index 0000000000..f37de082fe --- /dev/null +++ b/chdb-rc-no-final-lz4/create.sql @@ -0,0 +1,118 @@ +CREATE DATABASE IF NOT EXISTS clickbench ENGINE = Atomic; + +USE clickbench; + +CREATE TABLE IF NOT EXISTS hits +( + WatchID BIGINT NOT NULL, + JavaEnable SMALLINT NOT NULL, + Title TEXT NOT NULL, + GoodEvent SMALLINT NOT NULL, + EventTime TIMESTAMP NOT NULL, + EventDate Date NOT NULL, + CounterID INTEGER NOT NULL, + ClientIP INTEGER NOT NULL, + RegionID INTEGER NOT NULL, + UserID BIGINT NOT NULL, + CounterClass SMALLINT NOT NULL, + OS SMALLINT NOT NULL, + UserAgent SMALLINT NOT NULL, + URL TEXT NOT NULL, + Referer TEXT NOT NULL, + IsRefresh SMALLINT NOT NULL, + RefererCategoryID SMALLINT NOT NULL, + RefererRegionID INTEGER NOT NULL, + URLCategoryID SMALLINT NOT NULL, + URLRegionID INTEGER NOT NULL, + ResolutionWidth SMALLINT NOT NULL, + ResolutionHeight SMALLINT NOT NULL, + ResolutionDepth SMALLINT NOT NULL, + FlashMajor SMALLINT NOT NULL, + FlashMinor SMALLINT NOT NULL, + FlashMinor2 TEXT NOT NULL, + NetMajor SMALLINT NOT NULL, + NetMinor SMALLINT NOT NULL, + UserAgentMajor SMALLINT NOT NULL, + UserAgentMinor VARCHAR(255) NOT NULL, + CookieEnable SMALLINT NOT NULL, + JavascriptEnable SMALLINT NOT NULL, + IsMobile SMALLINT NOT NULL, + MobilePhone SMALLINT NOT NULL, + MobilePhoneModel TEXT NOT NULL, + Params TEXT NOT NULL, + IPNetworkID INTEGER NOT NULL, + TraficSourceID SMALLINT NOT NULL, + SearchEngineID SMALLINT NOT NULL, + SearchPhrase TEXT NOT NULL, + AdvEngineID SMALLINT NOT NULL, + IsArtifical SMALLINT NOT NULL, + WindowClientWidth SMALLINT NOT NULL, + WindowClientHeight SMALLINT NOT NULL, + ClientTimeZone SMALLINT NOT NULL, + ClientEventTime TIMESTAMP NOT NULL, + SilverlightVersion1 SMALLINT NOT NULL, + SilverlightVersion2 SMALLINT NOT NULL, + SilverlightVersion3 INTEGER NOT NULL, + SilverlightVersion4 SMALLINT NOT NULL, + PageCharset TEXT NOT NULL, + CodeVersion INTEGER NOT NULL, + IsLink SMALLINT NOT NULL, + IsDownload SMALLINT NOT NULL, + IsNotBounce SMALLINT NOT NULL, + FUniqID BIGINT NOT NULL, + OriginalURL TEXT NOT NULL, + HID INTEGER NOT NULL, + IsOldCounter SMALLINT NOT NULL, + IsEvent SMALLINT NOT NULL, + IsParameter SMALLINT NOT NULL, + DontCountHits SMALLINT NOT NULL, + WithHash SMALLINT NOT NULL, + HitColor CHAR NOT NULL, + LocalEventTime TIMESTAMP NOT NULL, + Age SMALLINT NOT NULL, + Sex SMALLINT NOT NULL, + Income SMALLINT NOT NULL, + Interests SMALLINT NOT NULL, + Robotness SMALLINT NOT NULL, + RemoteIP INTEGER NOT NULL, + WindowName INTEGER NOT NULL, + OpenerName INTEGER NOT NULL, + HistoryLength SMALLINT NOT NULL, + BrowserLanguage TEXT NOT NULL, + BrowserCountry TEXT NOT NULL, + SocialNetwork TEXT NOT NULL, + SocialAction TEXT NOT NULL, + HTTPError SMALLINT NOT NULL, + SendTiming INTEGER NOT NULL, + DNSTiming INTEGER NOT NULL, + ConnectTiming INTEGER NOT NULL, + ResponseStartTiming INTEGER NOT NULL, + ResponseEndTiming INTEGER NOT NULL, + FetchTiming INTEGER NOT NULL, + SocialSourceNetworkID SMALLINT NOT NULL, + SocialSourcePage TEXT NOT NULL, + ParamPrice BIGINT NOT NULL, + ParamOrderID TEXT NOT NULL, + ParamCurrency TEXT NOT NULL, + ParamCurrencyID SMALLINT NOT NULL, + OpenstatServiceName TEXT NOT NULL, + OpenstatCampaignID TEXT NOT NULL, + OpenstatAdID TEXT NOT NULL, + OpenstatSourceID TEXT NOT NULL, + UTMSource TEXT NOT NULL, + UTMMedium TEXT NOT NULL, + UTMCampaign TEXT NOT NULL, + UTMContent TEXT NOT NULL, + UTMTerm TEXT NOT NULL, + FromTag TEXT NOT NULL, + HasGCLID SMALLINT NOT NULL, + RefererHash BIGINT NOT NULL, + URLHash BIGINT NOT NULL, + CLID INTEGER NOT NULL, + PRIMARY KEY (CounterID, EventDate, UserID, EventTime, WatchID) +) +ENGINE = MergeTree +SETTINGS + auto_statistics_types = '', + default_compression_codec = 'LZ4', + enable_adaptive_codec_selection = 0; diff --git a/chdb-rc-no-final-lz4/data-size b/chdb-rc-no-final-lz4/data-size new file mode 100755 index 0000000000..226c121b8f --- /dev/null +++ b/chdb-rc-no-final-lz4/data-size @@ -0,0 +1,4 @@ +#!/bin/bash +set -e + +du -bcs .clickbench | awk '/total$/ { print $1 }' diff --git a/chdb-rc-no-final-lz4/insert.sql b/chdb-rc-no-final-lz4/insert.sql new file mode 100644 index 0000000000..c9cbb59a1f --- /dev/null +++ b/chdb-rc-no-final-lz4/insert.sql @@ -0,0 +1,3 @@ +INSERT INTO clickbench.hits +SELECT * +FROM file('hits.csv'); diff --git a/chdb-rc-no-final-lz4/install b/chdb-rc-no-final-lz4/install new file mode 100755 index 0000000000..a381dee031 --- /dev/null +++ b/chdb-rc-no-final-lz4/install @@ -0,0 +1,53 @@ +#!/bin/bash +set -euo pipefail + +# Candidate chdb-core build under test; the stock chdb entry installs the latest release. +CORE_TAG=v26.9.1-rc.1 + +sudo apt-get update -y +sudo apt-get install -y python3-pip python3-venv + +if [ ! -d myenv ]; then + python3 -m venv myenv +fi + +# shellcheck disable=SC1091 +source myenv/bin/activate + +pip install --upgrade pip +pip install psutil pyarrow "chdb==4.4.0" + +wheel_url=$(python3 - "$CORE_TAG" <<'PY' +import json +import platform +import sys +import urllib.request + +tag = sys.argv[1] +release = json.load(urllib.request.urlopen( + f"https://api.github.com/repos/chdb-io/chdb-core/releases/tags/{tag}", timeout=30)) +arch = platform.machine() +for asset in release["assets"]: + name = asset["name"] + if name.endswith(".whl") and "_lite" not in name and "linux" in name and arch in name: + print(asset["browser_download_url"]) + break +else: + raise SystemExit(f"no full Linux wheel for chdb-core {tag} on {arch}") +PY +) +wheel=$(basename "$wheel_url") +curl -fSL --retry 3 -o "$wheel" "$wheel_url" +pip uninstall --quiet -y chdb-core || true +pip install --quiet "./$wheel" + +# The profiling script ships in the same tag. +curl -fSL --retry 3 -o load_profile.py \ + "https://raw.githubusercontent.com/chdb-io/chdb-core/${CORE_TAG}/benchmark/load_profile.py" + +python3 - <<'PY' +from importlib.metadata import version + +print(f"Installed chdb: {version('chdb')}") +print(f"Installed chdb-core: {version('chdb-core')}") +PY diff --git a/chdb-rc-no-final-lz4/load b/chdb-rc-no-final-lz4/load new file mode 100755 index 0000000000..edbebac7e8 --- /dev/null +++ b/chdb-rc-no-final-lz4/load @@ -0,0 +1,24 @@ +#!/bin/bash +set -e + +# shellcheck disable=SC1091 +source myenv/bin/activate + +# Idempotent: blow away any prior data dir. +rm -rf .clickbench + +python3 - <<'PY' +from chdb import dbapi + +con = dbapi.connect(path=".clickbench") +cur = con.cursor() + +cur.execute(open("create.sql").read()) +cur.execute(open("insert.sql").read()) + +cur.close() +con.close() +PY + +# hits.csv stays for ./profile, which benchmark.sh runs after the measured flow. +sync diff --git a/chdb-rc-no-final-lz4/profile b/chdb-rc-no-final-lz4/profile new file mode 100755 index 0000000000..d25b7d8bf2 --- /dev/null +++ b/chdb-rc-no-final-lz4/profile @@ -0,0 +1,24 @@ +#!/bin/bash +# Repeat the load once more, outside every measured window, with part_log and +# query_log on, and print where the parts and the time went. +set -e + +# shellcheck disable=SC1091 +source myenv/bin/activate + +rm -rf .clickbench .profile +sync + +echo "=== load_profile begin ===" +python3 load_profile.py \ + --path .profile \ + --create create.sql \ + --load "$(tr '\n' ' ' < insert.sql | sed 's/;[[:space:]]*$//')" \ + --table hits \ + --out profile.json +echo "=== load_profile json ===" +python3 -c "import json; r = json.load(open('profile.json')); r['pipeline'].pop('explain_pipeline'); print(json.dumps(r))" +echo "=== load_profile end ===" + +rm -rf .profile hits.csv +sync diff --git a/chdb-rc-no-final-lz4/queries.sql b/chdb-rc-no-final-lz4/queries.sql new file mode 100644 index 0000000000..4b05870ab9 --- /dev/null +++ b/chdb-rc-no-final-lz4/queries.sql @@ -0,0 +1,43 @@ +SELECT COUNT(*) FROM clickbench.hits; +SELECT COUNT(*) FROM clickbench.hits WHERE AdvEngineID <> 0; +SELECT SUM(AdvEngineID), COUNT(*), AVG(ResolutionWidth) FROM clickbench.hits; +SELECT AVG(UserID) FROM clickbench.hits; +SELECT COUNT(DISTINCT UserID) FROM clickbench.hits; +SELECT COUNT(DISTINCT SearchPhrase) FROM clickbench.hits; +SELECT MIN(EventDate), MAX(EventDate) FROM clickbench.hits; +SELECT AdvEngineID, COUNT(*) FROM clickbench.hits WHERE AdvEngineID <> 0 GROUP BY AdvEngineID ORDER BY COUNT(*) DESC; +SELECT RegionID, COUNT(DISTINCT UserID) AS u FROM clickbench.hits GROUP BY RegionID ORDER BY u DESC LIMIT 10; +SELECT RegionID, SUM(AdvEngineID), COUNT(*) AS c, AVG(ResolutionWidth), COUNT(DISTINCT UserID) FROM clickbench.hits GROUP BY RegionID ORDER BY c DESC LIMIT 10; +SELECT MobilePhoneModel, COUNT(DISTINCT UserID) AS u FROM clickbench.hits WHERE MobilePhoneModel <> '' GROUP BY MobilePhoneModel ORDER BY u DESC LIMIT 10; +SELECT MobilePhone, MobilePhoneModel, COUNT(DISTINCT UserID) AS u FROM clickbench.hits WHERE MobilePhoneModel <> '' GROUP BY MobilePhone, MobilePhoneModel ORDER BY u DESC LIMIT 10; +SELECT SearchPhrase, COUNT(*) AS c FROM clickbench.hits WHERE SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY c DESC LIMIT 10; +SELECT SearchPhrase, COUNT(DISTINCT UserID) AS u FROM clickbench.hits WHERE SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY u DESC LIMIT 10; +SELECT SearchEngineID, SearchPhrase, COUNT(*) AS c FROM clickbench.hits WHERE SearchPhrase <> '' GROUP BY SearchEngineID, SearchPhrase ORDER BY c DESC LIMIT 10; +SELECT UserID, COUNT(*) FROM clickbench.hits GROUP BY UserID ORDER BY COUNT(*) DESC LIMIT 10; +SELECT UserID, SearchPhrase, COUNT(*) FROM clickbench.hits GROUP BY UserID, SearchPhrase ORDER BY COUNT(*) DESC LIMIT 10; +SELECT UserID, SearchPhrase, COUNT(*) FROM clickbench.hits GROUP BY UserID, SearchPhrase LIMIT 10; +SELECT UserID, extract(minute FROM EventTime) AS m, SearchPhrase, COUNT(*) FROM clickbench.hits GROUP BY UserID, m, SearchPhrase ORDER BY COUNT(*) DESC LIMIT 10; +SELECT UserID FROM clickbench.hits WHERE UserID = 435090932899640449; +SELECT COUNT(*) FROM clickbench.hits WHERE URL LIKE '%google%'; +SELECT SearchPhrase, MIN(URL), COUNT(*) AS c FROM clickbench.hits WHERE URL LIKE '%google%' AND SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY c DESC LIMIT 10; +SELECT SearchPhrase, MIN(URL), MIN(Title), COUNT(*) AS c, COUNT(DISTINCT UserID) FROM clickbench.hits WHERE Title LIKE '%Google%' AND URL NOT LIKE '%.google.%' AND SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY c DESC LIMIT 10; +SELECT * FROM clickbench.hits WHERE URL LIKE '%google%' ORDER BY EventTime LIMIT 10; +SELECT SearchPhrase FROM clickbench.hits WHERE SearchPhrase <> '' ORDER BY EventTime LIMIT 10; +SELECT SearchPhrase FROM clickbench.hits WHERE SearchPhrase <> '' ORDER BY SearchPhrase LIMIT 10; +SELECT SearchPhrase FROM clickbench.hits WHERE SearchPhrase <> '' ORDER BY EventTime, SearchPhrase LIMIT 10; +SELECT CounterID, AVG(length(URL)) AS l, COUNT(*) AS c FROM clickbench.hits WHERE URL <> '' GROUP BY CounterID HAVING COUNT(*) > 100000 ORDER BY l DESC LIMIT 25; +SELECT REGEXP_REPLACE(Referer, '^https?://(?:www\.)?([^/]+)/.*$', '\1') AS k, AVG(length(Referer)) AS l, COUNT(*) AS c, MIN(Referer) FROM clickbench.hits WHERE Referer <> '' GROUP BY k HAVING COUNT(*) > 100000 ORDER BY l DESC LIMIT 25; +SELECT SUM(ResolutionWidth), SUM(ResolutionWidth + 1), SUM(ResolutionWidth + 2), SUM(ResolutionWidth + 3), SUM(ResolutionWidth + 4), SUM(ResolutionWidth + 5), SUM(ResolutionWidth + 6), SUM(ResolutionWidth + 7), SUM(ResolutionWidth + 8), SUM(ResolutionWidth + 9), SUM(ResolutionWidth + 10), SUM(ResolutionWidth + 11), SUM(ResolutionWidth + 12), SUM(ResolutionWidth + 13), SUM(ResolutionWidth + 14), SUM(ResolutionWidth + 15), SUM(ResolutionWidth + 16), SUM(ResolutionWidth + 17), SUM(ResolutionWidth + 18), SUM(ResolutionWidth + 19), SUM(ResolutionWidth + 20), SUM(ResolutionWidth + 21), SUM(ResolutionWidth + 22), SUM(ResolutionWidth + 23), SUM(ResolutionWidth + 24), SUM(ResolutionWidth + 25), SUM(ResolutionWidth + 26), SUM(ResolutionWidth + 27), SUM(ResolutionWidth + 28), SUM(ResolutionWidth + 29), SUM(ResolutionWidth + 30), SUM(ResolutionWidth + 31), SUM(ResolutionWidth + 32), SUM(ResolutionWidth + 33), SUM(ResolutionWidth + 34), SUM(ResolutionWidth + 35), SUM(ResolutionWidth + 36), SUM(ResolutionWidth + 37), SUM(ResolutionWidth + 38), SUM(ResolutionWidth + 39), SUM(ResolutionWidth + 40), SUM(ResolutionWidth + 41), SUM(ResolutionWidth + 42), SUM(ResolutionWidth + 43), SUM(ResolutionWidth + 44), SUM(ResolutionWidth + 45), SUM(ResolutionWidth + 46), SUM(ResolutionWidth + 47), SUM(ResolutionWidth + 48), SUM(ResolutionWidth + 49), SUM(ResolutionWidth + 50), SUM(ResolutionWidth + 51), SUM(ResolutionWidth + 52), SUM(ResolutionWidth + 53), SUM(ResolutionWidth + 54), SUM(ResolutionWidth + 55), SUM(ResolutionWidth + 56), SUM(ResolutionWidth + 57), SUM(ResolutionWidth + 58), SUM(ResolutionWidth + 59), SUM(ResolutionWidth + 60), SUM(ResolutionWidth + 61), SUM(ResolutionWidth + 62), SUM(ResolutionWidth + 63), SUM(ResolutionWidth + 64), SUM(ResolutionWidth + 65), SUM(ResolutionWidth + 66), SUM(ResolutionWidth + 67), SUM(ResolutionWidth + 68), SUM(ResolutionWidth + 69), SUM(ResolutionWidth + 70), SUM(ResolutionWidth + 71), SUM(ResolutionWidth + 72), SUM(ResolutionWidth + 73), SUM(ResolutionWidth + 74), SUM(ResolutionWidth + 75), SUM(ResolutionWidth + 76), SUM(ResolutionWidth + 77), SUM(ResolutionWidth + 78), SUM(ResolutionWidth + 79), SUM(ResolutionWidth + 80), SUM(ResolutionWidth + 81), SUM(ResolutionWidth + 82), SUM(ResolutionWidth + 83), SUM(ResolutionWidth + 84), SUM(ResolutionWidth + 85), SUM(ResolutionWidth + 86), SUM(ResolutionWidth + 87), SUM(ResolutionWidth + 88), SUM(ResolutionWidth + 89) FROM clickbench.hits; +SELECT SearchEngineID, ClientIP, COUNT(*) AS c, SUM(IsRefresh), AVG(ResolutionWidth) FROM clickbench.hits WHERE SearchPhrase <> '' GROUP BY SearchEngineID, ClientIP ORDER BY c DESC LIMIT 10; +SELECT WatchID, ClientIP, COUNT(*) AS c, SUM(IsRefresh), AVG(ResolutionWidth) FROM clickbench.hits WHERE SearchPhrase <> '' GROUP BY WatchID, ClientIP ORDER BY c DESC LIMIT 10; +SELECT WatchID, ClientIP, COUNT(*) AS c, SUM(IsRefresh), AVG(ResolutionWidth) FROM clickbench.hits GROUP BY WatchID, ClientIP ORDER BY c DESC LIMIT 10; +SELECT URL, COUNT(*) AS c FROM clickbench.hits GROUP BY URL ORDER BY c DESC LIMIT 10; +SELECT 1, URL, COUNT(*) AS c FROM clickbench.hits GROUP BY 1, URL ORDER BY c DESC LIMIT 10; +SELECT ClientIP, ClientIP - 1, ClientIP - 2, ClientIP - 3, COUNT(*) AS c FROM clickbench.hits GROUP BY ClientIP, ClientIP - 1, ClientIP - 2, ClientIP - 3 ORDER BY c DESC LIMIT 10; +SELECT URL, COUNT(*) AS PageViews FROM clickbench.hits WHERE CounterID = 62 AND EventDate >= '2013-07-01' AND EventDate <= '2013-07-31' AND DontCountHits = 0 AND IsRefresh = 0 AND URL <> '' GROUP BY URL ORDER BY PageViews DESC LIMIT 10; +SELECT Title, COUNT(*) AS PageViews FROM clickbench.hits WHERE CounterID = 62 AND EventDate >= '2013-07-01' AND EventDate <= '2013-07-31' AND DontCountHits = 0 AND IsRefresh = 0 AND Title <> '' GROUP BY Title ORDER BY PageViews DESC LIMIT 10; +SELECT URL, COUNT(*) AS PageViews FROM clickbench.hits WHERE CounterID = 62 AND EventDate >= '2013-07-01' AND EventDate <= '2013-07-31' AND IsRefresh = 0 AND IsLink <> 0 AND IsDownload = 0 GROUP BY URL ORDER BY PageViews DESC LIMIT 10 OFFSET 1000; +SELECT TraficSourceID, SearchEngineID, AdvEngineID, CASE WHEN (SearchEngineID = 0 AND AdvEngineID = 0) THEN Referer ELSE '' END AS Src, URL AS Dst, COUNT(*) AS PageViews FROM clickbench.hits WHERE CounterID = 62 AND EventDate >= '2013-07-01' AND EventDate <= '2013-07-31' AND IsRefresh = 0 GROUP BY TraficSourceID, SearchEngineID, AdvEngineID, Src, Dst ORDER BY PageViews DESC LIMIT 10 OFFSET 1000; +SELECT URLHash, EventDate, COUNT(*) AS PageViews FROM clickbench.hits WHERE CounterID = 62 AND EventDate >= '2013-07-01' AND EventDate <= '2013-07-31' AND IsRefresh = 0 AND TraficSourceID IN (-1, 6) AND RefererHash = 3594120000172545465 GROUP BY URLHash, EventDate ORDER BY PageViews DESC LIMIT 10 OFFSET 100; +SELECT WindowClientWidth, WindowClientHeight, COUNT(*) AS PageViews FROM clickbench.hits WHERE CounterID = 62 AND EventDate >= '2013-07-01' AND EventDate <= '2013-07-31' AND IsRefresh = 0 AND DontCountHits = 0 AND URLHash = 2868770270353813622 GROUP BY WindowClientWidth, WindowClientHeight ORDER BY PageViews DESC LIMIT 10 OFFSET 10000; +SELECT DATE_TRUNC('minute', EventTime) AS M, COUNT(*) AS PageViews FROM clickbench.hits WHERE CounterID = 62 AND EventDate >= '2013-07-14' AND EventDate <= '2013-07-15' AND IsRefresh = 0 AND DontCountHits = 0 GROUP BY DATE_TRUNC('minute', EventTime) ORDER BY DATE_TRUNC('minute', EventTime) LIMIT 10 OFFSET 1000; diff --git a/chdb-rc-no-final-lz4/query b/chdb-rc-no-final-lz4/query new file mode 100755 index 0000000000..f2399c6656 --- /dev/null +++ b/chdb-rc-no-final-lz4/query @@ -0,0 +1,42 @@ +#!/bin/bash +# Reads a SQL query from stdin, runs it via chdb against the .clickbench dir. +# Stdout: query result. +# Stderr: query runtime in fractional seconds on the last line. +# Exit non-zero on error. +set -e + +# shellcheck disable=SC1091 +source myenv/bin/activate + +# Stage stdin into a temp file: `python3 - <<'PY'` already consumes stdin to +# read the program, so sys.stdin.read() inside the heredoc returns "". +query_file=$(mktemp) +trap 'rm -f "$query_file"' EXIT +cat > "$query_file" + +python3 - "$query_file" <<'PY' +import sys +import timeit +import chdb + +with open(sys.argv[1]) as f: + query = f.read() + +# The hits table is created inside the `clickbench` database (see +# create.sql + load), but the session defaults to `default`. Prepend +# USE so a bare `SELECT * FROM hits` resolves regardless. +sess = chdb.session.Session(".clickbench") +start = timeit.default_timer() +try: + res = sess.query(f"USE clickbench; {query}", "Pretty") + out = str(res) + end = timeit.default_timer() + if out: + sys.stdout.write(out) + if not out.endswith("\n"): + sys.stdout.write("\n") +finally: + sess.close() + +print(f"{end - start:.3f}", file=sys.stderr) +PY diff --git a/chdb-rc-no-final-lz4/results/20261008/c6a.2xlarge.json b/chdb-rc-no-final-lz4/results/20261008/c6a.2xlarge.json new file mode 100644 index 0000000000..502b8366b2 --- /dev/null +++ b/chdb-rc-no-final-lz4/results/20261008/c6a.2xlarge.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc, no FINAL, LZ4)", + "date": "2026-10-08", + "machine": "c6a.2xlarge", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 594, + "data_size": 24990398593, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.037, 0.016, 0.016], + [0.048, 0.025, 0.014], + [0.189, 0.108, 0.085], + [0.246, 0.109, 0.133], + [0.733, 0.592, 0.585], + [1.028, 0.85, 0.833], + [0.122, 0.081, 0.078], + [0.152, 0.092, 0.082], + [1.004, 0.837, 0.873], + [1.102, 0.985, 0.996], + [0.388, 0.263, 0.203], + [0.422, 0.291, 0.282], + [1.034, 0.663, 0.678], + [2.063, 0.985, 1.029], + [1.216, 0.841, 0.789], + [0.624, 0.514, 0.494], + [2.294, 1.757, 1.669], + [1.727, 0.72, 0.7], + [4.522, 2.919, 2.956], + [0.217, 0.096, 0.071], + [10.765, 0.928, 0.976], + [12.256, 1.17, 1.193], + [15.274, 1.559, 1.544], + [1.711, 0.245, 0.25], + [0.928, 0.124, 0.136], + [0.83, 0.33, 0.311], + [0.926, 0.143, 0.131], + [0.412, 0.242, 0.23], + [9.732, 2.771, 2.78], + [0.197, 0.1, 0.089], + [0.685, 0.466, 0.431], + [3.882, 0.617, 0.622], + [6.203, 3.873, 3.815], + [11.623, 14.194, 3.176], + [10.599, 3.168, 3.173], + [0.544, 0.426, 0.445], + [0.229, 0.146, 0.119], + [0.177, 0.09, 0.111], + [0.191, 0.09, 0.111], + [0.318, 0.205, 0.185], + [0.18, 0.085, 0.096], + [0.183, 0.089, 0.093], + [0.166, 0.07, 0.089] +] + } + \ No newline at end of file diff --git a/chdb-rc-no-final-lz4/results/20261008/c6a.4xlarge.json b/chdb-rc-no-final-lz4/results/20261008/c6a.4xlarge.json new file mode 100644 index 0000000000..4b06ed2af7 --- /dev/null +++ b/chdb-rc-no-final-lz4/results/20261008/c6a.4xlarge.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc, no FINAL, LZ4)", + "date": "2026-10-08", + "machine": "c6a.4xlarge", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 554, + "data_size": 24094832591, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.022, 0.014, 0.006], + [0.03, 0.02, 0.007], + [0.153, 0.067, 0.039], + [0.261, 0.053, 0.062], + [0.366, 0.281, 0.28], + [0.907, 0.435, 0.407], + [0.075, 0.043, 0.04], + [0.097, 0.037, 0.057], + [0.753, 0.541, 0.573], + [0.932, 0.635, 0.635], + [0.432, 0.181, 0.169], + [0.492, 0.179, 0.183], + [1.955, 0.435, 0.448], + [1.959, 0.655, 0.657], + [1.173, 0.522, 0.516], + [0.416, 0.322, 0.332], + [2.642, 1.237, 1.247], + [1.667, 0.547, 0.559], + [4.147, 2.299, 2.282], + [0.125, 0.055, 0.049], + [10.489, 0.564, 0.58], + [11.948, 0.701, 0.715], + [14.368, 1.062, 1.091], + [1.866, 0.164, 0.185], + [0.903, 0.07, 0.063], + [0.835, 0.192, 0.188], + [0.895, 0.084, 0.065], + [0.453, 0.128, 0.115], + [9.284, 2.063, 2.063], + [0.121, 0.06, 0.062], + [0.722, 0.275, 0.273], + [3.704, 0.404, 0.41], + [5.012, 2.529, 2.514], + [11.069, 2.16, 2.156], + [11.059, 2.165, 2.159], + [0.367, 0.285, 0.292], + [0.156, 0.084, 0.082], + [0.126, 0.055, 0.065], + [0.154, 0.071, 0.053], + [0.219, 0.128, 0.114], + [0.129, 0.043, 0.052], + [0.125, 0.053, 0.043], + [0.122, 0.041, 0.053] +] + } + \ No newline at end of file diff --git a/chdb-rc-no-final-lz4/results/20261008/c6a.large.json b/chdb-rc-no-final-lz4/results/20261008/c6a.large.json new file mode 100644 index 0000000000..c6d6b9b2e9 --- /dev/null +++ b/chdb-rc-no-final-lz4/results/20261008/c6a.large.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc, no FINAL, LZ4)", + "date": "2026-10-08", + "machine": "c6a.large", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 1008, + "data_size": 15258004050, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.019, 0.011, 0.012], + [0.023, 0.003, 0.012], + [0.643, 0.511, 0.474], + [1.329, 0.959, 0.917], + [3.925, 3.805, 3.934], + [7.335, 7.126, 7.233], + [0.348, 0.317, 0.363], + [0.258, 0.142, 0.13], + [8.285, 8.373, 8.141], + [9.252, 9.362, 9.631], + [2.769, 2.773, 2.586], + [3.56, 3.268, 3.002], + [9.077, 9.017, 8.582], + [12.765, 12.79, 12.191], + [10.56, 10.823, 10.891], + [4.768, 4.377, 4.741], + [47.602, 47.516, 48.006], + [11.654, 11.475, 11.958], + [77.157, 65.174, 66.945], + [0.591, 0.324, 0.275], + [14.925, 12.809, 12.87], + [17.609, 15.87, 16.398], + [21.792, 20.77, 20.079], + [3.715, 2.317, 2.287], + [1.319, 0.638, 0.69], + [4.363, 3.682, 3.412], + [1.288, 0.639, 0.673], + [2.569, 1.943, 1.986], + [43.522, 43.667, 43.986], + [0.474, 0.394, 0.347], + [4.429, 4.046, 4.046], + [7.336, 5.514, 5.699], + [86.897, 88.829, 88.09], + [64.958, 64.644, 62.763], + [62.44, 63.897, 64.147], + [3.706, 3.369, 3.582], + [0.574, 0.375, 0.422], + [0.35, 0.209, 0.226], + [0.321, 0.137, 0.163], + [1.172, 0.821, 0.886], + [0.219, 0.102, 0.103], + [0.188, 0.069, 0.067], + [0.171, 0.063, 0.076] +] + } + \ No newline at end of file diff --git a/chdb-rc-no-final-lz4/results/20261008/c6a.metal.json b/chdb-rc-no-final-lz4/results/20261008/c6a.metal.json new file mode 100644 index 0000000000..1763eff3dc --- /dev/null +++ b/chdb-rc-no-final-lz4/results/20261008/c6a.metal.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc, no FINAL, LZ4)", + "date": "2026-10-08", + "machine": "c6a.metal", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 112, + "data_size": 17162594172, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.067, 0.049, 0.046], + [0.076, 0.038, 0.004], + [0.563, 0.073, 0.077], + [1.008, 0.085, 0.089], + [0.939, 0.151, 0.146], + [1.337, 0.185, 0.176], + [0.24, 0.066, 0.057], + [0.361, 0.062, 0.075], + [1.338, 0.379, 0.389], + [1.886, 0.38, 0.411], + [1.204, 0.165, 0.158], + [1.397, 0.153, 0.195], + [1.441, 0.172, 0.177], + [2.085, 0.244, 0.24], + [1.647, 0.217, 0.207], + [0.837, 0.157, 0.159], + [2.063, 0.301, 0.294], + [1.997, 0.174, 0.174], + [3.162, 0.481, 0.523], + [0.537, 0.083, 0.062], + [9.574, 0.175, 0.168], + [11.018, 0.208, 0.214], + [14.001, 0.258, 0.256], + [2.802, 0.17, 0.16], + [1.52, 0.095, 0.104], + [1.358, 0.121, 0.125], + [1.482, 0.099, 0.103], + [1.037, 0.116, 0.111], + [8.658, 0.447, 0.644], + [0.435, 0.085, 0.073], + [1.71, 0.179, 0.175], + [3.439, 0.197, 0.195], + [3.369, 0.537, 0.529], + [9.661, 0.682, 0.609], + [9.649, 0.697, 0.638], + [0.613, 0.122, 0.131], + [0.332, 0.093, 0.105], + [0.278, 0.09, 0.068], + [0.32, 0.075, 0.09], + [0.436, 0.121, 0.126], + [0.266, 0.072, 0.078], + [0.21, 0.066, 0.068], + [0.203, 0.076, 0.07] +] + } + \ No newline at end of file diff --git a/chdb-rc-no-final-lz4/results/20261008/c6a.xlarge.json b/chdb-rc-no-final-lz4/results/20261008/c6a.xlarge.json new file mode 100644 index 0000000000..81c46eb701 --- /dev/null +++ b/chdb-rc-no-final-lz4/results/20261008/c6a.xlarge.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc, no FINAL, LZ4)", + "date": "2026-10-08", + "machine": "c6a.xlarge", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 605, + "data_size": 25131637246, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.093, 0.041, 0.038], + [0.079, 0.003, 0.008], + [0.401, 0.229, 0.155], + [0.561, 0.256, 0.276], + [1.209, 1.018, 1.09], + [2.02, 1.771, 1.822], + [0.322, 0.131, 0.162], + [0.323, 0.174, 0.186], + [2.038, 1.75, 1.707], + [2.234, 2.123, 1.989], + [0.764, 0.471, 0.499], + [0.84, 0.542, 0.575], + [1.729, 1.327, 1.453], + [2.639, 2.015, 1.99], + [1.992, 1.684, 1.793], + [1.242, 1.026, 1.011], + [3.603, 3.465, 3.45], + [2.02, 1.487, 1.531], + [17.44, 18.157, 18.498], + [0.448, 0.178, 0.191], + [13.028, 2.263, 2.194], + [14.913, 2.761, 2.737], + [17.185, 3.317, 3.4], + [1.978, 0.601, 0.586], + [1.115, 0.32, 0.297], + [1.159, 0.671, 0.614], + [1.079, 0.284, 0.271], + [0.782, 0.526, 0.48], + [12.661, 6.046, 6.106], + [0.376, 0.138, 0.269], + [1.204, 0.959, 0.999], + [4.452, 1.11, 1.24], + [29.074, 28.827, 28.354], + [31.548, 30.442, 32.514], + [31.898, 31.248, 32.421], + [1.183, 0.973, 1.021], + [0.416, 0.193, 0.222], + [0.316, 0.241, 0.217], + [0.393, 0.163, 0.146], + [0.564, 0.39, 0.37], + [0.312, 0.126, 0.169], + [0.288, 0.199, 0.147], + [0.277, 0.168, 0.162] +] + } + \ No newline at end of file diff --git a/chdb-rc-no-final-lz4/results/20261008/c7a.metal-48xl.json b/chdb-rc-no-final-lz4/results/20261008/c7a.metal-48xl.json new file mode 100644 index 0000000000..23cb1d39ab --- /dev/null +++ b/chdb-rc-no-final-lz4/results/20261008/c7a.metal-48xl.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc, no FINAL, LZ4)", + "date": "2026-10-08", + "machine": "c7a.metal-48xl", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 105, + "data_size": 17718477557, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.138, 0.041, 0.041], + [0.176, 0.044, 0.043], + [0.615, 0.084, 0.072], + [0.834, 0.074, 0.088], + [0.827, 0.123, 0.136], + [1.396, 0.169, 0.177], + [0.299, 0.062, 0.063], + [0.429, 0.063, 0.066], + [1.369, 0.367, 0.364], + [1.943, 0.378, 0.39], + [1.272, 0.165, 0.166], + [1.498, 0.158, 0.168], + [1.466, 0.142, 0.154], + [2.088, 0.192, 0.198], + [1.692, 0.17, 0.168], + [0.833, 0.119, 0.115], + [2.082, 0.212, 0.228], + [2.052, 0.137, 0.142], + [3.137, 0.35, 0.376], + [0.594, 0.069, 0.064], + [9.63, 0.143, 0.162], + [11.232, 0.178, 0.182], + [14.066, 0.2, 0.211], + [2.976, 0.163, 0.166], + [1.52, 0.098, 0.097], + [1.375, 0.096, 0.109], + [1.539, 0.098, 0.089], + [1.096, 0.107, 0.105], + [8.583, 0.332, 0.325], + [0.447, 0.066, 0.077], + [1.73, 0.152, 0.163], + [3.444, 0.166, 0.164], + [3.25, 0.365, 0.379], + [9.792, 0.432, 0.436], + [9.701, 0.419, 0.415], + [0.622, 0.097, 0.104], + [0.37, 0.076, 0.071], + [0.314, 0.057, 0.058], + [0.381, 0.062, 0.062], + [0.479, 0.105, 0.11], + [0.313, 0.056, 0.054], + [0.317, 0.056, 0.054], + [0.282, 0.051, 0.07] +] + } + \ No newline at end of file diff --git a/chdb-rc-no-final-lz4/results/20261008/c8g.4xlarge.json b/chdb-rc-no-final-lz4/results/20261008/c8g.4xlarge.json new file mode 100644 index 0000000000..1be1bad653 --- /dev/null +++ b/chdb-rc-no-final-lz4/results/20261008/c8g.4xlarge.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc, no FINAL, LZ4)", + "date": "2026-10-08", + "machine": "c8g.4xlarge", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 552, + "data_size": 24451803817, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.021, 0.009, 0.014], + [0.015, 0.004, 0.002], + [0.11, 0.04, 0.041], + [0.227, 0.052, 0.049], + [0.313, 0.183, 0.158], + [0.793, 0.222, 0.214], + [0.053, 0.037, 0.024], + [0.071, 0.037, 0.044], + [0.625, 0.268, 0.288], + [0.807, 0.327, 0.348], + [0.384, 0.128, 0.125], + [0.445, 0.131, 0.14], + [0.818, 0.21, 0.227], + [1.687, 0.304, 0.292], + [0.98, 0.264, 0.26], + [0.277, 0.167, 0.157], + [1.725, 0.466, 0.465], + [1.601, 0.21, 0.211], + [3.381, 0.725, 0.743], + [0.11, 0.037, 0.037], + [10.295, 0.351, 0.349], + [11.759, 0.409, 0.41], + [14.343, 0.501, 0.498], + [1.763, 0.125, 0.136], + [0.838, 0.061, 0.058], + [0.763, 0.107, 0.099], + [0.862, 0.05, 0.051], + [0.43, 0.091, 0.094], + [8.9, 0.849, 0.842], + [0.088, 0.042, 0.044], + [0.637, 0.169, 0.168], + [3.628, 0.23, 0.209], + [3.942, 0.906, 0.894], + [10.491, 0.945, 0.942], + [10.493, 0.946, 0.949], + [0.206, 0.135, 0.127], + [0.099, 0.062, 0.044], + [0.081, 0.033, 0.047], + [0.096, 0.038, 0.046], + [0.139, 0.061, 0.071], + [0.082, 0.032, 0.035], + [0.079, 0.036, 0.043], + [0.074, 0.03, 0.023] +] + } + \ No newline at end of file diff --git a/chdb-rc-no-final-lz4/results/20261008/c8g.metal-48xl.json b/chdb-rc-no-final-lz4/results/20261008/c8g.metal-48xl.json new file mode 100644 index 0000000000..c1b3fecb21 --- /dev/null +++ b/chdb-rc-no-final-lz4/results/20261008/c8g.metal-48xl.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc, no FINAL, LZ4)", + "date": "2026-10-08", + "machine": "c8g.metal-48xl", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 115, + "data_size": 19404518974, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.059, 0.042, 0.042], + [0.199, 0.027, 0.027], + [0.819, 0.075, 0.073], + [0.949, 0.08, 0.069], + [0.96, 0.124, 0.125], + [1.514, 0.135, 0.142], + [0.426, 0.057, 0.055], + [0.568, 0.061, 0.059], + [1.444, 0.306, 0.305], + [1.985, 0.32, 0.32], + [1.338, 0.131, 0.139], + [1.546, 0.133, 0.141], + [1.534, 0.141, 0.15], + [2.206, 0.187, 0.182], + [1.788, 0.16, 0.17], + [0.951, 0.122, 0.125], + [2.185, 0.252, 0.241], + [2.146, 0.146, 0.154], + [3.319, 0.397, 0.396], + [0.702, 0.059, 0.065], + [9.766, 0.18, 0.167], + [11.294, 0.186, 0.189], + [14.217, 0.242, 0.239], + [2.993, 0.144, 0.146], + [1.61, 0.083, 0.086], + [1.473, 0.102, 0.106], + [1.681, 0.088, 0.089], + [1.188, 0.096, 0.096], + [8.466, 0.341, 0.335], + [0.562, 0.063, 0.08], + [1.824, 0.132, 0.14], + [3.55, 0.157, 0.165], + [3.489, 0.426, 0.434], + [9.822, 0.398, 0.412], + [9.816, 0.378, 0.408], + [0.775, 0.107, 0.105], + [0.507, 0.073, 0.072], + [0.439, 0.065, 0.068], + [0.475, 0.069, 0.065], + [0.596, 0.1, 0.092], + [0.421, 0.068, 0.06], + [0.444, 0.065, 0.065], + [0.421, 0.065, 0.063] +] + } + \ No newline at end of file diff --git a/chdb-rc-no-final-lz4/results/20261009/t3a.small.json b/chdb-rc-no-final-lz4/results/20261009/t3a.small.json new file mode 100644 index 0000000000..8ea321470f --- /dev/null +++ b/chdb-rc-no-final-lz4/results/20261009/t3a.small.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc, no FINAL, LZ4)", + "date": "2026-10-09", + "machine": "t3a.small", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 1503, + "data_size": 15259111522, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.148, 0.009, 0.084], + [0.207, 0.005, 0.082], + [1.188, 0.793, 0.939], + [2.257, 1.487, 1.572], + [5.392, 4.664, 4.587], + [11.193, 10.554, 10.938], + [0.534, 0.486, 0.515], + [0.414, 0.378, 0.286], + [11.269, 11.141, 10.983], + [13.004, 13.81, 12.9], + [4.292, 3.656, 3.968], + [5.128, 4.98, 4.838], + [12.328, 12.121, 12.134], + [36.452, 36.652, 36.557], + [26.758, 27.072, 26.698], + [13.045, 12.656, 12.86], + [61.653, 59.398, 59.051], + [16.56, 15.683, 15.307], + [101.913, 100.412, 101.694], + [1.201, 0.521, 0.565], + [30.07, 30.186, 29.977], + [35.302, 36.25, 35.788], + [46.495, 46.405, 45.63], + [7.545, 5.049, 4.816], + [2.911, 1.283, 1.253], + [7.687, 6.811, 7.086], + [2.82, 1.221, 1.353], + [4.44, 3.871, 3.913], + [79.083, 79.003, 81.169], + [0.792, 0.668, 0.664], + [7.374, 6.984, 6.971], + [27.847, 27.346, 28.001], + [150.515, 149.769, 151.426], + [117.686, 117.659, 118.18], + [117.692, 118.118, 120.303], + [4.608, 4.336, 4.429], + [0.842, 0.662, 0.629], + [0.551, 0.419, 0.408], + [0.481, 0.267, 0.278], + [4.39, 1.318, 1.427], + [1.541, 0.146, 0.153], + [1.297, 0.138, 0.147], + [1.172, 0.143, 0.137] +] + } + \ No newline at end of file diff --git a/chdb-rc-no-final-lz4/start b/chdb-rc-no-final-lz4/start new file mode 100755 index 0000000000..71836e5f8f --- /dev/null +++ b/chdb-rc-no-final-lz4/start @@ -0,0 +1,3 @@ +#!/bin/bash +# chdb is an embedded library — no daemon to start. +exit 0 diff --git a/chdb-rc-no-final-lz4/stop b/chdb-rc-no-final-lz4/stop new file mode 100755 index 0000000000..1e5556318f --- /dev/null +++ b/chdb-rc-no-final-lz4/stop @@ -0,0 +1,3 @@ +#!/bin/bash +# chdb is an embedded library — no daemon to stop. +exit 0 diff --git a/chdb-rc-no-final-lz4/template.json b/chdb-rc-no-final-lz4/template.json new file mode 100644 index 0000000000..1d2a2ef7b8 --- /dev/null +++ b/chdb-rc-no-final-lz4/template.json @@ -0,0 +1,7 @@ +{ + "system": "chDB (rc, no FINAL, LZ4)", + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"] +} diff --git a/chdb-rc-no-final-zstd-i1/README.md b/chdb-rc-no-final-zstd-i1/README.md new file mode 100644 index 0000000000..7a57b45b9c --- /dev/null +++ b/chdb-rc-no-final-zstd-i1/README.md @@ -0,0 +1,8 @@ +Diagnostic copy of `chdb/` for a chdb-core release candidate. Not meant to be merged. + +- `install` pins chdb-core to the `CORE_TAG` release instead of the latest one. +- `create.sql` disables automatic statistics and forces ZSTD with adaptive codec selection off. +- `insert.sql` fixes `max_insert_threads` at 1. +- The measured load does not run `OPTIMIZE TABLE ... FINAL`. +- After the measured flow, `profile` repeats the load with part_log and query_log enabled and + prints a JSON report between `=== load_profile json ===` and `=== load_profile end ===`. diff --git a/chdb-rc-no-final-zstd-i1/benchmark.sh b/chdb-rc-no-final-zstd-i1/benchmark.sh new file mode 100755 index 0000000000..9fc3378847 --- /dev/null +++ b/chdb-rc-no-final-zstd-i1/benchmark.sh @@ -0,0 +1,7 @@ +#!/bin/bash +export BENCH_DOWNLOAD_SCRIPT="download-hits-csv" +export BENCH_RESTARTABLE=no +# See chdb/benchmark.sh. +export BENCH_CONCURRENT_DURATION="${BENCH_CONCURRENT_DURATION:-0}" +../lib/benchmark-common.sh +./profile diff --git a/chdb-rc-no-final-zstd-i1/check b/chdb-rc-no-final-zstd-i1/check new file mode 100755 index 0000000000..cd67e7c07c --- /dev/null +++ b/chdb-rc-no-final-zstd-i1/check @@ -0,0 +1,6 @@ +#!/bin/bash +set -e + +# shellcheck disable=SC1091 +source myenv/bin/activate +python3 -c "import chdb; chdb.query('SELECT 1')" >/dev/null diff --git a/chdb-rc-no-final-zstd-i1/create.sql b/chdb-rc-no-final-zstd-i1/create.sql new file mode 100644 index 0000000000..14efac9ce1 --- /dev/null +++ b/chdb-rc-no-final-zstd-i1/create.sql @@ -0,0 +1,118 @@ +CREATE DATABASE IF NOT EXISTS clickbench ENGINE = Atomic; + +USE clickbench; + +CREATE TABLE IF NOT EXISTS hits +( + WatchID BIGINT NOT NULL, + JavaEnable SMALLINT NOT NULL, + Title TEXT NOT NULL, + GoodEvent SMALLINT NOT NULL, + EventTime TIMESTAMP NOT NULL, + EventDate Date NOT NULL, + CounterID INTEGER NOT NULL, + ClientIP INTEGER NOT NULL, + RegionID INTEGER NOT NULL, + UserID BIGINT NOT NULL, + CounterClass SMALLINT NOT NULL, + OS SMALLINT NOT NULL, + UserAgent SMALLINT NOT NULL, + URL TEXT NOT NULL, + Referer TEXT NOT NULL, + IsRefresh SMALLINT NOT NULL, + RefererCategoryID SMALLINT NOT NULL, + RefererRegionID INTEGER NOT NULL, + URLCategoryID SMALLINT NOT NULL, + URLRegionID INTEGER NOT NULL, + ResolutionWidth SMALLINT NOT NULL, + ResolutionHeight SMALLINT NOT NULL, + ResolutionDepth SMALLINT NOT NULL, + FlashMajor SMALLINT NOT NULL, + FlashMinor SMALLINT NOT NULL, + FlashMinor2 TEXT NOT NULL, + NetMajor SMALLINT NOT NULL, + NetMinor SMALLINT NOT NULL, + UserAgentMajor SMALLINT NOT NULL, + UserAgentMinor VARCHAR(255) NOT NULL, + CookieEnable SMALLINT NOT NULL, + JavascriptEnable SMALLINT NOT NULL, + IsMobile SMALLINT NOT NULL, + MobilePhone SMALLINT NOT NULL, + MobilePhoneModel TEXT NOT NULL, + Params TEXT NOT NULL, + IPNetworkID INTEGER NOT NULL, + TraficSourceID SMALLINT NOT NULL, + SearchEngineID SMALLINT NOT NULL, + SearchPhrase TEXT NOT NULL, + AdvEngineID SMALLINT NOT NULL, + IsArtifical SMALLINT NOT NULL, + WindowClientWidth SMALLINT NOT NULL, + WindowClientHeight SMALLINT NOT NULL, + ClientTimeZone SMALLINT NOT NULL, + ClientEventTime TIMESTAMP NOT NULL, + SilverlightVersion1 SMALLINT NOT NULL, + SilverlightVersion2 SMALLINT NOT NULL, + SilverlightVersion3 INTEGER NOT NULL, + SilverlightVersion4 SMALLINT NOT NULL, + PageCharset TEXT NOT NULL, + CodeVersion INTEGER NOT NULL, + IsLink SMALLINT NOT NULL, + IsDownload SMALLINT NOT NULL, + IsNotBounce SMALLINT NOT NULL, + FUniqID BIGINT NOT NULL, + OriginalURL TEXT NOT NULL, + HID INTEGER NOT NULL, + IsOldCounter SMALLINT NOT NULL, + IsEvent SMALLINT NOT NULL, + IsParameter SMALLINT NOT NULL, + DontCountHits SMALLINT NOT NULL, + WithHash SMALLINT NOT NULL, + HitColor CHAR NOT NULL, + LocalEventTime TIMESTAMP NOT NULL, + Age SMALLINT NOT NULL, + Sex SMALLINT NOT NULL, + Income SMALLINT NOT NULL, + Interests SMALLINT NOT NULL, + Robotness SMALLINT NOT NULL, + RemoteIP INTEGER NOT NULL, + WindowName INTEGER NOT NULL, + OpenerName INTEGER NOT NULL, + HistoryLength SMALLINT NOT NULL, + BrowserLanguage TEXT NOT NULL, + BrowserCountry TEXT NOT NULL, + SocialNetwork TEXT NOT NULL, + SocialAction TEXT NOT NULL, + HTTPError SMALLINT NOT NULL, + SendTiming INTEGER NOT NULL, + DNSTiming INTEGER NOT NULL, + ConnectTiming INTEGER NOT NULL, + ResponseStartTiming INTEGER NOT NULL, + ResponseEndTiming INTEGER NOT NULL, + FetchTiming INTEGER NOT NULL, + SocialSourceNetworkID SMALLINT NOT NULL, + SocialSourcePage TEXT NOT NULL, + ParamPrice BIGINT NOT NULL, + ParamOrderID TEXT NOT NULL, + ParamCurrency TEXT NOT NULL, + ParamCurrencyID SMALLINT NOT NULL, + OpenstatServiceName TEXT NOT NULL, + OpenstatCampaignID TEXT NOT NULL, + OpenstatAdID TEXT NOT NULL, + OpenstatSourceID TEXT NOT NULL, + UTMSource TEXT NOT NULL, + UTMMedium TEXT NOT NULL, + UTMCampaign TEXT NOT NULL, + UTMContent TEXT NOT NULL, + UTMTerm TEXT NOT NULL, + FromTag TEXT NOT NULL, + HasGCLID SMALLINT NOT NULL, + RefererHash BIGINT NOT NULL, + URLHash BIGINT NOT NULL, + CLID INTEGER NOT NULL, + PRIMARY KEY (CounterID, EventDate, UserID, EventTime, WatchID) +) +ENGINE = MergeTree +SETTINGS + auto_statistics_types = '', + default_compression_codec = 'ZSTD', + enable_adaptive_codec_selection = 0; diff --git a/chdb-rc-no-final-zstd-i1/data-size b/chdb-rc-no-final-zstd-i1/data-size new file mode 100755 index 0000000000..226c121b8f --- /dev/null +++ b/chdb-rc-no-final-zstd-i1/data-size @@ -0,0 +1,4 @@ +#!/bin/bash +set -e + +du -bcs .clickbench | awk '/total$/ { print $1 }' diff --git a/chdb-rc-no-final-zstd-i1/insert.sql b/chdb-rc-no-final-zstd-i1/insert.sql new file mode 100644 index 0000000000..8a96982622 --- /dev/null +++ b/chdb-rc-no-final-zstd-i1/insert.sql @@ -0,0 +1,4 @@ +INSERT INTO clickbench.hits +SELECT * +FROM file('hits.csv') +SETTINGS max_insert_threads = 1; diff --git a/chdb-rc-no-final-zstd-i1/install b/chdb-rc-no-final-zstd-i1/install new file mode 100755 index 0000000000..a381dee031 --- /dev/null +++ b/chdb-rc-no-final-zstd-i1/install @@ -0,0 +1,53 @@ +#!/bin/bash +set -euo pipefail + +# Candidate chdb-core build under test; the stock chdb entry installs the latest release. +CORE_TAG=v26.9.1-rc.1 + +sudo apt-get update -y +sudo apt-get install -y python3-pip python3-venv + +if [ ! -d myenv ]; then + python3 -m venv myenv +fi + +# shellcheck disable=SC1091 +source myenv/bin/activate + +pip install --upgrade pip +pip install psutil pyarrow "chdb==4.4.0" + +wheel_url=$(python3 - "$CORE_TAG" <<'PY' +import json +import platform +import sys +import urllib.request + +tag = sys.argv[1] +release = json.load(urllib.request.urlopen( + f"https://api.github.com/repos/chdb-io/chdb-core/releases/tags/{tag}", timeout=30)) +arch = platform.machine() +for asset in release["assets"]: + name = asset["name"] + if name.endswith(".whl") and "_lite" not in name and "linux" in name and arch in name: + print(asset["browser_download_url"]) + break +else: + raise SystemExit(f"no full Linux wheel for chdb-core {tag} on {arch}") +PY +) +wheel=$(basename "$wheel_url") +curl -fSL --retry 3 -o "$wheel" "$wheel_url" +pip uninstall --quiet -y chdb-core || true +pip install --quiet "./$wheel" + +# The profiling script ships in the same tag. +curl -fSL --retry 3 -o load_profile.py \ + "https://raw.githubusercontent.com/chdb-io/chdb-core/${CORE_TAG}/benchmark/load_profile.py" + +python3 - <<'PY' +from importlib.metadata import version + +print(f"Installed chdb: {version('chdb')}") +print(f"Installed chdb-core: {version('chdb-core')}") +PY diff --git a/chdb-rc-no-final-zstd-i1/load b/chdb-rc-no-final-zstd-i1/load new file mode 100755 index 0000000000..edbebac7e8 --- /dev/null +++ b/chdb-rc-no-final-zstd-i1/load @@ -0,0 +1,24 @@ +#!/bin/bash +set -e + +# shellcheck disable=SC1091 +source myenv/bin/activate + +# Idempotent: blow away any prior data dir. +rm -rf .clickbench + +python3 - <<'PY' +from chdb import dbapi + +con = dbapi.connect(path=".clickbench") +cur = con.cursor() + +cur.execute(open("create.sql").read()) +cur.execute(open("insert.sql").read()) + +cur.close() +con.close() +PY + +# hits.csv stays for ./profile, which benchmark.sh runs after the measured flow. +sync diff --git a/chdb-rc-no-final-zstd-i1/profile b/chdb-rc-no-final-zstd-i1/profile new file mode 100755 index 0000000000..d25b7d8bf2 --- /dev/null +++ b/chdb-rc-no-final-zstd-i1/profile @@ -0,0 +1,24 @@ +#!/bin/bash +# Repeat the load once more, outside every measured window, with part_log and +# query_log on, and print where the parts and the time went. +set -e + +# shellcheck disable=SC1091 +source myenv/bin/activate + +rm -rf .clickbench .profile +sync + +echo "=== load_profile begin ===" +python3 load_profile.py \ + --path .profile \ + --create create.sql \ + --load "$(tr '\n' ' ' < insert.sql | sed 's/;[[:space:]]*$//')" \ + --table hits \ + --out profile.json +echo "=== load_profile json ===" +python3 -c "import json; r = json.load(open('profile.json')); r['pipeline'].pop('explain_pipeline'); print(json.dumps(r))" +echo "=== load_profile end ===" + +rm -rf .profile hits.csv +sync diff --git a/chdb-rc-no-final-zstd-i1/queries.sql b/chdb-rc-no-final-zstd-i1/queries.sql new file mode 100644 index 0000000000..4b05870ab9 --- /dev/null +++ b/chdb-rc-no-final-zstd-i1/queries.sql @@ -0,0 +1,43 @@ +SELECT COUNT(*) FROM clickbench.hits; +SELECT COUNT(*) FROM clickbench.hits WHERE AdvEngineID <> 0; +SELECT SUM(AdvEngineID), COUNT(*), AVG(ResolutionWidth) FROM clickbench.hits; +SELECT AVG(UserID) FROM clickbench.hits; +SELECT COUNT(DISTINCT UserID) FROM clickbench.hits; +SELECT COUNT(DISTINCT SearchPhrase) FROM clickbench.hits; +SELECT MIN(EventDate), MAX(EventDate) FROM clickbench.hits; +SELECT AdvEngineID, COUNT(*) FROM clickbench.hits WHERE AdvEngineID <> 0 GROUP BY AdvEngineID ORDER BY COUNT(*) DESC; +SELECT RegionID, COUNT(DISTINCT UserID) AS u FROM clickbench.hits GROUP BY RegionID ORDER BY u DESC LIMIT 10; +SELECT RegionID, SUM(AdvEngineID), COUNT(*) AS c, AVG(ResolutionWidth), COUNT(DISTINCT UserID) FROM clickbench.hits GROUP BY RegionID ORDER BY c DESC LIMIT 10; +SELECT MobilePhoneModel, COUNT(DISTINCT UserID) AS u FROM clickbench.hits WHERE MobilePhoneModel <> '' GROUP BY MobilePhoneModel ORDER BY u DESC LIMIT 10; +SELECT MobilePhone, MobilePhoneModel, COUNT(DISTINCT UserID) AS u FROM clickbench.hits WHERE MobilePhoneModel <> '' GROUP BY MobilePhone, MobilePhoneModel ORDER BY u DESC LIMIT 10; +SELECT SearchPhrase, COUNT(*) AS c FROM clickbench.hits WHERE SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY c DESC LIMIT 10; +SELECT SearchPhrase, COUNT(DISTINCT UserID) AS u FROM clickbench.hits WHERE SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY u DESC LIMIT 10; +SELECT SearchEngineID, SearchPhrase, COUNT(*) AS c FROM clickbench.hits WHERE SearchPhrase <> '' GROUP BY SearchEngineID, SearchPhrase ORDER BY c DESC LIMIT 10; +SELECT UserID, COUNT(*) FROM clickbench.hits GROUP BY UserID ORDER BY COUNT(*) DESC LIMIT 10; +SELECT UserID, SearchPhrase, COUNT(*) FROM clickbench.hits GROUP BY UserID, SearchPhrase ORDER BY COUNT(*) DESC LIMIT 10; +SELECT UserID, SearchPhrase, COUNT(*) FROM clickbench.hits GROUP BY UserID, SearchPhrase LIMIT 10; +SELECT UserID, extract(minute FROM EventTime) AS m, SearchPhrase, COUNT(*) FROM clickbench.hits GROUP BY UserID, m, SearchPhrase ORDER BY COUNT(*) DESC LIMIT 10; +SELECT UserID FROM clickbench.hits WHERE UserID = 435090932899640449; +SELECT COUNT(*) FROM clickbench.hits WHERE URL LIKE '%google%'; +SELECT SearchPhrase, MIN(URL), COUNT(*) AS c FROM clickbench.hits WHERE URL LIKE '%google%' AND SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY c DESC LIMIT 10; +SELECT SearchPhrase, MIN(URL), MIN(Title), COUNT(*) AS c, COUNT(DISTINCT UserID) FROM clickbench.hits WHERE Title LIKE '%Google%' AND URL NOT LIKE '%.google.%' AND SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY c DESC LIMIT 10; +SELECT * FROM clickbench.hits WHERE URL LIKE '%google%' ORDER BY EventTime LIMIT 10; +SELECT SearchPhrase FROM clickbench.hits WHERE SearchPhrase <> '' ORDER BY EventTime LIMIT 10; +SELECT SearchPhrase FROM clickbench.hits WHERE SearchPhrase <> '' ORDER BY SearchPhrase LIMIT 10; +SELECT SearchPhrase FROM clickbench.hits WHERE SearchPhrase <> '' ORDER BY EventTime, SearchPhrase LIMIT 10; +SELECT CounterID, AVG(length(URL)) AS l, COUNT(*) AS c FROM clickbench.hits WHERE URL <> '' GROUP BY CounterID HAVING COUNT(*) > 100000 ORDER BY l DESC LIMIT 25; +SELECT REGEXP_REPLACE(Referer, '^https?://(?:www\.)?([^/]+)/.*$', '\1') AS k, AVG(length(Referer)) AS l, COUNT(*) AS c, MIN(Referer) FROM clickbench.hits WHERE Referer <> '' GROUP BY k HAVING COUNT(*) > 100000 ORDER BY l DESC LIMIT 25; +SELECT SUM(ResolutionWidth), SUM(ResolutionWidth + 1), SUM(ResolutionWidth + 2), SUM(ResolutionWidth + 3), SUM(ResolutionWidth + 4), SUM(ResolutionWidth + 5), SUM(ResolutionWidth + 6), SUM(ResolutionWidth + 7), SUM(ResolutionWidth + 8), SUM(ResolutionWidth + 9), SUM(ResolutionWidth + 10), SUM(ResolutionWidth + 11), SUM(ResolutionWidth + 12), SUM(ResolutionWidth + 13), SUM(ResolutionWidth + 14), SUM(ResolutionWidth + 15), SUM(ResolutionWidth + 16), SUM(ResolutionWidth + 17), SUM(ResolutionWidth + 18), SUM(ResolutionWidth + 19), SUM(ResolutionWidth + 20), SUM(ResolutionWidth + 21), SUM(ResolutionWidth + 22), SUM(ResolutionWidth + 23), SUM(ResolutionWidth + 24), SUM(ResolutionWidth + 25), SUM(ResolutionWidth + 26), SUM(ResolutionWidth + 27), SUM(ResolutionWidth + 28), SUM(ResolutionWidth + 29), SUM(ResolutionWidth + 30), SUM(ResolutionWidth + 31), SUM(ResolutionWidth + 32), SUM(ResolutionWidth + 33), SUM(ResolutionWidth + 34), SUM(ResolutionWidth + 35), SUM(ResolutionWidth + 36), SUM(ResolutionWidth + 37), SUM(ResolutionWidth + 38), SUM(ResolutionWidth + 39), SUM(ResolutionWidth + 40), SUM(ResolutionWidth + 41), SUM(ResolutionWidth + 42), SUM(ResolutionWidth + 43), SUM(ResolutionWidth + 44), SUM(ResolutionWidth + 45), SUM(ResolutionWidth + 46), SUM(ResolutionWidth + 47), SUM(ResolutionWidth + 48), SUM(ResolutionWidth + 49), SUM(ResolutionWidth + 50), SUM(ResolutionWidth + 51), SUM(ResolutionWidth + 52), SUM(ResolutionWidth + 53), SUM(ResolutionWidth + 54), SUM(ResolutionWidth + 55), SUM(ResolutionWidth + 56), SUM(ResolutionWidth + 57), SUM(ResolutionWidth + 58), SUM(ResolutionWidth + 59), SUM(ResolutionWidth + 60), SUM(ResolutionWidth + 61), SUM(ResolutionWidth + 62), SUM(ResolutionWidth + 63), SUM(ResolutionWidth + 64), SUM(ResolutionWidth + 65), SUM(ResolutionWidth + 66), SUM(ResolutionWidth + 67), SUM(ResolutionWidth + 68), SUM(ResolutionWidth + 69), SUM(ResolutionWidth + 70), SUM(ResolutionWidth + 71), SUM(ResolutionWidth + 72), SUM(ResolutionWidth + 73), SUM(ResolutionWidth + 74), SUM(ResolutionWidth + 75), SUM(ResolutionWidth + 76), SUM(ResolutionWidth + 77), SUM(ResolutionWidth + 78), SUM(ResolutionWidth + 79), SUM(ResolutionWidth + 80), SUM(ResolutionWidth + 81), SUM(ResolutionWidth + 82), SUM(ResolutionWidth + 83), SUM(ResolutionWidth + 84), SUM(ResolutionWidth + 85), SUM(ResolutionWidth + 86), SUM(ResolutionWidth + 87), SUM(ResolutionWidth + 88), SUM(ResolutionWidth + 89) FROM clickbench.hits; +SELECT SearchEngineID, ClientIP, COUNT(*) AS c, SUM(IsRefresh), AVG(ResolutionWidth) FROM clickbench.hits WHERE SearchPhrase <> '' GROUP BY SearchEngineID, ClientIP ORDER BY c DESC LIMIT 10; +SELECT WatchID, ClientIP, COUNT(*) AS c, SUM(IsRefresh), AVG(ResolutionWidth) FROM clickbench.hits WHERE SearchPhrase <> '' GROUP BY WatchID, ClientIP ORDER BY c DESC LIMIT 10; +SELECT WatchID, ClientIP, COUNT(*) AS c, SUM(IsRefresh), AVG(ResolutionWidth) FROM clickbench.hits GROUP BY WatchID, ClientIP ORDER BY c DESC LIMIT 10; +SELECT URL, COUNT(*) AS c FROM clickbench.hits GROUP BY URL ORDER BY c DESC LIMIT 10; +SELECT 1, URL, COUNT(*) AS c FROM clickbench.hits GROUP BY 1, URL ORDER BY c DESC LIMIT 10; +SELECT ClientIP, ClientIP - 1, ClientIP - 2, ClientIP - 3, COUNT(*) AS c FROM clickbench.hits GROUP BY ClientIP, ClientIP - 1, ClientIP - 2, ClientIP - 3 ORDER BY c DESC LIMIT 10; +SELECT URL, COUNT(*) AS PageViews FROM clickbench.hits WHERE CounterID = 62 AND EventDate >= '2013-07-01' AND EventDate <= '2013-07-31' AND DontCountHits = 0 AND IsRefresh = 0 AND URL <> '' GROUP BY URL ORDER BY PageViews DESC LIMIT 10; +SELECT Title, COUNT(*) AS PageViews FROM clickbench.hits WHERE CounterID = 62 AND EventDate >= '2013-07-01' AND EventDate <= '2013-07-31' AND DontCountHits = 0 AND IsRefresh = 0 AND Title <> '' GROUP BY Title ORDER BY PageViews DESC LIMIT 10; +SELECT URL, COUNT(*) AS PageViews FROM clickbench.hits WHERE CounterID = 62 AND EventDate >= '2013-07-01' AND EventDate <= '2013-07-31' AND IsRefresh = 0 AND IsLink <> 0 AND IsDownload = 0 GROUP BY URL ORDER BY PageViews DESC LIMIT 10 OFFSET 1000; +SELECT TraficSourceID, SearchEngineID, AdvEngineID, CASE WHEN (SearchEngineID = 0 AND AdvEngineID = 0) THEN Referer ELSE '' END AS Src, URL AS Dst, COUNT(*) AS PageViews FROM clickbench.hits WHERE CounterID = 62 AND EventDate >= '2013-07-01' AND EventDate <= '2013-07-31' AND IsRefresh = 0 GROUP BY TraficSourceID, SearchEngineID, AdvEngineID, Src, Dst ORDER BY PageViews DESC LIMIT 10 OFFSET 1000; +SELECT URLHash, EventDate, COUNT(*) AS PageViews FROM clickbench.hits WHERE CounterID = 62 AND EventDate >= '2013-07-01' AND EventDate <= '2013-07-31' AND IsRefresh = 0 AND TraficSourceID IN (-1, 6) AND RefererHash = 3594120000172545465 GROUP BY URLHash, EventDate ORDER BY PageViews DESC LIMIT 10 OFFSET 100; +SELECT WindowClientWidth, WindowClientHeight, COUNT(*) AS PageViews FROM clickbench.hits WHERE CounterID = 62 AND EventDate >= '2013-07-01' AND EventDate <= '2013-07-31' AND IsRefresh = 0 AND DontCountHits = 0 AND URLHash = 2868770270353813622 GROUP BY WindowClientWidth, WindowClientHeight ORDER BY PageViews DESC LIMIT 10 OFFSET 10000; +SELECT DATE_TRUNC('minute', EventTime) AS M, COUNT(*) AS PageViews FROM clickbench.hits WHERE CounterID = 62 AND EventDate >= '2013-07-14' AND EventDate <= '2013-07-15' AND IsRefresh = 0 AND DontCountHits = 0 GROUP BY DATE_TRUNC('minute', EventTime) ORDER BY DATE_TRUNC('minute', EventTime) LIMIT 10 OFFSET 1000; diff --git a/chdb-rc-no-final-zstd-i1/query b/chdb-rc-no-final-zstd-i1/query new file mode 100755 index 0000000000..f2399c6656 --- /dev/null +++ b/chdb-rc-no-final-zstd-i1/query @@ -0,0 +1,42 @@ +#!/bin/bash +# Reads a SQL query from stdin, runs it via chdb against the .clickbench dir. +# Stdout: query result. +# Stderr: query runtime in fractional seconds on the last line. +# Exit non-zero on error. +set -e + +# shellcheck disable=SC1091 +source myenv/bin/activate + +# Stage stdin into a temp file: `python3 - <<'PY'` already consumes stdin to +# read the program, so sys.stdin.read() inside the heredoc returns "". +query_file=$(mktemp) +trap 'rm -f "$query_file"' EXIT +cat > "$query_file" + +python3 - "$query_file" <<'PY' +import sys +import timeit +import chdb + +with open(sys.argv[1]) as f: + query = f.read() + +# The hits table is created inside the `clickbench` database (see +# create.sql + load), but the session defaults to `default`. Prepend +# USE so a bare `SELECT * FROM hits` resolves regardless. +sess = chdb.session.Session(".clickbench") +start = timeit.default_timer() +try: + res = sess.query(f"USE clickbench; {query}", "Pretty") + out = str(res) + end = timeit.default_timer() + if out: + sys.stdout.write(out) + if not out.endswith("\n"): + sys.stdout.write("\n") +finally: + sess.close() + +print(f"{end - start:.3f}", file=sys.stderr) +PY diff --git a/chdb-rc-no-final-zstd-i1/results/20261009/c6a.2xlarge.json b/chdb-rc-no-final-zstd-i1/results/20261009/c6a.2xlarge.json new file mode 100644 index 0000000000..73be5669c7 --- /dev/null +++ b/chdb-rc-no-final-zstd-i1/results/20261009/c6a.2xlarge.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc, no FINAL, ZSTD, insert threads 1)", + "date": "2026-10-09", + "machine": "c6a.2xlarge", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 501, + "data_size": 14485675355, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.033, 0.014, 0.006], + [0.031, 0.003, 0.005], + [0.182, 0.086, 0.111], + [0.26, 0.12, 0.129], + [0.727, 0.615, 0.626], + [1.176, 1.005, 0.994], + [0.126, 0.057, 0.058], + [0.14, 0.066, 0.044], + [1.06, 0.976, 0.961], + [1.206, 1.069, 1.076], + [0.403, 0.272, 0.273], + [0.438, 0.338, 0.355], + [0.972, 0.812, 0.82], + [1.398, 1.215, 1.182], + [1.143, 0.97, 1.014], + [0.638, 0.535, 0.554], + [2.005, 1.879, 1.86], + [1.014, 0.876, 0.856], + [3.391, 3.201, 3.146], + [0.173, 0.071, 0.088], + [7.334, 1.852, 1.846], + [8.341, 2.17, 2.199], + [9.797, 2.592, 2.517], + [1.314, 0.336, 0.382], + [0.407, 0.199, 0.165], + [0.563, 0.455, 0.424], + [0.403, 0.202, 0.177], + [0.533, 0.468, 0.482], + [7.339, 3.493, 3.551], + [0.174, 0.128, 0.116], + [0.717, 0.603, 0.616], + [3.528, 0.716, 0.726], + [5.94, 3.895, 3.887], + [8.117, 4.338, 4.288], + [8.139, 4.329, 4.371], + [0.686, 0.481, 0.496], + [0.195, 0.108, 0.102], + [0.176, 0.089, 0.079], + [0.18, 0.065, 0.092], + [0.317, 0.209, 0.196], + [0.164, 0.06, 0.066], + [0.145, 0.079, 0.064], + [0.143, 0.044, 0.05] +] + } + \ No newline at end of file diff --git a/chdb-rc-no-final-zstd-i1/results/20261009/c6a.4xlarge.json b/chdb-rc-no-final-zstd-i1/results/20261009/c6a.4xlarge.json new file mode 100644 index 0000000000..3d943d8064 --- /dev/null +++ b/chdb-rc-no-final-zstd-i1/results/20261009/c6a.4xlarge.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc, no FINAL, ZSTD, insert threads 1)", + "date": "2026-10-09", + "machine": "c6a.4xlarge", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 469, + "data_size": 15022837697, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.024, 0.007, 0.005], + [0.033, 0.003, 0.003], + [0.101, 0.056, 0.066], + [0.156, 0.063, 0.082], + [0.368, 0.318, 0.314], + [0.558, 0.453, 0.48], + [0.066, 0.038, 0.032], + [0.09, 0.039, 0.038], + [0.722, 0.601, 0.574], + [0.756, 0.651, 0.626], + [0.301, 0.179, 0.182], + [0.306, 0.197, 0.193], + [0.579, 0.466, 0.473], + [1.074, 0.73, 0.718], + [0.674, 0.538, 0.556], + [0.431, 0.38, 0.35], + [1.36, 1.264, 1.243], + [0.742, 0.496, 0.507], + [2.906, 2.267, 2.334], + [0.107, 0.039, 0.044], + [6.173, 0.809, 0.821], + [7.167, 0.954, 0.966], + [8.189, 1.14, 1.124], + [1.103, 0.199, 0.223], + [0.295, 0.085, 0.108], + [0.309, 0.219, 0.223], + [0.306, 0.097, 0.096], + [0.298, 0.189, 0.212], + [6.186, 1.836, 1.816], + [0.111, 0.064, 0.061], + [0.405, 0.328, 0.316], + [3.099, 0.419, 0.433], + [4.567, 2.505, 2.46], + [6.763, 2.186, 2.178], + [6.745, 2.152, 2.181], + [0.341, 0.254, 0.261], + [0.156, 0.07, 0.069], + [0.132, 0.034, 0.044], + [0.142, 0.048, 0.046], + [0.214, 0.119, 0.111], + [0.128, 0.045, 0.029], + [0.116, 0.045, 0.045], + [0.119, 0.04, 0.036] +] + } + \ No newline at end of file diff --git a/chdb-rc-no-final-zstd-i1/results/20261009/c6a.large.json b/chdb-rc-no-final-zstd-i1/results/20261009/c6a.large.json new file mode 100644 index 0000000000..9d5a42cc00 --- /dev/null +++ b/chdb-rc-no-final-zstd-i1/results/20261009/c6a.large.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc, no FINAL, ZSTD, insert threads 1)", + "date": "2026-10-09", + "machine": "c6a.large", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 1196, + "data_size": 10224628494, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.041, 0.015, 0.015], + [0.025, 0.01, 0.009], + [0.884, 0.708, 0.781], + [1.606, 1.564, 1.349], + [4.226, 4.051, 4.199], + [8.232, 8.387, 8.139], + [0.332, 0.363, 0.336], + [0.25, 0.14, 0.153], + [8.514, 8.273, 8.494], + [9.772, 9.445, 9.511], + [2.978, 3.18, 2.891], + [3.709, 3.588, 3.602], + [9.806, 9.979, 9.62], + [13.837, 14.239, 13.864], + [11.206, 11.663, 11.571], + [4.92, 4.866, 5.03], + [49.755, 49.532, 48.799], + [12.601, 12.692, 12.197], + [85.718, 88.417, 85.427], + [0.686, 0.544, 0.505], + [23.681, 21.823, 22.322], + [27.542, 27.821, 28.023], + [33.51, 33.044, 32.79], + [5.097, 4.174, 4.357], + [1.98, 1.832, 1.74], + [6.13, 5.819, 6.168], + [2.013, 1.804, 1.73], + [5.087, 5.071, 4.846], + [57.226, 56.87, 57.065], + [0.774, 0.749, 0.695], + [6.985, 7.023, 6.983], + [10.119, 9.536, 9.203], + [112.624, 114.041, 111.293], + [86.944, 85.06, 85.201], + [85.167, 85.077, 84.432], + [4.368, 4.569, 4.704], + [0.648, 0.45, 0.562], + [0.372, 0.293, 0.313], + [0.373, 0.258, 0.266], + [1.39, 1.333, 1.182], + [0.226, 0.143, 0.156], + [0.198, 0.111, 0.106], + [0.171, 0.098, 0.105] +] + } + \ No newline at end of file diff --git a/chdb-rc-no-final-zstd-i1/results/20261009/c6a.metal.json b/chdb-rc-no-final-zstd-i1/results/20261009/c6a.metal.json new file mode 100644 index 0000000000..a46f3f0fd1 --- /dev/null +++ b/chdb-rc-no-final-zstd-i1/results/20261009/c6a.metal.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc, no FINAL, ZSTD, insert threads 1)", + "date": "2026-10-09", + "machine": "c6a.metal", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 189, + "data_size": 23787182681, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.021, 0.006, 0.01], + [0.017, 0.009, 0.004], + [0.11, 0.054, 0.056], + [0.632, 0.07, 0.047], + [0.602, 0.111, 0.125], + [1.196, 0.181, 0.159], + [0.08, 0.034, 0.036], + [0.383, 0.038, 0.041], + [1.305, 0.353, 0.334], + [1.527, 0.38, 0.387], + [1.065, 0.137, 0.141], + [1.213, 0.136, 0.14], + [1.266, 0.153, 0.163], + [1.834, 0.215, 0.204], + [1.392, 0.174, 0.172], + [0.874, 0.128, 0.108], + [1.847, 0.257, 0.274], + [1.758, 0.127, 0.144], + [2.751, 0.428, 0.425], + [0.255, 0.033, 0.033], + [6.114, 0.203, 0.2], + [7.099, 0.224, 0.238], + [8.731, 0.241, 0.258], + [2.773, 0.152, 0.181], + [1.336, 0.07, 0.073], + [1.18, 0.087, 0.1], + [1.293, 0.077, 0.065], + [0.744, 0.088, 0.083], + [6.198, 0.396, 0.395], + [0.189, 0.059, 0.052], + [1.261, 0.122, 0.135], + [3.144, 0.151, 0.156], + [3.206, 0.476, 0.495], + [6.386, 0.579, 0.587], + [6.347, 0.568, 0.579], + [0.656, 0.105, 0.111], + [0.5, 0.065, 0.048], + [0.447, 0.049, 0.029], + [0.491, 0.046, 0.048], + [0.567, 0.097, 0.091], + [0.454, 0.036, 0.045], + [0.464, 0.024, 0.035], + [0.423, 0.024, 0.037] +] + } + \ No newline at end of file diff --git a/chdb-rc-no-final-zstd-i1/results/20261009/c6a.xlarge.json b/chdb-rc-no-final-zstd-i1/results/20261009/c6a.xlarge.json new file mode 100644 index 0000000000..65d4496b86 --- /dev/null +++ b/chdb-rc-no-final-zstd-i1/results/20261009/c6a.xlarge.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc, no FINAL, ZSTD, insert threads 1)", + "date": "2026-10-09", + "machine": "c6a.xlarge", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 540, + "data_size": 15894846766, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.056, 0.083, 0.091], + [0.059, 0.039, 0.039], + [0.41, 0.278, 0.273], + [0.52, 0.334, 0.3], + [1.401, 1.305, 1.215], + [2.468, 2.21, 2.368], + [0.296, 0.172, 0.185], + [0.331, 0.129, 0.167], + [2.308, 2.128, 2.137], + [2.498, 2.542, 2.333], + [0.852, 0.628, 0.638], + [0.953, 0.815, 0.753], + [2.16, 1.85, 1.976], + [2.697, 2.454, 2.612], + [2.462, 2.274, 2.184], + [1.347, 1.145, 1.107], + [4.286, 4.225, 4.082], + [2.816, 2.07, 2.046], + [20.294, 20.64, 20.279], + [0.42, 0.215, 0.204], + [7.928, 4.479, 4.414], + [9.136, 5.248, 5.252], + [9.562, 5.986, 5.87], + [1.431, 0.821, 0.88], + [0.759, 0.515, 0.438], + [1.426, 1.083, 1.072], + [1.031, 0.409, 0.321], + [1.227, 1.111, 1.118], + [9.499, 8.546, 8.662], + [0.427, 0.296, 0.286], + [1.526, 1.327, 1.278], + [3.95, 1.646, 1.56], + [30.627, 31.045, 30.056], + [24.08, 23.631, 24.735], + [26.237, 24.025, 24.954], + [1.297, 1.189, 1.16], + [0.467, 0.278, 0.268], + [0.344, 0.182, 0.2], + [0.345, 0.15, 0.201], + [0.574, 0.458, 0.433], + [0.291, 0.165, 0.11], + [0.259, 0.11, 0.141], + [0.288, 0.149, 0.184] +] + } + \ No newline at end of file diff --git a/chdb-rc-no-final-zstd-i1/results/20261009/c7a.metal-48xl.json b/chdb-rc-no-final-zstd-i1/results/20261009/c7a.metal-48xl.json new file mode 100644 index 0000000000..098137dec2 --- /dev/null +++ b/chdb-rc-no-final-zstd-i1/results/20261009/c7a.metal-48xl.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc, no FINAL, ZSTD, insert threads 1)", + "date": "2026-10-09", + "machine": "c7a.metal-48xl", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 187, + "data_size": 24276410178, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.02, 0.006, 0.005], + [0.019, 0.003, 0.003], + [0.105, 0.046, 0.061], + [0.478, 0.055, 0.046], + [0.562, 0.116, 0.121], + [1.116, 0.151, 0.156], + [0.065, 0.035, 0.032], + [0.176, 0.035, 0.037], + [1.283, 0.352, 0.34], + [1.524, 0.364, 0.369], + [1.072, 0.14, 0.132], + [1.184, 0.145, 0.144], + [1.068, 0.127, 0.134], + [1.792, 0.172, 0.164], + [1.443, 0.145, 0.153], + [0.882, 0.118, 0.099], + [1.816, 0.207, 0.199], + [2.043, 0.109, 0.108], + [2.679, 0.328, 0.327], + [0.282, 0.031, 0.03], + [6.079, 0.167, 0.171], + [7.043, 0.188, 0.187], + [8.679, 0.223, 0.221], + [2.463, 0.154, 0.173], + [1.255, 0.06, 0.065], + [1.082, 0.085, 0.102], + [1.183, 0.066, 0.072], + [0.714, 0.081, 0.09], + [6.052, 0.304, 0.296], + [0.096, 0.051, 0.061], + [1.258, 0.113, 0.116], + [3.132, 0.135, 0.126], + [3.106, 0.343, 0.334], + [6.301, 0.418, 0.428], + [6.215, 0.453, 0.44], + [0.595, 0.093, 0.09], + [0.445, 0.056, 0.051], + [0.322, 0.043, 0.042], + [0.508, 0.038, 0.039], + [0.619, 0.084, 0.075], + [0.465, 0.037, 0.038], + [0.435, 0.029, 0.038], + [0.37, 0.034, 0.031] +] + } + \ No newline at end of file diff --git a/chdb-rc-no-final-zstd-i1/results/20261009/c8g.4xlarge.json b/chdb-rc-no-final-zstd-i1/results/20261009/c8g.4xlarge.json new file mode 100644 index 0000000000..9ab71afbfc --- /dev/null +++ b/chdb-rc-no-final-zstd-i1/results/20261009/c8g.4xlarge.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc, no FINAL, ZSTD, insert threads 1)", + "date": "2026-10-09", + "machine": "c8g.4xlarge", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 470, + "data_size": 14030378536, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.014, 0.005, 0.003], + [0.019, 0.009, 0.002], + [0.073, 0.044, 0.044], + [0.111, 0.046, 0.034], + [0.22, 0.168, 0.173], + [0.302, 0.232, 0.228], + [0.039, 0.02, 0.017], + [0.055, 0.031, 0.032], + [0.344, 0.279, 0.282], + [0.425, 0.337, 0.367], + [0.215, 0.117, 0.12], + [0.213, 0.151, 0.147], + [0.329, 0.243, 0.235], + [1.028, 0.323, 0.329], + [0.414, 0.29, 0.303], + [0.216, 0.165, 0.159], + [1.125, 0.525, 0.518], + [0.931, 0.238, 0.242], + [2.307, 0.805, 0.812], + [0.083, 0.019, 0.029], + [6.875, 0.501, 0.499], + [7.838, 0.585, 0.582], + [9.153, 0.674, 0.69], + [1.339, 0.158, 0.148], + [0.382, 0.053, 0.052], + [0.226, 0.13, 0.129], + [0.383, 0.067, 0.067], + [0.202, 0.15, 0.147], + [6.667, 1.039, 1.056], + [0.074, 0.043, 0.045], + [0.254, 0.191, 0.186], + [3.316, 0.235, 0.246], + [3.813, 0.959, 0.966], + [7.101, 1.176, 1.143], + [7.099, 1.149, 1.15], + [0.194, 0.147, 0.148], + [0.091, 0.037, 0.038], + [0.083, 0.032, 0.031], + [0.09, 0.031, 0.044], + [0.125, 0.067, 0.072], + [0.077, 0.037, 0.027], + [0.079, 0.032, 0.032], + [0.065, 0.018, 0.026] +] + } + \ No newline at end of file diff --git a/chdb-rc-no-final-zstd-i1/results/20261009/c8g.metal-48xl.json b/chdb-rc-no-final-zstd-i1/results/20261009/c8g.metal-48xl.json new file mode 100644 index 0000000000..e3cf24ee45 --- /dev/null +++ b/chdb-rc-no-final-zstd-i1/results/20261009/c8g.metal-48xl.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc, no FINAL, ZSTD, insert threads 1)", + "date": "2026-10-09", + "machine": "c8g.metal-48xl", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 163, + "data_size": 20291596435, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.022, 0.01, 0.009], + [0.017, 0.007, 0.008], + [0.183, 0.044, 0.047], + [0.513, 0.044, 0.053], + [0.496, 0.089, 0.089], + [1.052, 0.121, 0.119], + [0.067, 0.03, 0.031], + [0.209, 0.031, 0.03], + [1.045, 0.261, 0.275], + [1.378, 0.291, 0.291], + [1.049, 0.117, 0.118], + [1.171, 0.107, 0.113], + [1.184, 0.125, 0.126], + [1.681, 0.162, 0.154], + [1.322, 0.141, 0.134], + [0.599, 0.096, 0.09], + [1.672, 0.209, 0.219], + [1.635, 0.112, 0.109], + [2.61, 0.372, 0.335], + [0.441, 0.031, 0.034], + [5.834, 0.152, 0.17], + [6.852, 0.183, 0.189], + [8.582, 0.211, 0.207], + [2.44, 0.124, 0.136], + [1.112, 0.061, 0.056], + [1.004, 0.086, 0.075], + [1.132, 0.057, 0.057], + [0.665, 0.079, 0.076], + [5.895, 0.313, 0.325], + [0.373, 0.05, 0.042], + [1.136, 0.101, 0.097], + [3.074, 0.127, 0.123], + [3.414, 0.369, 0.381], + [5.967, 0.391, 0.433], + [5.952, 0.395, 0.384], + [0.469, 0.072, 0.079], + [0.417, 0.048, 0.044], + [0.268, 0.042, 0.04], + [0.378, 0.041, 0.035], + [0.459, 0.073, 0.07], + [0.333, 0.032, 0.037], + [0.331, 0.033, 0.032], + [0.145, 0.037, 0.038] +] + } + \ No newline at end of file diff --git a/chdb-rc-no-final-zstd-i1/results/20261009/t3a.small.json b/chdb-rc-no-final-zstd-i1/results/20261009/t3a.small.json new file mode 100644 index 0000000000..26078b9493 --- /dev/null +++ b/chdb-rc-no-final-zstd-i1/results/20261009/t3a.small.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc, no FINAL, ZSTD, insert threads 1)", + "date": "2026-10-09", + "machine": "t3a.small", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 1688, + "data_size": 10221668873, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.038, 0.033, 0.031], + [0.037, 0.01, 0.017], + [1.627, 1.288, 1.453], + [3.007, 2.871, 2.854], + [6.015, 5.89, 5.502], + [13.401, 13.564, 13.49], + [0.637, 0.568, 0.571], + [0.423, 0.261, 0.262], + [12.821, 12.901, 12.457], + [15.192, 15.426, 15.02], + [5.427, 5.66, 5.006], + [6.521, 6.817, 6.845], + [14.091, 14.108, 13.846], + [39.021, 38.805, 39.087], + [29.509, 29.662, 30.115], + [13.248, 13.102, 13.19], + [61.647, 61.564, 61.605], + [19.864, 19.946, 19.682], + [104.939, 104.363, 105.873], + [1.154, 0.702, 0.809], + [37.111, 37.268, 39.017], + [45.933, 46.239, 46.83], + [56.069, 56.92, 56.483], + [9.772, 8.031, 8.579], + [3.293, 2.648, 3.03], + [10.351, 10.146, 9.925], + [3.077, 2.978, 2.954], + [8.225, 8.308, 7.831], + [87.067, 87.468, 86.737], + [1.399, 1.299, 1.298], + [11.014, 10.262, 10.972], + [28.545, 28.56, 28.702], + [147.626, 147.789, 148.087], + [126.199, 126.008, 125.919], + [125.741, 126.222, 125.658], + [5.42, 4.932, 5.292], + [0.885, 0.787, 0.748], + [0.648, 0.487, 0.53], + [0.526, 0.401, 0.406], + [1.928, 1.663, 1.698], + [0.333, 0.216, 0.208], + [0.29, 0.182, 0.183], + [0.28, 0.174, 0.158] +] + } + \ No newline at end of file diff --git a/chdb-rc-no-final-zstd-i1/start b/chdb-rc-no-final-zstd-i1/start new file mode 100755 index 0000000000..71836e5f8f --- /dev/null +++ b/chdb-rc-no-final-zstd-i1/start @@ -0,0 +1,3 @@ +#!/bin/bash +# chdb is an embedded library — no daemon to start. +exit 0 diff --git a/chdb-rc-no-final-zstd-i1/stop b/chdb-rc-no-final-zstd-i1/stop new file mode 100755 index 0000000000..1e5556318f --- /dev/null +++ b/chdb-rc-no-final-zstd-i1/stop @@ -0,0 +1,3 @@ +#!/bin/bash +# chdb is an embedded library — no daemon to stop. +exit 0 diff --git a/chdb-rc-no-final-zstd-i1/template.json b/chdb-rc-no-final-zstd-i1/template.json new file mode 100644 index 0000000000..eb418c0282 --- /dev/null +++ b/chdb-rc-no-final-zstd-i1/template.json @@ -0,0 +1,7 @@ +{ + "system": "chDB (rc, no FINAL, ZSTD, insert threads 1)", + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"] +} diff --git a/chdb-rc-parquet-not-null/README.md b/chdb-rc-parquet-not-null/README.md new file mode 100644 index 0000000000..ad3b28f08e --- /dev/null +++ b/chdb-rc-parquet-not-null/README.md @@ -0,0 +1,9 @@ +Diagnostic copy of `chdb-parquet-partitioned/` for a chdb-core release candidate. +Not meant to be merged. + +- `install` pins chdb-core to the same `CORE_TAG` used by the native RC tests. +- `create.sql` defines an explicit NOT NULL schema over `hits_*.parquet` with + `ENGINE = File(Parquet, ...)`, matching the ClickHouse Local benchmark shape. +- `query` creates that table outside the measured query interval. +- `queries.sql` addresses the explicit `hits` table instead of inferring a schema + from the parquet glob for every query. diff --git a/chdb-rc-parquet-not-null/benchmark.sh b/chdb-rc-parquet-not-null/benchmark.sh new file mode 100755 index 0000000000..b7ae16ae72 --- /dev/null +++ b/chdb-rc-parquet-not-null/benchmark.sh @@ -0,0 +1,9 @@ +#!/bin/bash +export BENCH_DOWNLOAD_SCRIPT="download-hits-parquet-partitioned" +export BENCH_RESTARTABLE=no +# Single-process engine: each query forks a fresh full-machine process with no +# shared scheduler across connections, so the concurrent-QPS test only +# oversubscribes RAM rather than measuring throughput. Skip it by default; +# override BENCH_CONCURRENT_DURATION to re-enable. See issue #946. +export BENCH_CONCURRENT_DURATION="${BENCH_CONCURRENT_DURATION:-0}" +exec ../lib/benchmark-common.sh diff --git a/chdb-rc-parquet-not-null/check b/chdb-rc-parquet-not-null/check new file mode 100755 index 0000000000..cd67e7c07c --- /dev/null +++ b/chdb-rc-parquet-not-null/check @@ -0,0 +1,6 @@ +#!/bin/bash +set -e + +# shellcheck disable=SC1091 +source myenv/bin/activate +python3 -c "import chdb; chdb.query('SELECT 1')" >/dev/null diff --git a/chdb-rc-parquet-not-null/create.sql b/chdb-rc-parquet-not-null/create.sql new file mode 100644 index 0000000000..180a5806e4 --- /dev/null +++ b/chdb-rc-parquet-not-null/create.sql @@ -0,0 +1,109 @@ +CREATE TABLE hits +( + WatchID BIGINT NOT NULL, + JavaEnable SMALLINT NOT NULL, + Title TEXT NOT NULL, + GoodEvent SMALLINT NOT NULL, + EventTime TIMESTAMP NOT NULL, + EventDate Date NOT NULL, + CounterID INTEGER NOT NULL, + ClientIP INTEGER NOT NULL, + RegionID INTEGER NOT NULL, + UserID BIGINT NOT NULL, + CounterClass SMALLINT NOT NULL, + OS SMALLINT NOT NULL, + UserAgent SMALLINT NOT NULL, + URL TEXT NOT NULL, + Referer TEXT NOT NULL, + IsRefresh SMALLINT NOT NULL, + RefererCategoryID SMALLINT NOT NULL, + RefererRegionID INTEGER NOT NULL, + URLCategoryID SMALLINT NOT NULL, + URLRegionID INTEGER NOT NULL, + ResolutionWidth SMALLINT NOT NULL, + ResolutionHeight SMALLINT NOT NULL, + ResolutionDepth SMALLINT NOT NULL, + FlashMajor SMALLINT NOT NULL, + FlashMinor SMALLINT NOT NULL, + FlashMinor2 TEXT NOT NULL, + NetMajor SMALLINT NOT NULL, + NetMinor SMALLINT NOT NULL, + UserAgentMajor SMALLINT NOT NULL, + UserAgentMinor VARCHAR(255) NOT NULL, + CookieEnable SMALLINT NOT NULL, + JavascriptEnable SMALLINT NOT NULL, + IsMobile SMALLINT NOT NULL, + MobilePhone SMALLINT NOT NULL, + MobilePhoneModel TEXT NOT NULL, + Params TEXT NOT NULL, + IPNetworkID INTEGER NOT NULL, + TraficSourceID SMALLINT NOT NULL, + SearchEngineID SMALLINT NOT NULL, + SearchPhrase TEXT NOT NULL, + AdvEngineID SMALLINT NOT NULL, + IsArtifical SMALLINT NOT NULL, + WindowClientWidth SMALLINT NOT NULL, + WindowClientHeight SMALLINT NOT NULL, + ClientTimeZone SMALLINT NOT NULL, + ClientEventTime TIMESTAMP NOT NULL, + SilverlightVersion1 SMALLINT NOT NULL, + SilverlightVersion2 SMALLINT NOT NULL, + SilverlightVersion3 INTEGER NOT NULL, + SilverlightVersion4 SMALLINT NOT NULL, + PageCharset TEXT NOT NULL, + CodeVersion INTEGER NOT NULL, + IsLink SMALLINT NOT NULL, + IsDownload SMALLINT NOT NULL, + IsNotBounce SMALLINT NOT NULL, + FUniqID BIGINT NOT NULL, + OriginalURL TEXT NOT NULL, + HID INTEGER NOT NULL, + IsOldCounter SMALLINT NOT NULL, + IsEvent SMALLINT NOT NULL, + IsParameter SMALLINT NOT NULL, + DontCountHits SMALLINT NOT NULL, + WithHash SMALLINT NOT NULL, + HitColor CHAR NOT NULL, + LocalEventTime TIMESTAMP NOT NULL, + Age SMALLINT NOT NULL, + Sex SMALLINT NOT NULL, + Income SMALLINT NOT NULL, + Interests SMALLINT NOT NULL, + Robotness SMALLINT NOT NULL, + RemoteIP INTEGER NOT NULL, + WindowName INTEGER NOT NULL, + OpenerName INTEGER NOT NULL, + HistoryLength SMALLINT NOT NULL, + BrowserLanguage TEXT NOT NULL, + BrowserCountry TEXT NOT NULL, + SocialNetwork TEXT NOT NULL, + SocialAction TEXT NOT NULL, + HTTPError SMALLINT NOT NULL, + SendTiming INTEGER NOT NULL, + DNSTiming INTEGER NOT NULL, + ConnectTiming INTEGER NOT NULL, + ResponseStartTiming INTEGER NOT NULL, + ResponseEndTiming INTEGER NOT NULL, + FetchTiming INTEGER NOT NULL, + SocialSourceNetworkID SMALLINT NOT NULL, + SocialSourcePage TEXT NOT NULL, + ParamPrice BIGINT NOT NULL, + ParamOrderID TEXT NOT NULL, + ParamCurrency TEXT NOT NULL, + ParamCurrencyID SMALLINT NOT NULL, + OpenstatServiceName TEXT NOT NULL, + OpenstatCampaignID TEXT NOT NULL, + OpenstatAdID TEXT NOT NULL, + OpenstatSourceID TEXT NOT NULL, + UTMSource TEXT NOT NULL, + UTMMedium TEXT NOT NULL, + UTMCampaign TEXT NOT NULL, + UTMContent TEXT NOT NULL, + UTMTerm TEXT NOT NULL, + FromTag TEXT NOT NULL, + HasGCLID SMALLINT NOT NULL, + RefererHash BIGINT NOT NULL, + URLHash BIGINT NOT NULL, + CLID INTEGER NOT NULL +) +ENGINE = File(Parquet, 'hits_*.parquet'); diff --git a/chdb-rc-parquet-not-null/data-size b/chdb-rc-parquet-not-null/data-size new file mode 100755 index 0000000000..2d6921ab6d --- /dev/null +++ b/chdb-rc-parquet-not-null/data-size @@ -0,0 +1,4 @@ +#!/bin/bash +set -e + +du -bcs hits_*.parquet | awk '/total$/ { print $1 }' diff --git a/chdb-rc-parquet-not-null/install b/chdb-rc-parquet-not-null/install new file mode 100755 index 0000000000..a381dee031 --- /dev/null +++ b/chdb-rc-parquet-not-null/install @@ -0,0 +1,53 @@ +#!/bin/bash +set -euo pipefail + +# Candidate chdb-core build under test; the stock chdb entry installs the latest release. +CORE_TAG=v26.9.1-rc.1 + +sudo apt-get update -y +sudo apt-get install -y python3-pip python3-venv + +if [ ! -d myenv ]; then + python3 -m venv myenv +fi + +# shellcheck disable=SC1091 +source myenv/bin/activate + +pip install --upgrade pip +pip install psutil pyarrow "chdb==4.4.0" + +wheel_url=$(python3 - "$CORE_TAG" <<'PY' +import json +import platform +import sys +import urllib.request + +tag = sys.argv[1] +release = json.load(urllib.request.urlopen( + f"https://api.github.com/repos/chdb-io/chdb-core/releases/tags/{tag}", timeout=30)) +arch = platform.machine() +for asset in release["assets"]: + name = asset["name"] + if name.endswith(".whl") and "_lite" not in name and "linux" in name and arch in name: + print(asset["browser_download_url"]) + break +else: + raise SystemExit(f"no full Linux wheel for chdb-core {tag} on {arch}") +PY +) +wheel=$(basename "$wheel_url") +curl -fSL --retry 3 -o "$wheel" "$wheel_url" +pip uninstall --quiet -y chdb-core || true +pip install --quiet "./$wheel" + +# The profiling script ships in the same tag. +curl -fSL --retry 3 -o load_profile.py \ + "https://raw.githubusercontent.com/chdb-io/chdb-core/${CORE_TAG}/benchmark/load_profile.py" + +python3 - <<'PY' +from importlib.metadata import version + +print(f"Installed chdb: {version('chdb')}") +print(f"Installed chdb-core: {version('chdb-core')}") +PY diff --git a/chdb-rc-parquet-not-null/load b/chdb-rc-parquet-not-null/load new file mode 100755 index 0000000000..c542d7092f --- /dev/null +++ b/chdb-rc-parquet-not-null/load @@ -0,0 +1,5 @@ +#!/bin/bash +# Queries use an explicit NOT NULL File(Parquet) table over hits_*.parquet. +# Nothing to load; the dataset is already in CWD. +set -e +sync diff --git a/chdb-rc-parquet-not-null/queries.sql b/chdb-rc-parquet-not-null/queries.sql new file mode 100644 index 0000000000..aa162e1327 --- /dev/null +++ b/chdb-rc-parquet-not-null/queries.sql @@ -0,0 +1,43 @@ +SELECT COUNT(*) FROM hits; +SELECT COUNT(*) FROM hits WHERE AdvEngineID <> 0; +SELECT SUM(AdvEngineID), COUNT(*), AVG(ResolutionWidth) FROM hits; +SELECT AVG(UserID) FROM hits; +SELECT COUNT(DISTINCT UserID) FROM hits; +SELECT COUNT(DISTINCT SearchPhrase) FROM hits; +SELECT MIN(EventDate), MAX(EventDate) FROM hits; +SELECT AdvEngineID, COUNT(*) FROM hits WHERE AdvEngineID <> 0 GROUP BY AdvEngineID ORDER BY COUNT(*) DESC; +SELECT RegionID, COUNT(DISTINCT UserID) AS u FROM hits GROUP BY RegionID ORDER BY u DESC LIMIT 10; +SELECT RegionID, SUM(AdvEngineID), COUNT(*) AS c, AVG(ResolutionWidth), COUNT(DISTINCT UserID) FROM hits GROUP BY RegionID ORDER BY c DESC LIMIT 10; +SELECT MobilePhoneModel, COUNT(DISTINCT UserID) AS u FROM hits WHERE MobilePhoneModel <> '' GROUP BY MobilePhoneModel ORDER BY u DESC LIMIT 10; +SELECT MobilePhone, MobilePhoneModel, COUNT(DISTINCT UserID) AS u FROM hits WHERE MobilePhoneModel <> '' GROUP BY MobilePhone, MobilePhoneModel ORDER BY u DESC LIMIT 10; +SELECT SearchPhrase, COUNT(*) AS c FROM hits WHERE SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY c DESC LIMIT 10; +SELECT SearchPhrase, COUNT(DISTINCT UserID) AS u FROM hits WHERE SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY u DESC LIMIT 10; +SELECT SearchEngineID, SearchPhrase, COUNT(*) AS c FROM hits WHERE SearchPhrase <> '' GROUP BY SearchEngineID, SearchPhrase ORDER BY c DESC LIMIT 10; +SELECT UserID, COUNT(*) FROM hits GROUP BY UserID ORDER BY COUNT(*) DESC LIMIT 10; +SELECT UserID, SearchPhrase, COUNT(*) FROM hits GROUP BY UserID, SearchPhrase ORDER BY COUNT(*) DESC LIMIT 10; +SELECT UserID, SearchPhrase, COUNT(*) FROM hits GROUP BY UserID, SearchPhrase LIMIT 10; +SELECT UserID, extract(minute FROM toDateTime(EventTime)) AS m, SearchPhrase, COUNT(*) FROM hits GROUP BY UserID, m, SearchPhrase ORDER BY COUNT(*) DESC LIMIT 10; +SELECT UserID FROM hits WHERE UserID = 435090932899640449; +SELECT COUNT(*) FROM hits WHERE URL LIKE '%google%'; +SELECT SearchPhrase, MIN(URL), COUNT(*) AS c FROM hits WHERE URL LIKE '%google%' AND SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY c DESC LIMIT 10; +SELECT SearchPhrase, MIN(URL), MIN(Title), COUNT(*) AS c, COUNT(DISTINCT UserID) FROM hits WHERE Title LIKE '%Google%' AND URL NOT LIKE '%.google.%' AND SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY c DESC LIMIT 10; +SELECT * FROM hits WHERE URL LIKE '%google%' ORDER BY EventTime LIMIT 10; +SELECT SearchPhrase FROM hits WHERE SearchPhrase <> '' ORDER BY EventTime LIMIT 10; +SELECT SearchPhrase FROM hits WHERE SearchPhrase <> '' ORDER BY SearchPhrase LIMIT 10; +SELECT SearchPhrase FROM hits WHERE SearchPhrase <> '' ORDER BY EventTime, SearchPhrase LIMIT 10; +SELECT CounterID, AVG(length(URL)) AS l, COUNT(*) AS c FROM hits WHERE URL <> '' GROUP BY CounterID HAVING COUNT(*) > 100000 ORDER BY l DESC LIMIT 25; +SELECT REGEXP_REPLACE(Referer, '^https?://(?:www\.)?([^/]+)/.*$', '\1') AS k, AVG(length(Referer)) AS l, COUNT(*) AS c, MIN(Referer) FROM hits WHERE Referer <> '' GROUP BY k HAVING COUNT(*) > 100000 ORDER BY l DESC LIMIT 25; +SELECT SUM(ResolutionWidth), SUM(ResolutionWidth + 1), SUM(ResolutionWidth + 2), SUM(ResolutionWidth + 3), SUM(ResolutionWidth + 4), SUM(ResolutionWidth + 5), SUM(ResolutionWidth + 6), SUM(ResolutionWidth + 7), SUM(ResolutionWidth + 8), SUM(ResolutionWidth + 9), SUM(ResolutionWidth + 10), SUM(ResolutionWidth + 11), SUM(ResolutionWidth + 12), SUM(ResolutionWidth + 13), SUM(ResolutionWidth + 14), SUM(ResolutionWidth + 15), SUM(ResolutionWidth + 16), SUM(ResolutionWidth + 17), SUM(ResolutionWidth + 18), SUM(ResolutionWidth + 19), SUM(ResolutionWidth + 20), SUM(ResolutionWidth + 21), SUM(ResolutionWidth + 22), SUM(ResolutionWidth + 23), SUM(ResolutionWidth + 24), SUM(ResolutionWidth + 25), SUM(ResolutionWidth + 26), SUM(ResolutionWidth + 27), SUM(ResolutionWidth + 28), SUM(ResolutionWidth + 29), SUM(ResolutionWidth + 30), SUM(ResolutionWidth + 31), SUM(ResolutionWidth + 32), SUM(ResolutionWidth + 33), SUM(ResolutionWidth + 34), SUM(ResolutionWidth + 35), SUM(ResolutionWidth + 36), SUM(ResolutionWidth + 37), SUM(ResolutionWidth + 38), SUM(ResolutionWidth + 39), SUM(ResolutionWidth + 40), SUM(ResolutionWidth + 41), SUM(ResolutionWidth + 42), SUM(ResolutionWidth + 43), SUM(ResolutionWidth + 44), SUM(ResolutionWidth + 45), SUM(ResolutionWidth + 46), SUM(ResolutionWidth + 47), SUM(ResolutionWidth + 48), SUM(ResolutionWidth + 49), SUM(ResolutionWidth + 50), SUM(ResolutionWidth + 51), SUM(ResolutionWidth + 52), SUM(ResolutionWidth + 53), SUM(ResolutionWidth + 54), SUM(ResolutionWidth + 55), SUM(ResolutionWidth + 56), SUM(ResolutionWidth + 57), SUM(ResolutionWidth + 58), SUM(ResolutionWidth + 59), SUM(ResolutionWidth + 60), SUM(ResolutionWidth + 61), SUM(ResolutionWidth + 62), SUM(ResolutionWidth + 63), SUM(ResolutionWidth + 64), SUM(ResolutionWidth + 65), SUM(ResolutionWidth + 66), SUM(ResolutionWidth + 67), SUM(ResolutionWidth + 68), SUM(ResolutionWidth + 69), SUM(ResolutionWidth + 70), SUM(ResolutionWidth + 71), SUM(ResolutionWidth + 72), SUM(ResolutionWidth + 73), SUM(ResolutionWidth + 74), SUM(ResolutionWidth + 75), SUM(ResolutionWidth + 76), SUM(ResolutionWidth + 77), SUM(ResolutionWidth + 78), SUM(ResolutionWidth + 79), SUM(ResolutionWidth + 80), SUM(ResolutionWidth + 81), SUM(ResolutionWidth + 82), SUM(ResolutionWidth + 83), SUM(ResolutionWidth + 84), SUM(ResolutionWidth + 85), SUM(ResolutionWidth + 86), SUM(ResolutionWidth + 87), SUM(ResolutionWidth + 88), SUM(ResolutionWidth + 89) FROM hits; +SELECT SearchEngineID, ClientIP, COUNT(*) AS c, SUM(IsRefresh), AVG(ResolutionWidth) FROM hits WHERE SearchPhrase <> '' GROUP BY SearchEngineID, ClientIP ORDER BY c DESC LIMIT 10; +SELECT WatchID, ClientIP, COUNT(*) AS c, SUM(IsRefresh), AVG(ResolutionWidth) FROM hits WHERE SearchPhrase <> '' GROUP BY WatchID, ClientIP ORDER BY c DESC LIMIT 10; +SELECT WatchID, ClientIP, COUNT(*) AS c, SUM(IsRefresh), AVG(ResolutionWidth) FROM hits GROUP BY WatchID, ClientIP ORDER BY c DESC LIMIT 10; +SELECT URL, COUNT(*) AS c FROM hits GROUP BY URL ORDER BY c DESC LIMIT 10; +SELECT 1, URL, COUNT(*) AS c FROM hits GROUP BY 1, URL ORDER BY c DESC LIMIT 10; +SELECT ClientIP, ClientIP - 1, ClientIP - 2, ClientIP - 3, COUNT(*) AS c FROM hits GROUP BY ClientIP, ClientIP - 1, ClientIP - 2, ClientIP - 3 ORDER BY c DESC LIMIT 10; +SELECT URL, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND toDate(EventDate) >= '2013-07-01' AND toDate(EventDate) <= '2013-07-31' AND DontCountHits = 0 AND IsRefresh = 0 AND URL <> '' GROUP BY URL ORDER BY PageViews DESC LIMIT 10; +SELECT Title, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND toDate(EventDate) >= '2013-07-01' AND toDate(EventDate) <= '2013-07-31' AND DontCountHits = 0 AND IsRefresh = 0 AND Title <> '' GROUP BY Title ORDER BY PageViews DESC LIMIT 10; +SELECT URL, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND toDate(EventDate) >= '2013-07-01' AND toDate(EventDate) <= '2013-07-31' AND IsRefresh = 0 AND IsLink <> 0 AND IsDownload = 0 GROUP BY URL ORDER BY PageViews DESC LIMIT 10 OFFSET 1000; +SELECT TraficSourceID, SearchEngineID, AdvEngineID, CASE WHEN (SearchEngineID = 0 AND AdvEngineID = 0) THEN Referer ELSE '' END AS Src, URL AS Dst, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND toDate(EventDate) >= '2013-07-01' AND toDate(EventDate) <= '2013-07-31' AND IsRefresh = 0 GROUP BY TraficSourceID, SearchEngineID, AdvEngineID, Src, Dst ORDER BY PageViews DESC LIMIT 10 OFFSET 1000; +SELECT URLHash, EventDate, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND toDate(EventDate) >= '2013-07-01' AND toDate(EventDate) <= '2013-07-31' AND IsRefresh = 0 AND TraficSourceID IN (-1, 6) AND RefererHash = 3594120000172545465 GROUP BY URLHash, EventDate ORDER BY PageViews DESC LIMIT 10 OFFSET 100; +SELECT WindowClientWidth, WindowClientHeight, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND toDate(EventDate) >= '2013-07-01' AND toDate(EventDate) <= '2013-07-31' AND IsRefresh = 0 AND DontCountHits = 0 AND URLHash = 2868770270353813622 GROUP BY WindowClientWidth, WindowClientHeight ORDER BY PageViews DESC LIMIT 10 OFFSET 10000; +SELECT DATE_TRUNC('minute', toDateTime(EventTime)) AS M, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND toDate(EventDate) >= '2013-07-14' AND toDate(EventDate) <= '2013-07-15' AND IsRefresh = 0 AND DontCountHits = 0 GROUP BY DATE_TRUNC('minute', toDateTime(EventTime)) ORDER BY DATE_TRUNC('minute', toDateTime(EventTime)) LIMIT 10 OFFSET 1000; diff --git a/chdb-rc-parquet-not-null/query b/chdb-rc-parquet-not-null/query new file mode 100755 index 0000000000..336f30d1ab --- /dev/null +++ b/chdb-rc-parquet-not-null/query @@ -0,0 +1,44 @@ +#!/bin/bash +# Reads a SQL query from stdin, runs it via chdb against the partitioned +# parquet files in CWD. +# Stdout: query result. +# Stderr: query runtime in fractional seconds on the last line. +set -e + +# shellcheck disable=SC1091 +source myenv/bin/activate + +# Stage stdin into a temp file: `python3 - <<'PY'` already consumes stdin to +# read the program, so sys.stdin.read() inside the heredoc returns "". +query_file=$(mktemp) +trap 'rm -f "$query_file"' EXIT +cat > "$query_file" + +python3 - "$query_file" <<'PY' +import sys +import timeit +import chdb + +with open(sys.argv[1]) as f: + query = f.read() + +with open("create.sql") as f: + create_query = f.read() + +conn = chdb.connect() +conn.query(create_query) + +start = timeit.default_timer() +try: + res = conn.query(query, "Pretty") + out = str(res) + end = timeit.default_timer() + if out: + sys.stdout.write(out) + if not out.endswith("\n"): + sys.stdout.write("\n") +finally: + conn.close() + +print(f"{end - start:.3f}", file=sys.stderr) +PY diff --git a/chdb-rc-parquet-not-null/results/20261009/c6a.2xlarge.json b/chdb-rc-parquet-not-null/results/20261009/c6a.2xlarge.json new file mode 100644 index 0000000000..54ccd010d7 --- /dev/null +++ b/chdb-rc-parquet-not-null/results/20261009/c6a.2xlarge.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc, Parquet partitioned, NOT NULL schema)", + "date": "2026-10-09", + "machine": "c6a.2xlarge", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 0, + "data_size": 14737666736, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.078, 0.016, 0.016], + [0.148, 0.038, 0.039], + [0.227, 0.077, 0.078], + [0.417, 0.09, 0.09], + [0.624, 0.49, 0.485], + [0.855, 0.727, 0.712], + [0.157, 0.039, 0.039], + [0.166, 0.04, 0.04], + [0.848, 0.725, 0.719], + [1.374, 0.821, 0.833], + [0.628, 0.208, 0.208], + [0.69, 0.245, 0.242], + [0.929, 0.621, 0.619], + [2.418, 0.884, 0.887], + [1.018, 0.818, 0.824], + [0.565, 0.401, 0.407], + [2.546, 1.685, 1.67], + [2.147, 0.641, 0.621], + [5.004, 3.05, 3.056], + [0.262, 0.101, 0.099], + [9.444, 1.098, 1.095], + [11.142, 1.205, 1.199], + [21.437, 1.777, 1.794], + [12.314, 1.301, 1.287], + [2.681, 0.479, 0.486], + [0.812, 0.297, 0.298], + [2.686, 0.483, 0.48], + [9.731, 1.705, 1.723], + [8.313, 2.558, 2.61], + [0.232, 0.084, 0.084], + [2.508, 0.769, 0.769], + [6.142, 0.937, 0.946], + [6.699, 3.257, 3.31], + [14.272, 7.899, 7.799], + [13.838, 7.058, 7.113], + [0.541, 0.387, 0.398], + [0.277, 0.106, 0.106], + [0.216, 0.063, 0.062], + [0.24, 0.056, 0.053], + [0.411, 0.205, 0.202], + [0.197, 0.051, 0.051], + [0.179, 0.046, 0.046], + [0.164, 0.037, 0.036] +] + } + \ No newline at end of file diff --git a/chdb-rc-parquet-not-null/results/20261009/c6a.4xlarge.json b/chdb-rc-parquet-not-null/results/20261009/c6a.4xlarge.json new file mode 100644 index 0000000000..c779e393fc --- /dev/null +++ b/chdb-rc-parquet-not-null/results/20261009/c6a.4xlarge.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc, Parquet partitioned, NOT NULL schema)", + "date": "2026-10-09", + "machine": "c6a.4xlarge", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 0, + "data_size": 14737666736, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.061, 0.013, 0.013], + [0.117, 0.03, 0.029], + [0.152, 0.05, 0.05], + [0.433, 0.075, 0.078], + [0.507, 0.292, 0.297], + [0.902, 0.44, 0.457], + [0.117, 0.029, 0.03], + [0.134, 0.031, 0.029], + [0.838, 0.526, 0.506], + [1.364, 0.564, 0.58], + [0.679, 0.165, 0.163], + [0.728, 0.181, 0.183], + [0.932, 0.479, 0.479], + [2.42, 0.719, 0.718], + [1.039, 0.619, 0.631], + [0.576, 0.334, 0.334], + [2.528, 1.331, 1.326], + [2.159, 0.559, 0.565], + [4.941, 2.524, 2.5], + [0.16, 0.066, 0.068], + [9.463, 1.071, 1.071], + [11.099, 1.168, 1.175], + [21.421, 1.513, 1.502], + [12.289, 1.238, 1.234], + [2.674, 0.33, 0.335], + [0.808, 0.236, 0.238], + [2.689, 0.335, 0.33], + [9.637, 1.812, 1.794], + [8.236, 2.286, 2.286], + [0.141, 0.059, 0.057], + [2.511, 0.475, 0.47], + [6.124, 0.66, 0.667], + [5.847, 2.4, 2.369], + [9.964, 2.255, 2.265], + [9.976, 2.247, 2.22], + [0.339, 0.254, 0.269], + [0.253, 0.09, 0.095], + [0.196, 0.056, 0.058], + [0.217, 0.048, 0.048], + [0.369, 0.172, 0.172], + [0.181, 0.043, 0.042], + [0.16, 0.038, 0.038], + [0.142, 0.03, 0.029] +] + } + \ No newline at end of file diff --git a/chdb-rc-parquet-not-null/results/20261009/c6a.large.json b/chdb-rc-parquet-not-null/results/20261009/c6a.large.json new file mode 100644 index 0000000000..471fc4f40c --- /dev/null +++ b/chdb-rc-parquet-not-null/results/20261009/c6a.large.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc, Parquet partitioned, NOT NULL schema)", + "date": "2026-10-09", + "machine": "c6a.large", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 0, + "data_size": 14737666736, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.202, 0.069, 0.07], + [0.463, 0.27, 0.26], + [0.889, 0.533, 0.53], + [1.353, 0.819, 0.813], + [2.553, 2.1, 2.096], + [3.896, 3.576, 3.587], + [0.535, 0.314, 0.305], + [0.498, 0.281, 0.278], + [4.145, 4.009, 3.948], + [4.873, 4.555, 4.608], + [2.075, 1.525, 1.534], + [2.331, 1.74, 1.757], + [4.556, 4.251, 4.355], + [7.373, 6.577, 6.705], + [5.989, 5.584, 5.561], + [3.057, 2.59, 2.624], + [24.2, 23.957, 24.255], + [5.675, 5.253, 5.333], + [44.027, 44.282, 44.558], + [1.084, 0.624, 0.631], + [11.908, 8.09, 8.15], + [14.542, 9.191, 10.406], + [21.846, 21.678, 21.84], + [14.317, 15.019, 13.755], + [4.822, 3.798, 3.806], + [2.927, 2.616, 2.558], + [4.804, 3.901, 3.793], + [18.249, 14.556, 14.943], + [25.6, 25.341, 25.45], + [0.757, 0.418, 0.408], + [6.123, 5.331, 5.341], + [8.196, 6.635, 6.619], + [57.793, 58.026, 56.686], + [39.887, 49.209, 40.229], + [39.635, 48.48, 39.701], + [2.663, 2.442, 2.446], + [0.615, 0.327, 0.324], + [0.46, 0.237, 0.23], + [0.456, 0.171, 0.162], + [0.917, 0.62, 0.604], + [0.376, 0.161, 0.17], + [0.356, 0.148, 0.155], + [0.33, 0.137, 0.13] +] + } + \ No newline at end of file diff --git a/chdb-rc-parquet-not-null/results/20261009/c6a.metal.json b/chdb-rc-parquet-not-null/results/20261009/c6a.metal.json new file mode 100644 index 0000000000..735c95eba9 --- /dev/null +++ b/chdb-rc-parquet-not-null/results/20261009/c6a.metal.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc, Parquet partitioned, NOT NULL schema)", + "date": "2026-10-09", + "machine": "c6a.metal", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 0, + "data_size": 14737666736, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.056, 0.012, 0.028], + [0.1, 0.059, 0.052], + [0.154, 0.065, 0.073], + [0.441, 0.081, 0.081], + [0.482, 0.137, 0.142], + [0.883, 0.171, 0.169], + [0.098, 0.062, 0.066], + [0.132, 0.066, 0.056], + [0.943, 0.355, 0.358], + [1.504, 0.365, 0.364], + [0.713, 0.157, 0.15], + [0.757, 0.157, 0.15], + [0.878, 0.165, 0.169], + [2.239, 0.236, 0.229], + [0.95, 0.198, 0.193], + [0.503, 0.128, 0.129], + [2.294, 0.287, 0.282], + [2.227, 0.163, 0.198], + [4.257, 0.486, 0.489], + [0.153, 0.061, 0.057], + [9.527, 0.356, 0.351], + [11.186, 0.319, 0.329], + [21.416, 0.377, 0.377], + [12.307, 0.365, 0.356], + [2.707, 0.133, 0.145], + [0.823, 0.134, 0.124], + [2.712, 0.141, 0.137], + [9.709, 0.445, 0.446], + [8.157, 0.521, 0.53], + [0.14, 0.078, 0.085], + [2.494, 0.194, 0.189], + [6.097, 0.22, 0.221], + [4.689, 0.528, 0.505], + [9.713, 0.632, 0.63], + [9.743, 0.603, 0.625], + [0.267, 0.109, 0.117], + [0.227, 0.089, 0.109], + [0.187, 0.074, 0.083], + [0.212, 0.067, 0.069], + [0.379, 0.183, 0.13], + [0.177, 0.056, 0.048], + [0.143, 0.043, 0.054], + [0.132, 0.046, 0.047] +] + } + \ No newline at end of file diff --git a/chdb-rc-parquet-not-null/results/20261009/c6a.xlarge.json b/chdb-rc-parquet-not-null/results/20261009/c6a.xlarge.json new file mode 100644 index 0000000000..be2b09c172 --- /dev/null +++ b/chdb-rc-parquet-not-null/results/20261009/c6a.xlarge.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc, Parquet partitioned, NOT NULL schema)", + "date": "2026-10-09", + "machine": "c6a.xlarge", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 0, + "data_size": 14737666736, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.096, 0.025, 0.025], + [0.21, 0.062, 0.062], + [0.372, 0.142, 0.139], + [0.52, 0.149, 0.147], + [0.983, 0.712, 0.722], + [1.498, 1.291, 1.297], + [0.242, 0.061, 0.061], + [0.231, 0.064, 0.063], + [1.501, 1.294, 1.285], + [1.907, 1.509, 1.512], + [0.715, 0.352, 0.355], + [0.782, 0.434, 0.435], + [1.351, 1.098, 1.081], + [2.588, 1.583, 1.543], + [1.719, 1.445, 1.455], + [0.954, 0.71, 0.703], + [3.086, 2.828, 2.832], + [2.128, 1.121, 1.119], + [15.723, 14.963, 15.053], + [0.505, 0.179, 0.178], + [9.556, 1.695, 1.707], + [11.179, 1.912, 1.929], + [21.442, 3, 3.004], + [12.306, 1.99, 2.006], + [2.669, 0.872, 0.871], + [0.858, 0.531, 0.529], + [2.671, 0.874, 0.869], + [9.647, 2.104, 2.104], + [8.457, 4.382, 4.367], + [0.435, 0.144, 0.144], + [3.819, 1.451, 1.457], + [6.176, 1.657, 1.665], + [24.098, 21.742, 21.633], + [19.474, 16.412, 17.18], + [19.557, 14.292, 16.966], + [0.913, 0.707, 0.708], + [0.335, 0.127, 0.13], + [0.262, 0.088, 0.084], + [0.296, 0.075, 0.075], + [0.461, 0.233, 0.255], + [0.25, 0.068, 0.078], + [0.221, 0.063, 0.064], + [0.202, 0.05, 0.052] +] + } + \ No newline at end of file diff --git a/chdb-rc-parquet-not-null/results/20261009/c7a.metal-48xl.json b/chdb-rc-parquet-not-null/results/20261009/c7a.metal-48xl.json new file mode 100644 index 0000000000..098e05ad0e --- /dev/null +++ b/chdb-rc-parquet-not-null/results/20261009/c7a.metal-48xl.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc, Parquet partitioned, NOT NULL schema)", + "date": "2026-10-09", + "machine": "c7a.metal-48xl", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 0, + "data_size": 14737666736, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.069, 0.037, 0.01], + [0.115, 0.061, 0.054], + [0.149, 0.078, 0.084], + [0.435, 0.092, 0.091], + [0.482, 0.121, 0.13], + [0.875, 0.173, 0.162], + [0.108, 0.071, 0.061], + [0.133, 0.06, 0.063], + [0.94, 0.354, 0.355], + [1.494, 0.357, 0.369], + [0.714, 0.173, 0.171], + [0.761, 0.169, 0.166], + [0.879, 0.152, 0.172], + [2.235, 0.212, 0.203], + [0.936, 0.172, 0.185], + [0.488, 0.118, 0.115], + [2.254, 0.207, 0.21], + [2.243, 0.17, 0.15], + [4.188, 0.309, 0.323], + [0.143, 0.057, 0.06], + [9.542, 0.333, 0.338], + [11.208, 0.295, 0.292], + [21.457, 0.315, 0.305], + [12.309, 0.343, 0.347], + [2.713, 0.152, 0.14], + [0.846, 0.121, 0.134], + [2.717, 0.149, 0.144], + [9.714, 0.383, 0.363], + [8.107, 0.293, 0.304], + [0.147, 0.081, 0.076], + [2.508, 0.19, 0.179], + [6.097, 0.202, 0.195], + [4.561, 0.337, 0.337], + [9.648, 0.438, 0.471], + [9.654, 0.461, 0.457], + [0.218, 0.109, 0.107], + [0.243, 0.089, 0.098], + [0.194, 0.075, 0.08], + [0.21, 0.062, 0.07], + [0.34, 0.14, 0.119], + [0.177, 0.065, 0.052], + [0.157, 0.047, 0.042], + [0.142, 0.036, 0.037] +] + } + \ No newline at end of file diff --git a/chdb-rc-parquet-not-null/results/20261009/c8g.4xlarge.json b/chdb-rc-parquet-not-null/results/20261009/c8g.4xlarge.json new file mode 100644 index 0000000000..5bb19d10c3 --- /dev/null +++ b/chdb-rc-parquet-not-null/results/20261009/c8g.4xlarge.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc, Parquet partitioned, NOT NULL schema)", + "date": "2026-10-09", + "machine": "c8g.4xlarge", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 0, + "data_size": 14737666736, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.04, 0.007, 0.012], + [0.089, 0.024, 0.023], + [0.164, 0.035, 0.033], + [0.412, 0.046, 0.04], + [0.471, 0.163, 0.165], + [0.845, 0.227, 0.225], + [0.097, 0.022, 0.022], + [0.099, 0.023, 0.023], + [0.751, 0.29, 0.266], + [1.3, 0.309, 0.318], + [0.646, 0.125, 0.119], + [0.698, 0.138, 0.132], + [0.842, 0.251, 0.251], + [2.227, 0.314, 0.313], + [0.905, 0.291, 0.291], + [0.475, 0.154, 0.163], + [2.275, 0.555, 0.543], + [2.145, 0.227, 0.229], + [4.215, 0.883, 0.891], + [0.16, 0.043, 0.049], + [9.429, 0.377, 0.377], + [11.143, 0.434, 0.42], + [21.406, 0.68, 0.665], + [12.278, 0.451, 0.461], + [2.67, 0.196, 0.188], + [0.792, 0.138, 0.136], + [2.673, 0.2, 0.204], + [9.607, 0.457, 0.46], + [8.08, 0.828, 0.83], + [0.131, 0.048, 0.047], + [2.455, 0.298, 0.294], + [6.04, 0.348, 0.355], + [4.865, 0.847, 0.863], + [9.583, 0.953, 0.94], + [9.58, 0.93, 0.914], + [0.24, 0.144, 0.14], + [0.192, 0.071, 0.07], + [0.163, 0.047, 0.044], + [0.171, 0.038, 0.035], + [0.282, 0.13, 0.131], + [0.116, 0.038, 0.031], + [0.108, 0.026, 0.034], + [0.098, 0.023, 0.02] +] + } + \ No newline at end of file diff --git a/chdb-rc-parquet-not-null/results/20261009/c8g.metal-48xl.json b/chdb-rc-parquet-not-null/results/20261009/c8g.metal-48xl.json new file mode 100644 index 0000000000..8a2b178640 --- /dev/null +++ b/chdb-rc-parquet-not-null/results/20261009/c8g.metal-48xl.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc, Parquet partitioned, NOT NULL schema)", + "date": "2026-10-09", + "machine": "c8g.metal-48xl", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 0, + "data_size": 14737666736, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.053, 0.017, 0.024], + [0.099, 0.032, 0.03], + [0.163, 0.047, 0.046], + [0.435, 0.045, 0.048], + [0.471, 0.089, 0.087], + [0.844, 0.108, 0.103], + [0.096, 0.035, 0.044], + [0.115, 0.031, 0.047], + [0.855, 0.255, 0.248], + [1.418, 0.276, 0.274], + [0.689, 0.105, 0.116], + [0.986, 0.105, 0.117], + [0.841, 0.118, 0.125], + [2.172, 0.162, 0.158], + [0.901, 0.129, 0.144], + [0.61, 0.085, 0.087], + [2.235, 0.198, 0.196], + [2.168, 0.14, 0.127], + [4.175, 0.323, 0.326], + [0.318, 0.051, 0.046], + [9.458, 0.271, 0.273], + [11.178, 0.313, 0.312], + [21.415, 0.336, 0.327], + [12.288, 0.334, 0.34], + [2.685, 0.106, 0.109], + [0.802, 0.084, 0.082], + [2.683, 0.111, 0.109], + [9.66, 0.364, 0.365], + [8.062, 0.317, 0.319], + [0.175, 0.066, 0.06], + [2.451, 0.133, 0.13], + [6.06, 0.167, 0.158], + [4.543, 0.349, 0.315], + [9.551, 0.423, 0.452], + [9.562, 0.4, 0.397], + [0.244, 0.076, 0.08], + [0.195, 0.08, 0.063], + [0.142, 0.044, 0.047], + [0.171, 0.056, 0.041], + [0.298, 0.107, 0.12], + [0.124, 0.038, 0.042], + [0.126, 0.031, 0.032], + [0.098, 0.034, 0.032] +] + } + \ No newline at end of file diff --git a/chdb-rc-parquet-not-null/results/20261009/t3a.small.json b/chdb-rc-parquet-not-null/results/20261009/t3a.small.json new file mode 100644 index 0000000000..55539b9e5f --- /dev/null +++ b/chdb-rc-parquet-not-null/results/20261009/t3a.small.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc, Parquet partitioned, NOT NULL schema)", + "date": "2026-10-09", + "machine": "t3a.small", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 0, + "data_size": 14737666736, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.446, 0.163, 0.171], + [0.984, 0.556, 0.574], + [1.659, 1.061, 1.053], + [2.999, 1.666, 1.665], + [4.935, 3.779, 3.69], + [7.692, 6.432, 6.447], + [1.059, 0.622, 0.645], + [1.041, 0.64, 0.645], + [9.248, 8.548, 8.257], + [10.328, 9.621, 9.52], + [4.139, 2.782, 2.833], + [4.477, 3.345, 3.325], + [16.605, 16.177, 16.289], + [28.419, 28.076, 28.711], + [21.862, 20.751, 20.785], + [11.003, 10.094, 9.855], + [50.301, 51.93, 49.933], + [10.61, 9.367, 9.584], + [90.445, 86.86, 85.57], + [2.453, 1.441, 1.411], + [27.229, 26.965, 26.905], + [28.864, 29.448, 28.462], + [45.751, 45.452, 45.056], + [29.74, 28.848, 29.988], + [9.434, 7.265, 7.116], + [6.253, 4.317, 4.424], + [9.292, 7.228, 7.226], + [33.743, 34.054, 33.751], + [54.184, 54.254, 53.491], + [1.464, 0.872, 0.87], + [11.702, 10.108, 10.035], + [26.209, 56.927, 26.491], + [123.66, 134.378, 124.511], + [97.001, 96.18, 96.95], + [97.27, 97.188, 96.992], + [4.375, 3.765, 3.729], + [1.162, 0.646, 0.679], + [0.883, 0.481, 0.471], + [0.923, 0.371, 0.374], + [1.699, 1.153, 1.188], + [0.787, 0.36, 0.377], + [0.723, 0.365, 0.352], + [0.688, 0.316, 0.308] +] + } + \ No newline at end of file diff --git a/chdb-rc-parquet-not-null/start b/chdb-rc-parquet-not-null/start new file mode 100755 index 0000000000..06bd986563 --- /dev/null +++ b/chdb-rc-parquet-not-null/start @@ -0,0 +1,2 @@ +#!/bin/bash +exit 0 diff --git a/chdb-rc-parquet-not-null/stop b/chdb-rc-parquet-not-null/stop new file mode 100755 index 0000000000..06bd986563 --- /dev/null +++ b/chdb-rc-parquet-not-null/stop @@ -0,0 +1,2 @@ +#!/bin/bash +exit 0 diff --git a/chdb-rc-parquet-not-null/template.json b/chdb-rc-parquet-not-null/template.json new file mode 100644 index 0000000000..2e14f48f27 --- /dev/null +++ b/chdb-rc-parquet-not-null/template.json @@ -0,0 +1,7 @@ +{ + "system": "chDB (rc, Parquet partitioned, NOT NULL schema)", + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"] +} diff --git a/chdb-rc/README.md b/chdb-rc/README.md new file mode 100644 index 0000000000..9b7375a599 --- /dev/null +++ b/chdb-rc/README.md @@ -0,0 +1,6 @@ +Diagnostic copy of `chdb/` for a chdb-core release candidate. Not meant to be merged. + +- `install` pins chdb-core to the `CORE_TAG` release instead of the latest one. +- `create.sql` relies on chdb-core's default for `auto_statistics_types` instead of setting it. +- After the measured flow, `profile` repeats the load with part_log and query_log enabled and + prints a JSON report between `=== load_profile json ===` and `=== load_profile end ===`. diff --git a/chdb-rc/benchmark.sh b/chdb-rc/benchmark.sh new file mode 100755 index 0000000000..9fc3378847 --- /dev/null +++ b/chdb-rc/benchmark.sh @@ -0,0 +1,7 @@ +#!/bin/bash +export BENCH_DOWNLOAD_SCRIPT="download-hits-csv" +export BENCH_RESTARTABLE=no +# See chdb/benchmark.sh. +export BENCH_CONCURRENT_DURATION="${BENCH_CONCURRENT_DURATION:-0}" +../lib/benchmark-common.sh +./profile diff --git a/chdb-rc/check b/chdb-rc/check new file mode 100755 index 0000000000..cd67e7c07c --- /dev/null +++ b/chdb-rc/check @@ -0,0 +1,6 @@ +#!/bin/bash +set -e + +# shellcheck disable=SC1091 +source myenv/bin/activate +python3 -c "import chdb; chdb.query('SELECT 1')" >/dev/null diff --git a/chdb-rc/create.sql b/chdb-rc/create.sql new file mode 100644 index 0000000000..d4149f26c7 --- /dev/null +++ b/chdb-rc/create.sql @@ -0,0 +1,115 @@ +CREATE DATABASE IF NOT EXISTS clickbench ENGINE = Atomic; + +USE clickbench; + +CREATE TABLE IF NOT EXISTS hits +( + WatchID BIGINT NOT NULL, + JavaEnable SMALLINT NOT NULL, + Title TEXT NOT NULL, + GoodEvent SMALLINT NOT NULL, + EventTime TIMESTAMP NOT NULL, + EventDate Date NOT NULL, + CounterID INTEGER NOT NULL, + ClientIP INTEGER NOT NULL, + RegionID INTEGER NOT NULL, + UserID BIGINT NOT NULL, + CounterClass SMALLINT NOT NULL, + OS SMALLINT NOT NULL, + UserAgent SMALLINT NOT NULL, + URL TEXT NOT NULL, + Referer TEXT NOT NULL, + IsRefresh SMALLINT NOT NULL, + RefererCategoryID SMALLINT NOT NULL, + RefererRegionID INTEGER NOT NULL, + URLCategoryID SMALLINT NOT NULL, + URLRegionID INTEGER NOT NULL, + ResolutionWidth SMALLINT NOT NULL, + ResolutionHeight SMALLINT NOT NULL, + ResolutionDepth SMALLINT NOT NULL, + FlashMajor SMALLINT NOT NULL, + FlashMinor SMALLINT NOT NULL, + FlashMinor2 TEXT NOT NULL, + NetMajor SMALLINT NOT NULL, + NetMinor SMALLINT NOT NULL, + UserAgentMajor SMALLINT NOT NULL, + UserAgentMinor VARCHAR(255) NOT NULL, + CookieEnable SMALLINT NOT NULL, + JavascriptEnable SMALLINT NOT NULL, + IsMobile SMALLINT NOT NULL, + MobilePhone SMALLINT NOT NULL, + MobilePhoneModel TEXT NOT NULL, + Params TEXT NOT NULL, + IPNetworkID INTEGER NOT NULL, + TraficSourceID SMALLINT NOT NULL, + SearchEngineID SMALLINT NOT NULL, + SearchPhrase TEXT NOT NULL, + AdvEngineID SMALLINT NOT NULL, + IsArtifical SMALLINT NOT NULL, + WindowClientWidth SMALLINT NOT NULL, + WindowClientHeight SMALLINT NOT NULL, + ClientTimeZone SMALLINT NOT NULL, + ClientEventTime TIMESTAMP NOT NULL, + SilverlightVersion1 SMALLINT NOT NULL, + SilverlightVersion2 SMALLINT NOT NULL, + SilverlightVersion3 INTEGER NOT NULL, + SilverlightVersion4 SMALLINT NOT NULL, + PageCharset TEXT NOT NULL, + CodeVersion INTEGER NOT NULL, + IsLink SMALLINT NOT NULL, + IsDownload SMALLINT NOT NULL, + IsNotBounce SMALLINT NOT NULL, + FUniqID BIGINT NOT NULL, + OriginalURL TEXT NOT NULL, + HID INTEGER NOT NULL, + IsOldCounter SMALLINT NOT NULL, + IsEvent SMALLINT NOT NULL, + IsParameter SMALLINT NOT NULL, + DontCountHits SMALLINT NOT NULL, + WithHash SMALLINT NOT NULL, + HitColor CHAR NOT NULL, + LocalEventTime TIMESTAMP NOT NULL, + Age SMALLINT NOT NULL, + Sex SMALLINT NOT NULL, + Income SMALLINT NOT NULL, + Interests SMALLINT NOT NULL, + Robotness SMALLINT NOT NULL, + RemoteIP INTEGER NOT NULL, + WindowName INTEGER NOT NULL, + OpenerName INTEGER NOT NULL, + HistoryLength SMALLINT NOT NULL, + BrowserLanguage TEXT NOT NULL, + BrowserCountry TEXT NOT NULL, + SocialNetwork TEXT NOT NULL, + SocialAction TEXT NOT NULL, + HTTPError SMALLINT NOT NULL, + SendTiming INTEGER NOT NULL, + DNSTiming INTEGER NOT NULL, + ConnectTiming INTEGER NOT NULL, + ResponseStartTiming INTEGER NOT NULL, + ResponseEndTiming INTEGER NOT NULL, + FetchTiming INTEGER NOT NULL, + SocialSourceNetworkID SMALLINT NOT NULL, + SocialSourcePage TEXT NOT NULL, + ParamPrice BIGINT NOT NULL, + ParamOrderID TEXT NOT NULL, + ParamCurrency TEXT NOT NULL, + ParamCurrencyID SMALLINT NOT NULL, + OpenstatServiceName TEXT NOT NULL, + OpenstatCampaignID TEXT NOT NULL, + OpenstatAdID TEXT NOT NULL, + OpenstatSourceID TEXT NOT NULL, + UTMSource TEXT NOT NULL, + UTMMedium TEXT NOT NULL, + UTMCampaign TEXT NOT NULL, + UTMContent TEXT NOT NULL, + UTMTerm TEXT NOT NULL, + FromTag TEXT NOT NULL, + HasGCLID SMALLINT NOT NULL, + RefererHash BIGINT NOT NULL, + URLHash BIGINT NOT NULL, + CLID INTEGER NOT NULL, + PRIMARY KEY (CounterID, EventDate, UserID, EventTime, WatchID) +) +ENGINE = MergeTree; + diff --git a/chdb-rc/data-size b/chdb-rc/data-size new file mode 100755 index 0000000000..226c121b8f --- /dev/null +++ b/chdb-rc/data-size @@ -0,0 +1,4 @@ +#!/bin/bash +set -e + +du -bcs .clickbench | awk '/total$/ { print $1 }' diff --git a/chdb-rc/insert.sql b/chdb-rc/insert.sql new file mode 100644 index 0000000000..c9cbb59a1f --- /dev/null +++ b/chdb-rc/insert.sql @@ -0,0 +1,3 @@ +INSERT INTO clickbench.hits +SELECT * +FROM file('hits.csv'); diff --git a/chdb-rc/install b/chdb-rc/install new file mode 100755 index 0000000000..a381dee031 --- /dev/null +++ b/chdb-rc/install @@ -0,0 +1,53 @@ +#!/bin/bash +set -euo pipefail + +# Candidate chdb-core build under test; the stock chdb entry installs the latest release. +CORE_TAG=v26.9.1-rc.1 + +sudo apt-get update -y +sudo apt-get install -y python3-pip python3-venv + +if [ ! -d myenv ]; then + python3 -m venv myenv +fi + +# shellcheck disable=SC1091 +source myenv/bin/activate + +pip install --upgrade pip +pip install psutil pyarrow "chdb==4.4.0" + +wheel_url=$(python3 - "$CORE_TAG" <<'PY' +import json +import platform +import sys +import urllib.request + +tag = sys.argv[1] +release = json.load(urllib.request.urlopen( + f"https://api.github.com/repos/chdb-io/chdb-core/releases/tags/{tag}", timeout=30)) +arch = platform.machine() +for asset in release["assets"]: + name = asset["name"] + if name.endswith(".whl") and "_lite" not in name and "linux" in name and arch in name: + print(asset["browser_download_url"]) + break +else: + raise SystemExit(f"no full Linux wheel for chdb-core {tag} on {arch}") +PY +) +wheel=$(basename "$wheel_url") +curl -fSL --retry 3 -o "$wheel" "$wheel_url" +pip uninstall --quiet -y chdb-core || true +pip install --quiet "./$wheel" + +# The profiling script ships in the same tag. +curl -fSL --retry 3 -o load_profile.py \ + "https://raw.githubusercontent.com/chdb-io/chdb-core/${CORE_TAG}/benchmark/load_profile.py" + +python3 - <<'PY' +from importlib.metadata import version + +print(f"Installed chdb: {version('chdb')}") +print(f"Installed chdb-core: {version('chdb-core')}") +PY diff --git a/chdb-rc/load b/chdb-rc/load new file mode 100755 index 0000000000..7c27f952db --- /dev/null +++ b/chdb-rc/load @@ -0,0 +1,25 @@ +#!/bin/bash +set -e + +# shellcheck disable=SC1091 +source myenv/bin/activate + +# Idempotent: blow away any prior data dir. +rm -rf .clickbench + +python3 - <<'PY' +from chdb import dbapi + +con = dbapi.connect(path=".clickbench") +cur = con.cursor() + +cur.execute(open("create.sql").read()) +cur.execute(open("insert.sql").read()) +cur.execute("OPTIMIZE TABLE clickbench.hits FINAL") + +cur.close() +con.close() +PY + +# hits.csv stays for ./profile, which benchmark.sh runs after the measured flow. +sync diff --git a/chdb-rc/profile b/chdb-rc/profile new file mode 100755 index 0000000000..1e80ee7b80 --- /dev/null +++ b/chdb-rc/profile @@ -0,0 +1,25 @@ +#!/bin/bash +# Repeat the load once more, outside every measured window, with part_log and +# query_log on, and print where the parts and the time went. +set -e + +# shellcheck disable=SC1091 +source myenv/bin/activate + +rm -rf .clickbench .profile +sync + +echo "=== load_profile begin ===" +python3 load_profile.py \ + --path .profile \ + --create create.sql \ + --load "$(tr '\n' ' ' < insert.sql | sed 's/;[[:space:]]*$//')" \ + --table hits \ + --final \ + --out profile.json +echo "=== load_profile json ===" +python3 -c "import json; r = json.load(open('profile.json')); r['pipeline'].pop('explain_pipeline'); print(json.dumps(r))" +echo "=== load_profile end ===" + +rm -rf .profile hits.csv +sync diff --git a/chdb-rc/queries.sql b/chdb-rc/queries.sql new file mode 100644 index 0000000000..4b05870ab9 --- /dev/null +++ b/chdb-rc/queries.sql @@ -0,0 +1,43 @@ +SELECT COUNT(*) FROM clickbench.hits; +SELECT COUNT(*) FROM clickbench.hits WHERE AdvEngineID <> 0; +SELECT SUM(AdvEngineID), COUNT(*), AVG(ResolutionWidth) FROM clickbench.hits; +SELECT AVG(UserID) FROM clickbench.hits; +SELECT COUNT(DISTINCT UserID) FROM clickbench.hits; +SELECT COUNT(DISTINCT SearchPhrase) FROM clickbench.hits; +SELECT MIN(EventDate), MAX(EventDate) FROM clickbench.hits; +SELECT AdvEngineID, COUNT(*) FROM clickbench.hits WHERE AdvEngineID <> 0 GROUP BY AdvEngineID ORDER BY COUNT(*) DESC; +SELECT RegionID, COUNT(DISTINCT UserID) AS u FROM clickbench.hits GROUP BY RegionID ORDER BY u DESC LIMIT 10; +SELECT RegionID, SUM(AdvEngineID), COUNT(*) AS c, AVG(ResolutionWidth), COUNT(DISTINCT UserID) FROM clickbench.hits GROUP BY RegionID ORDER BY c DESC LIMIT 10; +SELECT MobilePhoneModel, COUNT(DISTINCT UserID) AS u FROM clickbench.hits WHERE MobilePhoneModel <> '' GROUP BY MobilePhoneModel ORDER BY u DESC LIMIT 10; +SELECT MobilePhone, MobilePhoneModel, COUNT(DISTINCT UserID) AS u FROM clickbench.hits WHERE MobilePhoneModel <> '' GROUP BY MobilePhone, MobilePhoneModel ORDER BY u DESC LIMIT 10; +SELECT SearchPhrase, COUNT(*) AS c FROM clickbench.hits WHERE SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY c DESC LIMIT 10; +SELECT SearchPhrase, COUNT(DISTINCT UserID) AS u FROM clickbench.hits WHERE SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY u DESC LIMIT 10; +SELECT SearchEngineID, SearchPhrase, COUNT(*) AS c FROM clickbench.hits WHERE SearchPhrase <> '' GROUP BY SearchEngineID, SearchPhrase ORDER BY c DESC LIMIT 10; +SELECT UserID, COUNT(*) FROM clickbench.hits GROUP BY UserID ORDER BY COUNT(*) DESC LIMIT 10; +SELECT UserID, SearchPhrase, COUNT(*) FROM clickbench.hits GROUP BY UserID, SearchPhrase ORDER BY COUNT(*) DESC LIMIT 10; +SELECT UserID, SearchPhrase, COUNT(*) FROM clickbench.hits GROUP BY UserID, SearchPhrase LIMIT 10; +SELECT UserID, extract(minute FROM EventTime) AS m, SearchPhrase, COUNT(*) FROM clickbench.hits GROUP BY UserID, m, SearchPhrase ORDER BY COUNT(*) DESC LIMIT 10; +SELECT UserID FROM clickbench.hits WHERE UserID = 435090932899640449; +SELECT COUNT(*) FROM clickbench.hits WHERE URL LIKE '%google%'; +SELECT SearchPhrase, MIN(URL), COUNT(*) AS c FROM clickbench.hits WHERE URL LIKE '%google%' AND SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY c DESC LIMIT 10; +SELECT SearchPhrase, MIN(URL), MIN(Title), COUNT(*) AS c, COUNT(DISTINCT UserID) FROM clickbench.hits WHERE Title LIKE '%Google%' AND URL NOT LIKE '%.google.%' AND SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY c DESC LIMIT 10; +SELECT * FROM clickbench.hits WHERE URL LIKE '%google%' ORDER BY EventTime LIMIT 10; +SELECT SearchPhrase FROM clickbench.hits WHERE SearchPhrase <> '' ORDER BY EventTime LIMIT 10; +SELECT SearchPhrase FROM clickbench.hits WHERE SearchPhrase <> '' ORDER BY SearchPhrase LIMIT 10; +SELECT SearchPhrase FROM clickbench.hits WHERE SearchPhrase <> '' ORDER BY EventTime, SearchPhrase LIMIT 10; +SELECT CounterID, AVG(length(URL)) AS l, COUNT(*) AS c FROM clickbench.hits WHERE URL <> '' GROUP BY CounterID HAVING COUNT(*) > 100000 ORDER BY l DESC LIMIT 25; +SELECT REGEXP_REPLACE(Referer, '^https?://(?:www\.)?([^/]+)/.*$', '\1') AS k, AVG(length(Referer)) AS l, COUNT(*) AS c, MIN(Referer) FROM clickbench.hits WHERE Referer <> '' GROUP BY k HAVING COUNT(*) > 100000 ORDER BY l DESC LIMIT 25; +SELECT SUM(ResolutionWidth), SUM(ResolutionWidth + 1), SUM(ResolutionWidth + 2), SUM(ResolutionWidth + 3), SUM(ResolutionWidth + 4), SUM(ResolutionWidth + 5), SUM(ResolutionWidth + 6), SUM(ResolutionWidth + 7), SUM(ResolutionWidth + 8), SUM(ResolutionWidth + 9), SUM(ResolutionWidth + 10), SUM(ResolutionWidth + 11), SUM(ResolutionWidth + 12), SUM(ResolutionWidth + 13), SUM(ResolutionWidth + 14), SUM(ResolutionWidth + 15), SUM(ResolutionWidth + 16), SUM(ResolutionWidth + 17), SUM(ResolutionWidth + 18), SUM(ResolutionWidth + 19), SUM(ResolutionWidth + 20), SUM(ResolutionWidth + 21), SUM(ResolutionWidth + 22), SUM(ResolutionWidth + 23), SUM(ResolutionWidth + 24), SUM(ResolutionWidth + 25), SUM(ResolutionWidth + 26), SUM(ResolutionWidth + 27), SUM(ResolutionWidth + 28), SUM(ResolutionWidth + 29), SUM(ResolutionWidth + 30), SUM(ResolutionWidth + 31), SUM(ResolutionWidth + 32), SUM(ResolutionWidth + 33), SUM(ResolutionWidth + 34), SUM(ResolutionWidth + 35), SUM(ResolutionWidth + 36), SUM(ResolutionWidth + 37), SUM(ResolutionWidth + 38), SUM(ResolutionWidth + 39), SUM(ResolutionWidth + 40), SUM(ResolutionWidth + 41), SUM(ResolutionWidth + 42), SUM(ResolutionWidth + 43), SUM(ResolutionWidth + 44), SUM(ResolutionWidth + 45), SUM(ResolutionWidth + 46), SUM(ResolutionWidth + 47), SUM(ResolutionWidth + 48), SUM(ResolutionWidth + 49), SUM(ResolutionWidth + 50), SUM(ResolutionWidth + 51), SUM(ResolutionWidth + 52), SUM(ResolutionWidth + 53), SUM(ResolutionWidth + 54), SUM(ResolutionWidth + 55), SUM(ResolutionWidth + 56), SUM(ResolutionWidth + 57), SUM(ResolutionWidth + 58), SUM(ResolutionWidth + 59), SUM(ResolutionWidth + 60), SUM(ResolutionWidth + 61), SUM(ResolutionWidth + 62), SUM(ResolutionWidth + 63), SUM(ResolutionWidth + 64), SUM(ResolutionWidth + 65), SUM(ResolutionWidth + 66), SUM(ResolutionWidth + 67), SUM(ResolutionWidth + 68), SUM(ResolutionWidth + 69), SUM(ResolutionWidth + 70), SUM(ResolutionWidth + 71), SUM(ResolutionWidth + 72), SUM(ResolutionWidth + 73), SUM(ResolutionWidth + 74), SUM(ResolutionWidth + 75), SUM(ResolutionWidth + 76), SUM(ResolutionWidth + 77), SUM(ResolutionWidth + 78), SUM(ResolutionWidth + 79), SUM(ResolutionWidth + 80), SUM(ResolutionWidth + 81), SUM(ResolutionWidth + 82), SUM(ResolutionWidth + 83), SUM(ResolutionWidth + 84), SUM(ResolutionWidth + 85), SUM(ResolutionWidth + 86), SUM(ResolutionWidth + 87), SUM(ResolutionWidth + 88), SUM(ResolutionWidth + 89) FROM clickbench.hits; +SELECT SearchEngineID, ClientIP, COUNT(*) AS c, SUM(IsRefresh), AVG(ResolutionWidth) FROM clickbench.hits WHERE SearchPhrase <> '' GROUP BY SearchEngineID, ClientIP ORDER BY c DESC LIMIT 10; +SELECT WatchID, ClientIP, COUNT(*) AS c, SUM(IsRefresh), AVG(ResolutionWidth) FROM clickbench.hits WHERE SearchPhrase <> '' GROUP BY WatchID, ClientIP ORDER BY c DESC LIMIT 10; +SELECT WatchID, ClientIP, COUNT(*) AS c, SUM(IsRefresh), AVG(ResolutionWidth) FROM clickbench.hits GROUP BY WatchID, ClientIP ORDER BY c DESC LIMIT 10; +SELECT URL, COUNT(*) AS c FROM clickbench.hits GROUP BY URL ORDER BY c DESC LIMIT 10; +SELECT 1, URL, COUNT(*) AS c FROM clickbench.hits GROUP BY 1, URL ORDER BY c DESC LIMIT 10; +SELECT ClientIP, ClientIP - 1, ClientIP - 2, ClientIP - 3, COUNT(*) AS c FROM clickbench.hits GROUP BY ClientIP, ClientIP - 1, ClientIP - 2, ClientIP - 3 ORDER BY c DESC LIMIT 10; +SELECT URL, COUNT(*) AS PageViews FROM clickbench.hits WHERE CounterID = 62 AND EventDate >= '2013-07-01' AND EventDate <= '2013-07-31' AND DontCountHits = 0 AND IsRefresh = 0 AND URL <> '' GROUP BY URL ORDER BY PageViews DESC LIMIT 10; +SELECT Title, COUNT(*) AS PageViews FROM clickbench.hits WHERE CounterID = 62 AND EventDate >= '2013-07-01' AND EventDate <= '2013-07-31' AND DontCountHits = 0 AND IsRefresh = 0 AND Title <> '' GROUP BY Title ORDER BY PageViews DESC LIMIT 10; +SELECT URL, COUNT(*) AS PageViews FROM clickbench.hits WHERE CounterID = 62 AND EventDate >= '2013-07-01' AND EventDate <= '2013-07-31' AND IsRefresh = 0 AND IsLink <> 0 AND IsDownload = 0 GROUP BY URL ORDER BY PageViews DESC LIMIT 10 OFFSET 1000; +SELECT TraficSourceID, SearchEngineID, AdvEngineID, CASE WHEN (SearchEngineID = 0 AND AdvEngineID = 0) THEN Referer ELSE '' END AS Src, URL AS Dst, COUNT(*) AS PageViews FROM clickbench.hits WHERE CounterID = 62 AND EventDate >= '2013-07-01' AND EventDate <= '2013-07-31' AND IsRefresh = 0 GROUP BY TraficSourceID, SearchEngineID, AdvEngineID, Src, Dst ORDER BY PageViews DESC LIMIT 10 OFFSET 1000; +SELECT URLHash, EventDate, COUNT(*) AS PageViews FROM clickbench.hits WHERE CounterID = 62 AND EventDate >= '2013-07-01' AND EventDate <= '2013-07-31' AND IsRefresh = 0 AND TraficSourceID IN (-1, 6) AND RefererHash = 3594120000172545465 GROUP BY URLHash, EventDate ORDER BY PageViews DESC LIMIT 10 OFFSET 100; +SELECT WindowClientWidth, WindowClientHeight, COUNT(*) AS PageViews FROM clickbench.hits WHERE CounterID = 62 AND EventDate >= '2013-07-01' AND EventDate <= '2013-07-31' AND IsRefresh = 0 AND DontCountHits = 0 AND URLHash = 2868770270353813622 GROUP BY WindowClientWidth, WindowClientHeight ORDER BY PageViews DESC LIMIT 10 OFFSET 10000; +SELECT DATE_TRUNC('minute', EventTime) AS M, COUNT(*) AS PageViews FROM clickbench.hits WHERE CounterID = 62 AND EventDate >= '2013-07-14' AND EventDate <= '2013-07-15' AND IsRefresh = 0 AND DontCountHits = 0 GROUP BY DATE_TRUNC('minute', EventTime) ORDER BY DATE_TRUNC('minute', EventTime) LIMIT 10 OFFSET 1000; diff --git a/chdb-rc/query b/chdb-rc/query new file mode 100755 index 0000000000..f2399c6656 --- /dev/null +++ b/chdb-rc/query @@ -0,0 +1,42 @@ +#!/bin/bash +# Reads a SQL query from stdin, runs it via chdb against the .clickbench dir. +# Stdout: query result. +# Stderr: query runtime in fractional seconds on the last line. +# Exit non-zero on error. +set -e + +# shellcheck disable=SC1091 +source myenv/bin/activate + +# Stage stdin into a temp file: `python3 - <<'PY'` already consumes stdin to +# read the program, so sys.stdin.read() inside the heredoc returns "". +query_file=$(mktemp) +trap 'rm -f "$query_file"' EXIT +cat > "$query_file" + +python3 - "$query_file" <<'PY' +import sys +import timeit +import chdb + +with open(sys.argv[1]) as f: + query = f.read() + +# The hits table is created inside the `clickbench` database (see +# create.sql + load), but the session defaults to `default`. Prepend +# USE so a bare `SELECT * FROM hits` resolves regardless. +sess = chdb.session.Session(".clickbench") +start = timeit.default_timer() +try: + res = sess.query(f"USE clickbench; {query}", "Pretty") + out = str(res) + end = timeit.default_timer() + if out: + sys.stdout.write(out) + if not out.endswith("\n"): + sys.stdout.write("\n") +finally: + sess.close() + +print(f"{end - start:.3f}", file=sys.stderr) +PY diff --git a/chdb-rc/results/20261008/c6a.2xlarge.json b/chdb-rc/results/20261008/c6a.2xlarge.json new file mode 100644 index 0000000000..b8be155f20 --- /dev/null +++ b/chdb-rc/results/20261008/c6a.2xlarge.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc diagnostic)", + "date": "2026-10-08", + "machine": "c6a.2xlarge", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "no", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 775, + "data_size": 25497300836, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.021, 0.003, 0.009], + [0.041, 0.003, 0.012], + [0.12, 0.074, 0.06], + [0.256, 0.092, 0.074], + [0.618, 0.462, 0.469], + [0.919, 0.756, 0.756], + [0.064, 0.027, 0.018], + [0.095, 0.017, 0.031], + [0.922, 0.717, 0.708], + [1.018, 0.822, 0.819], + [0.448, 0.177, 0.178], + [0.381, 0.209, 0.197], + [0.83, 0.61, 0.624], + [1.228, 0.921, 0.909], + [0.985, 0.761, 0.762], + [0.64, 0.453, 0.481], + [1.817, 1.568, 1.562], + [0.967, 0.674, 0.665], + [3.078, 2.537, 2.616], + [0.136, 0.041, 0.033], + [4.688, 1.432, 1.432], + [5.574, 1.701, 1.7], + [6.822, 2.001, 2.016], + [0.766, 0.281, 0.286], + [0.386, 0.129, 0.126], + [0.517, 0.337, 0.325], + [1.036, 0.123, 0.127], + [0.414, 0.271, 0.287], + [4.799, 2.723, 2.708], + [0.128, 0.067, 0.065], + [0.566, 0.409, 0.411], + [2.911, 0.534, 0.527], + [4.958, 3.179, 3.223], + [5.2, 3.317, 3.335], + [5.247, 3.339, 3.332], + [0.495, 0.366, 0.361], + [0.165, 0.065, 0.08], + [0.138, 0.04, 0.038], + [0.147, 0.036, 0.05], + [0.243, 0.118, 0.124], + [0.142, 0.034, 0.043], + [0.136, 0.023, 0.028], + [0.122, 0.021, 0.02] +] + } + \ No newline at end of file diff --git a/chdb-rc/results/20261008/c6a.4xlarge.json b/chdb-rc/results/20261008/c6a.4xlarge.json new file mode 100644 index 0000000000..ac283cfc67 --- /dev/null +++ b/chdb-rc/results/20261008/c6a.4xlarge.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc diagnostic)", + "date": "2026-10-08", + "machine": "c6a.4xlarge", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "no", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 764, + "data_size": 20270311135, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.016, 0.002, 0.002], + [0.019, 0.003, 0.002], + [0.084, 0.041, 0.042], + [0.179, 0.049, 0.054], + [0.339, 0.246, 0.253], + [0.748, 0.41, 0.402], + [0.051, 0.017, 0.015], + [0.076, 0.02, 0.02], + [0.913, 0.509, 0.493], + [0.826, 0.532, 0.541], + [0.456, 0.14, 0.143], + [0.368, 0.157, 0.153], + [0.691, 0.416, 0.424], + [0.953, 0.626, 0.618], + [0.646, 0.507, 0.496], + [0.494, 0.317, 0.309], + [1.332, 1.167, 1.164], + [0.768, 0.478, 0.466], + [3.893, 2.104, 2.089], + [0.102, 0.025, 0.024], + [4.671, 0.75, 0.743], + [5.562, 0.883, 0.895], + [6.786, 1.06, 1.059], + [0.607, 0.184, 0.193], + [0.263, 0.086, 0.079], + [0.321, 0.189, 0.196], + [0.372, 0.078, 0.077], + [0.244, 0.147, 0.15], + [4.726, 1.642, 1.662], + [0.096, 0.046, 0.044], + [0.382, 0.266, 0.269], + [2.894, 0.372, 0.373], + [4.254, 2.394, 2.382], + [5.122, 1.94, 1.923], + [5.121, 1.942, 1.943], + [0.343, 0.244, 0.244], + [0.16, 0.053, 0.055], + [0.128, 0.032, 0.033], + [0.145, 0.034, 0.032], + [0.217, 0.097, 0.1], + [0.132, 0.025, 0.025], + [0.124, 0.023, 0.023], + [0.118, 0.022, 0.019] +] + } + \ No newline at end of file diff --git a/chdb-rc/results/20261008/c6a.large.json b/chdb-rc/results/20261008/c6a.large.json new file mode 100644 index 0000000000..43173a430a --- /dev/null +++ b/chdb-rc/results/20261008/c6a.large.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc diagnostic)", + "date": "2026-10-08", + "machine": "c6a.large", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "no", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 1732, + "data_size": 9410828615, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.09, 0.022, 0.076], + [0.065, 0.122, 0.047], + [0.536, 0.48, 0.509], + [1.253, 0.938, 0.866], + [2.455, 2.345, 2.267], + [4.481, 4.348, 4.357], + [0.34, 0.292, 0.235], + [0.215, 0.203, 0.092], + [4.466, 4.234, 4.133], + [5.159, 4.809, 4.681], + [1.766, 1.476, 1.506], + [1.986, 1.911, 1.899], + [5.278, 4.908, 4.769], + [7.55, 7.357, 7.096], + [6.073, 5.779, 6.058], + [2.956, 2.588, 2.507], + [24.837, 24.298, 24.389], + [6.903, 6.802, 6.702], + [43.961, 43.196, 44.257], + [0.412, 0.212, 0.218], + [12.719, 10.857, 10.436], + [15.862, 13.976, 13.992], + [18.679, 16.372, 16.217], + [3.337, 2.669, 2.446], + [1.509, 0.963, 1.052], + [3.097, 3.15, 3.168], + [1.519, 0.979, 1.046], + [2.111, 2.136, 2.139], + [25.214, 23.212, 23.161], + [0.42, 0.351, 0.378], + [3.454, 3.636, 3.634], + [6.171, 4.585, 4.283], + [56.509, 55.401, 56.494], + [46.444, 46.322, 45.9], + [45.91, 46.106, 46.347], + [2.183, 1.99, 1.995], + [0.364, 0.246, 0.251], + [0.249, 0.15, 0.146], + [0.249, 0.121, 0.128], + [0.698, 0.583, 0.581], + [0.18, 0.07, 0.067], + [0.16, 0.053, 0.054], + [0.142, 0.048, 0.049] +] + } + \ No newline at end of file diff --git a/chdb-rc/results/20261008/c6a.metal.json b/chdb-rc/results/20261008/c6a.metal.json new file mode 100644 index 0000000000..95af51e052 --- /dev/null +++ b/chdb-rc/results/20261008/c6a.metal.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc diagnostic)", + "date": "2026-10-08", + "machine": "c6a.metal", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "no", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 362, + "data_size": 32462644202, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.016, 0.004, 0.005], + [0.02, 0.003, 0.004], + [0.088, 0.039, 0.038], + [0.357, 0.032, 0.033], + [0.447, 0.113, 0.112], + [0.892, 0.146, 0.141], + [0.066, 0.021, 0.023], + [0.09, 0.023, 0.024], + [1.014, 0.344, 0.322], + [1.29, 0.339, 0.334], + [0.836, 0.114, 0.115], + [0.987, 0.104, 0.108], + [1.135, 0.123, 0.116], + [1.663, 0.171, 0.165], + [1.211, 0.169, 0.14], + [0.503, 0.098, 0.093], + [1.675, 0.266, 0.233], + [1.59, 0.112, 0.102], + [2.625, 0.424, 0.41], + [0.112, 0.026, 0.02], + [4.808, 0.174, 0.177], + [5.677, 0.217, 0.211], + [7.289, 0.235, 0.245], + [1.806, 0.133, 0.134], + [1.057, 0.045, 0.052], + [0.872, 0.08, 0.084], + [1.054, 0.061, 0.056], + [0.438, 0.07, 0.06], + [4.679, 0.376, 0.373], + [0.118, 0.048, 0.037], + [1.103, 0.096, 0.105], + [2.967, 0.132, 0.133], + [3.1, 0.444, 0.451], + [5.005, 0.585, 0.546], + [5.018, 0.556, 0.548], + [0.511, 0.079, 0.085], + [0.282, 0.066, 0.048], + [0.246, 0.031, 0.035], + [0.27, 0.033, 0.035], + [0.404, 0.08, 0.081], + [0.287, 0.027, 0.028], + [0.191, 0.023, 0.023], + [0.116, 0.023, 0.026] +] + } + \ No newline at end of file diff --git a/chdb-rc/results/20261008/c6a.xlarge.json b/chdb-rc/results/20261008/c6a.xlarge.json new file mode 100644 index 0000000000..cc94c60f82 --- /dev/null +++ b/chdb-rc/results/20261008/c6a.xlarge.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc diagnostic)", + "date": "2026-10-08", + "machine": "c6a.xlarge", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "no", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 823, + "data_size": 27279164415, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.028, 0.017, 0.012], + [0.051, 0.017, 0.004], + [0.178, 0.119, 0.138], + [0.461, 0.185, 0.207], + [1.008, 0.714, 0.729], + [1.696, 1.451, 1.389], + [0.102, 0.067, 0.06], + [0.112, 0.071, 0.095], + [1.674, 1.406, 1.321], + [1.893, 1.566, 1.532], + [0.629, 0.312, 0.284], + [0.698, 0.409, 0.399], + [1.495, 1.214, 1.157], + [2.14, 1.619, 1.649], + [1.757, 1.457, 1.437], + [0.976, 0.741, 0.732], + [3.205, 2.726, 2.7], + [1.756, 1.327, 1.42], + [15.369, 14.642, 14.743], + [0.218, 0.066, 0.058], + [4.687, 2.851, 2.835], + [5.594, 3.377, 3.397], + [6.867, 3.927, 3.982], + [1.205, 0.543, 0.559], + [0.719, 0.261, 0.287], + [0.932, 0.636, 0.642], + [0.702, 0.254, 0.28], + [0.717, 0.585, 0.571], + [7.433, 5.352, 5.332], + [0.231, 0.112, 0.115], + [0.997, 0.797, 0.804], + [3.011, 0.911, 0.944], + [22.895, 21.656, 21.534], + [15.26, 12.972, 15.323], + [16.008, 13.464, 13.778], + [0.906, 0.692, 0.716], + [0.259, 0.093, 0.143], + [0.174, 0.052, 0.123], + [0.177, 0.114, 0.083], + [0.33, 0.242, 0.219], + [0.181, 0.047, 0.084], + [0.16, 0.072, 0.093], + [0.158, 0.055, 0.033] +] + } + \ No newline at end of file diff --git a/chdb-rc/results/20261008/c7a.metal-48xl.json b/chdb-rc/results/20261008/c7a.metal-48xl.json new file mode 100644 index 0000000000..01d98d747c --- /dev/null +++ b/chdb-rc/results/20261008/c7a.metal-48xl.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc diagnostic)", + "date": "2026-10-08", + "machine": "c7a.metal-48xl", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "no", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 342, + "data_size": 32145082383, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.016, 0.004, 0.003], + [0.022, 0.003, 0.003], + [0.09, 0.035, 0.021], + [0.189, 0.046, 0.035], + [0.45, 0.11, 0.115], + [0.785, 0.127, 0.137], + [0.072, 0.018, 0.017], + [0.107, 0.021, 0.02], + [1.064, 0.331, 0.307], + [1.199, 0.328, 0.339], + [0.733, 0.119, 0.112], + [0.813, 0.097, 0.104], + [0.904, 0.11, 0.098], + [1.463, 0.145, 0.145], + [1.024, 0.128, 0.11], + [0.548, 0.091, 0.087], + [1.464, 0.171, 0.187], + [1.377, 0.086, 0.082], + [2.327, 0.312, 0.295], + [0.123, 0.023, 0.021], + [4.794, 0.157, 0.147], + [5.671, 0.186, 0.178], + [7.275, 0.205, 0.207], + [1.565, 0.132, 0.125], + [0.945, 0.058, 0.04], + [0.839, 0.091, 0.058], + [0.949, 0.068, 0.042], + [0.371, 0.063, 0.07], + [4.56, 0.304, 0.315], + [0.136, 0.034, 0.047], + [0.929, 0.092, 0.103], + [2.864, 0.118, 0.111], + [2.934, 0.327, 0.324], + [4.941, 0.445, 0.454], + [4.919, 0.447, 0.442], + [0.376, 0.075, 0.077], + [0.163, 0.041, 0.049], + [0.14, 0.031, 0.028], + [0.16, 0.046, 0.029], + [0.277, 0.075, 0.076], + [0.15, 0.025, 0.026], + [0.137, 0.018, 0.024], + [0.123, 0.021, 0.024] +] + } + \ No newline at end of file diff --git a/chdb-rc/results/20261008/c8g.4xlarge.json b/chdb-rc/results/20261008/c8g.4xlarge.json new file mode 100644 index 0000000000..91636f949d --- /dev/null +++ b/chdb-rc/results/20261008/c8g.4xlarge.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc diagnostic)", + "date": "2026-10-08", + "machine": "c8g.4xlarge", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "no", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 718, + "data_size": 20270292255, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.015, 0.002, 0.002], + [0.014, 0.005, 0.002], + [0.059, 0.027, 0.026], + [0.149, 0.032, 0.032], + [0.245, 0.152, 0.15], + [0.286, 0.175, 0.179], + [0.033, 0.01, 0.01], + [0.053, 0.014, 0.017], + [0.433, 0.253, 0.274], + [0.523, 0.278, 0.283], + [0.211, 0.098, 0.087], + [0.268, 0.113, 0.11], + [0.323, 0.206, 0.198], + [0.617, 0.279, 0.282], + [0.369, 0.242, 0.234], + [0.249, 0.139, 0.148], + [0.641, 0.444, 0.469], + [0.541, 0.197, 0.201], + [1.767, 0.688, 0.691], + [0.108, 0.017, 0.016], + [4.656, 0.402, 0.4], + [5.529, 0.475, 0.474], + [6.752, 0.574, 0.559], + [0.574, 0.125, 0.132], + [0.22, 0.055, 0.055], + [0.211, 0.113, 0.103], + [0.199, 0.054, 0.049], + [0.162, 0.087, 0.092], + [4.467, 0.847, 0.85], + [0.07, 0.036, 0.035], + [0.242, 0.144, 0.148], + [2.767, 0.184, 0.185], + [3.181, 0.809, 0.805], + [4.784, 0.904, 0.948], + [4.782, 0.899, 0.896], + [0.2, 0.126, 0.133], + [0.093, 0.035, 0.036], + [0.073, 0.023, 0.023], + [0.084, 0.029, 0.028], + [0.133, 0.063, 0.07], + [0.083, 0.024, 0.022], + [0.081, 0.018, 0.017], + [0.066, 0.017, 0.016] +] + } + \ No newline at end of file diff --git a/chdb-rc/results/20261008/c8g.metal-48xl.json b/chdb-rc/results/20261008/c8g.metal-48xl.json new file mode 100644 index 0000000000..1302cf3179 --- /dev/null +++ b/chdb-rc/results/20261008/c8g.metal-48xl.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc diagnostic)", + "date": "2026-10-08", + "machine": "c8g.metal-48xl", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "no", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 382, + "data_size": 32652004236, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.011, 0.003, 0.003], + [0.011, 0.003, 0.003], + [0.066, 0.017, 0.031], + [0.167, 0.024, 0.027], + [0.282, 0.074, 0.077], + [0.91, 0.101, 0.095], + [0.034, 0.017, 0.01], + [0.058, 0.015, 0.015], + [0.781, 0.24, 0.236], + [1.072, 0.258, 0.242], + [0.568, 0.073, 0.08], + [0.671, 0.092, 0.079], + [0.898, 0.094, 0.101], + [1.447, 0.129, 0.125], + [0.991, 0.105, 0.112], + [0.556, 0.069, 0.075], + [1.488, 0.203, 0.203], + [1.443, 0.078, 0.085], + [2.41, 0.371, 0.361], + [0.082, 0.015, 0.015], + [4.786, 0.146, 0.141], + [5.652, 0.154, 0.163], + [7.25, 0.177, 0.181], + [1.579, 0.123, 0.128], + [0.756, 0.048, 0.032], + [0.718, 0.055, 0.056], + [0.84, 0.047, 0.037], + [0.325, 0.045, 0.041], + [4.517, 0.309, 0.3], + [0.112, 0.045, 0.029], + [0.936, 0.079, 0.083], + [2.855, 0.103, 0.11], + [2.984, 0.391, 0.377], + [4.865, 0.39, 0.381], + [4.868, 0.383, 0.421], + [0.282, 0.059, 0.058], + [0.15, 0.035, 0.035], + [0.084, 0.023, 0.037], + [0.11, 0.024, 0.024], + [0.272, 0.076, 0.06], + [0.085, 0.03, 0.033], + [0.113, 0.015, 0.016], + [0.078, 0.026, 0.024] +] + } + \ No newline at end of file diff --git a/chdb-rc/results/20261008/t3a.small.json b/chdb-rc/results/20261008/t3a.small.json new file mode 100644 index 0000000000..dc73e926f2 --- /dev/null +++ b/chdb-rc/results/20261008/t3a.small.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (rc diagnostic)", + "date": "2026-10-08", + "machine": "t3a.small", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "no", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"], + "load_time": 2439, + "data_size": 9411298825, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.137, 0.1, 0.078], + [0.116, 0.038, 0.084], + [1.306, 1.413, 1.155], + [2.441, 2.183, 1.971], + [4.949, 4.586, 4.755], + [10.159, 9.69, 10.014], + [1.027, 0.858, 0.674], + [0.697, 0.337, 0.388], + [10.266, 10.305, 9.756], + [11.696, 11.793, 11.4], + [3.515, 3.362, 3.714], + [4.316, 3.953, 3.788], + [11.172, 11.17, 10.633], + [29.343, 29.742, 29.244], + [22.758, 21.867, 22.677], + [10.804, 10.562, 10.604], + [50.592, 48.695, 48.394], + [15.138, 15.137, 14.694], + [84.988, 87.277, 87.432], + [0.806, 0.482, 0.462], + [27.503, 28.023, 28.466], + [34.934, 34.704, 34.391], + [41.068, 42.283, 42.495], + [5.986, 4.855, 5.383], + [2.572, 2.081, 2.048], + [7.354, 7.011, 7.666], + [2.544, 2.032, 2.065], + [5.145, 4.904, 4.942], + [67.063, 68.478, 71.073], + [0.949, 0.837, 0.889], + [7.974, 8.129, 8.625], + [25.804, 25.556, 24.978], + [130.091, 129.211, 129.153], + [100.952, 100.387, 101.282], + [101.223, 101.198, 102.212], + [4.189, 4.418, 4.295], + [0.752, 0.606, 0.626], + [0.52, 0.378, 0.416], + [0.455, 0.336, 0.35], + [1.442, 1.299, 1.375], + [0.264, 0.155, 0.157], + [0.233, 0.148, 0.141], + [0.23, 0.132, 0.138] +] + } + \ No newline at end of file diff --git a/chdb-rc/start b/chdb-rc/start new file mode 100755 index 0000000000..71836e5f8f --- /dev/null +++ b/chdb-rc/start @@ -0,0 +1,3 @@ +#!/bin/bash +# chdb is an embedded library — no daemon to start. +exit 0 diff --git a/chdb-rc/stop b/chdb-rc/stop new file mode 100755 index 0000000000..1e5556318f --- /dev/null +++ b/chdb-rc/stop @@ -0,0 +1,3 @@ +#!/bin/bash +# chdb is an embedded library — no daemon to stop. +exit 0 diff --git a/chdb-rc/template.json b/chdb-rc/template.json new file mode 100644 index 0000000000..621e80b021 --- /dev/null +++ b/chdb-rc/template.json @@ -0,0 +1,7 @@ +{ + "system": "chDB (rc diagnostic)", + "proprietary": "no", + "hardware": "cpu", + "tuned": "no", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless"] +}