From 804b0e72ead3b53a228eea52bbf1ab4abe53f0cf Mon Sep 17 00:00:00 2001 From: Theo Bulut Date: Sat, 5 Sep 2026 05:38:31 +0200 Subject: [PATCH 01/10] Add ScramDB (native install, pinned build; c6a.4xlarge; the results file is replaced by the clean-datadir run of the 2026-09-05 build) --- scramdb/README.md | 5 + scramdb/benchmark.sh | 11 + scramdb/check | 3 + scramdb/create.sql | 108 ++++++++++ scramdb/create.sql.with-pk | 109 ++++++++++ scramdb/data-size | 8 + scramdb/install | 130 ++++++++++++ scramdb/load | 24 +++ scramdb/queries.sql | 43 ++++ scramdb/query | 21 ++ scramdb/results/20260830/c6a.4xlarge.json | 237 ++++++++++++++++++++++ scramdb/start | 75 +++++++ scramdb/stop | 47 +++++ scramdb/template.json | 13 ++ 14 files changed, 834 insertions(+) create mode 100644 scramdb/README.md create mode 100755 scramdb/benchmark.sh create mode 100755 scramdb/check create mode 100644 scramdb/create.sql create mode 100644 scramdb/create.sql.with-pk create mode 100755 scramdb/data-size create mode 100755 scramdb/install create mode 100755 scramdb/load create mode 100644 scramdb/queries.sql create mode 100755 scramdb/query create mode 100644 scramdb/results/20260830/c6a.4xlarge.json create mode 100755 scramdb/start create mode 100755 scramdb/stop create mode 100644 scramdb/template.json diff --git a/scramdb/README.md b/scramdb/README.md new file mode 100644 index 0000000000..a08a7d792b --- /dev/null +++ b/scramdb/README.md @@ -0,0 +1,5 @@ +# ScramDB + +PostgreSQL-wire-compatible UTAP database, installed natively from the official +installer (`curl -fsSL https://scramdb.com/install | bash`), pinned to one +SHA256-verified build for reproducibility. Run with `bash benchmark.sh`. diff --git a/scramdb/benchmark.sh b/scramdb/benchmark.sh new file mode 100755 index 0000000000..a19d43829a --- /dev/null +++ b/scramdb/benchmark.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +export BENCH_DOWNLOAD_SCRIPT="download-hits-csv" + +export PGHOST="${PGHOST:-localhost}" +export PGPORT="${PGPORT:-5432}" +export PGUSER="${PGUSER:-scramdb}" +export PGDATABASE="${PGDATABASE:-scramdb}" +export PGCONNECT_TIMEOUT="${PGCONNECT_TIMEOUT:-10}" + +exec ../lib/benchmark-common.sh diff --git a/scramdb/check b/scramdb/check new file mode 100755 index 0000000000..e226837132 --- /dev/null +++ b/scramdb/check @@ -0,0 +1,3 @@ +#!/bin/bash +set -e +psql -t -c 'SELECT 1' >/dev/null diff --git a/scramdb/create.sql b/scramdb/create.sql new file mode 100644 index 0000000000..41c961c00f --- /dev/null +++ b/scramdb/create.sql @@ -0,0 +1,108 @@ +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 +); diff --git a/scramdb/create.sql.with-pk b/scramdb/create.sql.with-pk new file mode 100644 index 0000000000..1850bffedc --- /dev/null +++ b/scramdb/create.sql.with-pk @@ -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, + PRIMARY KEY (CounterID, EventDate, UserID, EventTime, WatchID) +); diff --git a/scramdb/data-size b/scramdb/data-size new file mode 100755 index 0000000000..28eda049c4 --- /dev/null +++ b/scramdb/data-size @@ -0,0 +1,8 @@ +#!/bin/bash +set -euo pipefail + +BENCH_DIR="$(cd "$(dirname "$0")" && pwd)" + +# The compiled-query cache sits inside the data directory but is derived from +# the queries, not from the data. +du -sb --exclude=scramvm_cache "$BENCH_DIR/db" | cut -f1 diff --git a/scramdb/install b/scramdb/install new file mode 100755 index 0000000000..490a0c2ec9 --- /dev/null +++ b/scramdb/install @@ -0,0 +1,130 @@ +#!/bin/bash +set -euo pipefail + +# Native install: the official one-command installer, pinned to a single build +# so the run is reproducible. The installer resolves the host architecture +# itself (linux/amd64 and linux/arm64 tarballs are published for every build) +# and verifies every download against that release's SHA256SUMS before it +# writes anything, so nothing here is architecture-specific. + +: "${HOME:?HOME must be set: the install directory lives under it}" + +BENCH_DIR="$(cd "$(dirname "$0")" && pwd)" +VERSION="${SCRAMDB_VERSION:-44837c8}" +INSTALL_DIR="${SCRAMDB_INSTALL_DIR:-$HOME/.scramdb}" +BIN="$INSTALL_DIR/bin/scramdb" + +# psql drives load/query/check; bc converts psql's millisecond timings. +sudo apt-get update -y +sudo apt-get install -y postgresql-client bc + +# A server left behind by a previous run still holds the data directory. +"$BENCH_DIR/stop" + +ram_kb=$(awk '/MemTotal/ { print $2 }' /proc/meminfo) +ram_gb=$(( ram_kb / 1024 / 1024 )) + +if [ "$ram_gb" -lt 16 ]; then + echo "WARNING: ScramDB targets machines with at least 16 GB of RAM; this one has ${ram_gb} GB." >&2 + echo "WARNING: proceeding anyway, but this result is not representative of the product." >&2 +fi + +curl -fsSL https://scramdb.com/install \ + | SCRAMDB_YES=1 SCRAMDB_MODIFY_PATH=0 SCRAMDB_INSTALL_DIR="$INSTALL_DIR" \ + bash -s -- --version "$VERSION" + +if [ ! -x "$BIN" ]; then + echo "install: the installer produced no executable at $BIN" >&2 + exit 1 +fi + +rm -rf "$BENCH_DIR/db" +mkdir -p "$BENCH_DIR/db" +rm -f "$BENCH_DIR/scramdb.log" "$BENCH_DIR/scramdb.pid" + +# The analytics configuration ScramDB ships and documents for a dedicated +# analytics box. Deviations from the installed default: WAL archiving off (a +# benchmark box does no point-in-time recovery, and archived segments would +# otherwise count into data_size), and the UDF and GPU lanes off (nothing +# beyond the benchmark runs). +# +# The 65 percent execution share is the documented setting for machines at or +# above the 16 GB target. Below it, 0 keeps the engine's automatic derivation, +# which sizes every budget to the RAM actually present. +if [ "$ram_gb" -ge 16 ]; then EXEC_PCT=65; else EXEC_PCT=0; fi + +# Below 8 GB the ingest pipeline is sized to the machine as well: the default +# batch times pipeline depth is an admission working set a 4 GB box does not +# have. +if [ "$ram_gb" -ge 8 ]; then COPY_BATCH=131072; COPY_DEPTH=8; else COPY_BATCH=16384; COPY_DEPTH=2; fi + +cat > "$BENCH_DIR/scramdb-config.toml" <&2 +psql -v ON_ERROR_STOP=1 -c "ANALYZE hits" + +# The dataset is exactly 99,997,497 rows; refuse to benchmark a partial load. +rows=$(psql -t -A -c "SELECT count(*) FROM hits") +if [ "$rows" != "99997497" ]; then + echo "load: hits has $rows rows, expected 99997497 (partial load)" >&2 + exit 1 +fi + +rm -f "$BENCH_DIR/hits.csv" +sync diff --git a/scramdb/queries.sql b/scramdb/queries.sql new file mode 100644 index 0000000000..31f65fc898 --- /dev/null +++ b/scramdb/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 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 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 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 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 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 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 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 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/scramdb/query b/scramdb/query new file mode 100755 index 0000000000..25f5fc45c0 --- /dev/null +++ b/scramdb/query @@ -0,0 +1,21 @@ +#!/bin/bash +set -e + +query=$(cat) + +raw=$(psql -t -c '\timing' -c "$query" 2>&1) && exit_code=0 || exit_code=$? + +if [ "$exit_code" -ne 0 ] || printf '%s\n' "$raw" | grep -qE '^ERROR|psql: error'; then + printf '%s\n' "$raw" >&2 + exit 1 +fi + +printf '%s\n' "$raw" | grep -v '^Time:' || true + +ms=$(printf '%s\n' "$raw" | grep -oP 'Time:\s*\K[0-9.]+' | tail -n1) +if [ -z "$ms" ]; then + echo "no Time: in psql output" >&2 + exit 1 +fi + +LC_ALL=C printf '%.3f\n' "$(echo "$ms / 1000" | bc -l)" >&2 diff --git a/scramdb/results/20260830/c6a.4xlarge.json b/scramdb/results/20260830/c6a.4xlarge.json new file mode 100644 index 0000000000..dd607faf99 --- /dev/null +++ b/scramdb/results/20260830/c6a.4xlarge.json @@ -0,0 +1,237 @@ +{ + "system": "ScramDB", + "date": "2026-08-30", + "machine": "c6a.4xlarge", + "cluster_size": 1, + "proprietary": "yes", + "hardware": "cpu", + "tuned": "no", + "tags": [ + "Rust", + "column-oriented", + "PostgreSQL compatible", + "UTAP", + "JIT" + ], + "load_time": 1139, + "data_size": 17476605008, + "concurrent_qps": 0.45, + "concurrent_error_ratio": 0.0, + "result": [ + [ + 0.044, + 0.001, + 0.001 + ], + [ + 9.88, + 0.072, + 0.338 + ], + [ + 0.047, + 0.001, + 0.001 + ], + [ + 15.318, + 0.13, + 0.857 + ], + [ + 16.559, + 1.281, + 1.896 + ], + [ + 15.63, + 5.71, + 5.935 + ], + [ + 0.047, + 0.001, + 0.001 + ], + [ + 10.092, + 0.073, + 0.298 + ], + [ + 15.653, + 0.993, + 0.984 + ], + [ + 24.489, + 1.073, + 1.049 + ], + [ + 20.943, + 0.361, + 0.979 + ], + [ + 21.183, + 0.385, + 0.987 + ], + [ + 15.678, + 0.752, + 1.059 + ], + [ + 19.931, + 1.93, + 2.073 + ], + [ + 15.871, + 0.823, + 1.129 + ], + [ + 15.616, + 0.519, + 1.174 + ], + [ + 19.261, + 1.115, + 1.469 + ], + [ + 20.771, + 2.69, + 2.936 + ], + [ + 18.985, + 1.916, + 1.954 + ], + [ + 7.996, + 0.048, + 0.144 + ], + [ + 14.433, + 2.869, + 2.866 + ], + [ + 17.04, + 3.151, + 3.129 + ], + [ + 19.397, + 3.818, + 3.838 + ], + [ + 15.5, + 2.373, + 2.373 + ], + [ + 17.701, + 1.298, + 1.238 + ], + [ + 15.493, + 1.168, + 1.165 + ], + [ + 17.727, + 1.289, + 1.29 + ], + [ + 19.139, + 1.234, + 1.25 + ], + [ + 15.479, + 3.331, + 3.306 + ], + [ + 0.058, + 0.004, + 0.004 + ], + [ + 27.787, + 0.821, + 0.977 + ], + [ + 27.38, + 0.844, + 1.25 + ], + [ + 26.542, + 2.806, + 2.782 + ], + [ + 15.123, + 3.315, + 3.277 + ], + [ + 15.122, + 3.349, + 3.3 + ], + [ + 15.977, + 0.528, + 1.177 + ], + [ + 7.678, + 0.091, + 0.053 + ], + [ + 7.623, + 0.082, + 0.036 + ], + [ + 7.754, + 0.087, + 0.044 + ], + [ + 8.135, + 0.621, + 0.542 + ], + [ + 7.738, + 0.056, + 0.026 + ], + [ + 7.77, + 0.046, + 0.028 + ], + [ + 7.847, + 0.05, + 0.028 + ] + ] +} \ No newline at end of file diff --git a/scramdb/start b/scramdb/start new file mode 100755 index 0000000000..0f843f0827 --- /dev/null +++ b/scramdb/start @@ -0,0 +1,75 @@ +#!/bin/bash +set -euo pipefail + +: "${HOME:?HOME must be set: the install directory lives under it}" + +BENCH_DIR="$(cd "$(dirname "$0")" && pwd)" +INSTALL_DIR="${SCRAMDB_INSTALL_DIR:-$HOME/.scramdb}" +BIN="$INSTALL_DIR/bin/scramdb" +CONFIG="${SCRAMDB_CONFIG:-$BENCH_DIR/scramdb-config.toml}" +PIDFILE="$BENCH_DIR/scramdb.pid" +LOGFILE="$BENCH_DIR/scramdb.log" +READY_TIMEOUT="${SCRAMDB_START_TIMEOUT:-120}" + +# The driver calls ./start on a server that may already be up. +if "$BENCH_DIR/check" >/dev/null 2>&1; then + exit 0 +fi + +if [ ! -x "$BIN" ]; then + echo "start: $BIN is missing; run ./install first" >&2 + exit 1 +fi +if [ ! -f "$CONFIG" ]; then + echo "start: $CONFIG is missing; run ./install first" >&2 + exit 1 +fi + +# A stock Ubuntu gives a shell 1024 descriptors; the server holds one per +# segment file plus one per connection. Raising the soft limit to this user's +# hard limit is always permitted, and the server inherits it. +ulimit -n "$(ulimit -Hn)" + +# The log is appended across the cold cycle's many restarts, so each boot is +# marked to keep it readable. +printf '=== start %s ===\n' "$(date -u +%Y-%m-%dT%H:%M:%SZ)" >> "$LOGFILE" + +# With --config the server stays in the foreground (a bare `scramdb` would +# daemonize instead and own its own lifetime), so nohup plus a pidfile is what +# start and stop share. +# +# NO TUNING ENV. `results.json` declares "tuned": "no", so this script must +# start the shipped binary the way any user would. The allocator settings +# that used to live here (MIMALLOC_PURGE_DELAY / _ABANDONED_PAGE_PURGE) are +# now engine defaults applied in `main`, so every deployment gets them; and +# SCRAMDB_VACUUM_PARALLEL_WRITE=1 is GONE, not promoted - it re-arms a +# route whose lost-header-increment race is not root-caused yet, and a +# benchmark must never enable a path the engine itself keeps off. +SCRAMDB_LOG="${SCRAMDB_LOG:-warn}" \ + nohup "$BIN" --config "$CONFIG" >"$LOGFILE" 2>&1 & +pid=$! +echo "$pid" > "$PIDFILE" + +# Bounded wait for pgwire: ready the moment it accepts a connection, and a +# server that dies during startup is reported instead of waited on. +deadline=$(( $(date +%s) + READY_TIMEOUT )) +delay_ms=100 +while [ "$(date +%s)" -lt "$deadline" ]; do + if "$BENCH_DIR/check" >/dev/null 2>&1; then + exit 0 + fi + if ! kill -0 "$pid" 2>/dev/null; then + echo "start: the server exited during startup; last lines of $LOGFILE:" >&2 + tail -n 20 "$LOGFILE" >&2 + exit 1 + fi + printf -v delay '%d.%03d' $(( delay_ms / 1000 )) $(( delay_ms % 1000 )) + sleep "$delay" + if [ "$delay_ms" -lt 1000 ]; then + delay_ms=$(( delay_ms * 2 )) + fi +done + +echo "start: pgwire did not accept a connection within ${READY_TIMEOUT}s; last lines of $LOGFILE:" >&2 +tail -n 20 "$LOGFILE" >&2 +exit 1 diff --git a/scramdb/stop b/scramdb/stop new file mode 100755 index 0000000000..feaf55dac8 --- /dev/null +++ b/scramdb/stop @@ -0,0 +1,47 @@ +#!/bin/bash +set -euo pipefail + +BENCH_DIR="$(cd "$(dirname "$0")" && pwd)" +PIDFILE="$BENCH_DIR/scramdb.pid" +STOP_TIMEOUT="${SCRAMDB_STOP_TIMEOUT:-120}" + +[ -f "$PIDFILE" ] || exit 0 +pid=$(cat "$PIDFILE") + +if ! [[ "$pid" =~ ^[0-9]+$ ]]; then + echo "stop: $PIDFILE holds '${pid}', not a pid; removing it" >&2 + rm -f "$PIDFILE" + exit 0 +fi + +if ! kill -0 "$pid" 2>/dev/null; then + rm -f "$PIDFILE" + exit 0 +fi + +# SIGTERM is the graceful path: the server flushes and closes its segments. +kill "$pid" + +deadline=$(( $(date +%s) + STOP_TIMEOUT )) +while [ "$(date +%s)" -lt "$deadline" ]; do + if ! kill -0 "$pid" 2>/dev/null; then + rm -f "$PIDFILE" + exit 0 + fi + sleep 0.2 +done + +echo "stop: pid $pid ignored SIGTERM for ${STOP_TIMEOUT}s, sending SIGKILL" >&2 +kill -9 "$pid" 2>/dev/null || true + +deadline=$(( $(date +%s) + 10 )) +while [ "$(date +%s)" -lt "$deadline" ]; do + if ! kill -0 "$pid" 2>/dev/null; then + rm -f "$PIDFILE" + exit 0 + fi + sleep 0.2 +done + +echo "stop: pid $pid survived SIGKILL" >&2 +exit 1 diff --git a/scramdb/template.json b/scramdb/template.json new file mode 100644 index 0000000000..6da71701f2 --- /dev/null +++ b/scramdb/template.json @@ -0,0 +1,13 @@ +{ + "system": "ScramDB", + "proprietary": "yes", + "hardware": "cpu", + "tuned": "no", + "tags": [ + "Rust", + "column-oriented", + "PostgreSQL compatible", + "UTAP", + "JIT" + ] +} From 5188816a0c02e6bcfffa30b66ce276e82e6fb0cd Mon Sep 17 00:00:00 2001 From: Theo Bulut Date: Sat, 5 Sep 2026 08:29:16 +0200 Subject: [PATCH 02/10] ScramDB install: the config template carries copy_consumers (auto on boxes with 8 GB or more, the single consumer below) --- scramdb/install | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/scramdb/install b/scramdb/install index 490a0c2ec9..f3a14a7d88 100755 --- a/scramdb/install +++ b/scramdb/install @@ -55,8 +55,11 @@ if [ "$ram_gb" -ge 16 ]; then EXEC_PCT=65; else EXEC_PCT=0; fi # Below 8 GB the ingest pipeline is sized to the machine as well: the default # batch times pipeline depth is an admission working set a 4 GB box does not -# have. -if [ "$ram_gb" -ge 8 ]; then COPY_BATCH=131072; COPY_DEPTH=8; else COPY_BATCH=16384; COPY_DEPTH=2; fi +# have. copy_consumers (load lane, rank 4): N lane-owned writers add N-1 +# batches to that same working set, so the < 8 GB tier keeps the single +# consumer (today's path) and only the >= 8 GB tier auto-sizes from the +# box's own executor width. +if [ "$ram_gb" -ge 8 ]; then COPY_BATCH=131072; COPY_DEPTH=8; COPY_CONSUMERS=0; else COPY_BATCH=16384; COPY_DEPTH=2; COPY_CONSUMERS=1; fi cat > "$BENCH_DIR/scramdb-config.toml" < Date: Sat, 5 Sep 2026 19:34:15 +0200 Subject: [PATCH 03/10] scramdb: 20260905 c6a.4xlarge results (a097be5c: one-pass load 717 s, cold 188.6 s, warm 31.559 s) --- scramdb/results/20260905/c6a.4xlarge.json | 235 ++++++++++++++++++++++ 1 file changed, 235 insertions(+) create mode 100644 scramdb/results/20260905/c6a.4xlarge.json diff --git a/scramdb/results/20260905/c6a.4xlarge.json b/scramdb/results/20260905/c6a.4xlarge.json new file mode 100644 index 0000000000..a2c95e08b7 --- /dev/null +++ b/scramdb/results/20260905/c6a.4xlarge.json @@ -0,0 +1,235 @@ +{ + "system": "ScramDB", + "date": "2026-09-05", + "machine": "c6a.4xlarge", + "cluster_size": 1, + "proprietary": "no", + "tuned": "no", + "tags": [ + "Rust", + "column-oriented", + "PostgreSQL compatible", + "UTAP", + "JIT" + ], + "load_time": 717, + "data_size": 17255221551, + "result": [ + [ + 0.043, + 0.001, + 0.001 + ], + [ + 1.536, + 0.022, + 0.016 + ], + [ + 0.045, + 0.001, + 0.001 + ], + [ + 4.035, + 0.098, + 0.087 + ], + [ + 5.049, + 1.212, + 1.208 + ], + [ + 5.658, + 2.221, + 2.246 + ], + [ + 0.03, + 0.001, + 0.001 + ], + [ + 1.535, + 0.026, + 0.02 + ], + [ + 4.373, + 0.635, + 0.656 + ], + [ + 8.056, + 0.738, + 0.738 + ], + [ + 8.862, + 0.201, + 0.207 + ], + [ + 8.791, + 0.237, + 0.241 + ], + [ + 4.168, + 0.491, + 0.478 + ], + [ + 8.468, + 1.4, + 1.375 + ], + [ + 4.153, + 0.522, + 0.525 + ], + [ + 4.255, + 0.448, + 0.459 + ], + [ + 7.922, + 0.883, + 0.891 + ], + [ + 9.508, + 2.327, + 2.281 + ], + [ + 8.021, + 1.614, + 1.622 + ], + [ + 0.353, + 0.021, + 0.019 + ], + [ + 5.895, + 1.002, + 1.0 + ], + [ + 7.368, + 0.99, + 0.988 + ], + [ + 14.141, + 1.843, + 1.854 + ], + [ + 0.611, + 0.17, + 0.166 + ], + [ + 0.365, + 0.033, + 0.029 + ], + [ + 4.059, + 0.472, + 0.468 + ], + [ + 0.397, + 0.037, + 0.031 + ], + [ + 7.332, + 0.95, + 0.947 + ], + [ + 6.333, + 2.636, + 2.635 + ], + [ + 0.036, + 0.003, + 0.003 + ], + [ + 7.147, + 0.649, + 0.66 + ], + [ + 8.943, + 0.774, + 0.771 + ], + [ + 10.429, + 2.546, + 2.55 + ], + [ + 6.557, + 2.765, + 2.701 + ], + [ + 6.5, + 2.705, + 2.743 + ], + [ + 4.36, + 0.45, + 0.451 + ], + [ + 0.369, + 0.054, + 0.042 + ], + [ + 0.452, + 0.025, + 0.027 + ], + [ + 0.454, + 0.041, + 0.035 + ], + [ + 0.646, + 0.509, + 0.48 + ], + [ + 0.463, + 0.02, + 0.021 + ], + [ + 0.433, + 0.02, + 0.022 + ], + [ + 0.465, + 0.019, + 0.023 + ] + ], + "comment": "ScramDB a097be5c: native install on c6a.4xlarge (500 GB gp2), the harness load with the one-pass CSV split; cold runs after sync and drop_caches with a restart per query" +} \ No newline at end of file From 2abb3be6fd1dd24d64b8c802ecf54c1f68f9925b Mon Sep 17 00:00:00 2001 From: Theo Bulut Date: Sat, 5 Sep 2026 22:36:10 +0200 Subject: [PATCH 04/10] formatted results --- scramdb/results/20260830/c6a.4xlarge.json | 237 ------------------- scramdb/results/20260905/c6a.4xlarge.json | 268 ++++------------------ 2 files changed, 45 insertions(+), 460 deletions(-) delete mode 100644 scramdb/results/20260830/c6a.4xlarge.json diff --git a/scramdb/results/20260830/c6a.4xlarge.json b/scramdb/results/20260830/c6a.4xlarge.json deleted file mode 100644 index dd607faf99..0000000000 --- a/scramdb/results/20260830/c6a.4xlarge.json +++ /dev/null @@ -1,237 +0,0 @@ -{ - "system": "ScramDB", - "date": "2026-08-30", - "machine": "c6a.4xlarge", - "cluster_size": 1, - "proprietary": "yes", - "hardware": "cpu", - "tuned": "no", - "tags": [ - "Rust", - "column-oriented", - "PostgreSQL compatible", - "UTAP", - "JIT" - ], - "load_time": 1139, - "data_size": 17476605008, - "concurrent_qps": 0.45, - "concurrent_error_ratio": 0.0, - "result": [ - [ - 0.044, - 0.001, - 0.001 - ], - [ - 9.88, - 0.072, - 0.338 - ], - [ - 0.047, - 0.001, - 0.001 - ], - [ - 15.318, - 0.13, - 0.857 - ], - [ - 16.559, - 1.281, - 1.896 - ], - [ - 15.63, - 5.71, - 5.935 - ], - [ - 0.047, - 0.001, - 0.001 - ], - [ - 10.092, - 0.073, - 0.298 - ], - [ - 15.653, - 0.993, - 0.984 - ], - [ - 24.489, - 1.073, - 1.049 - ], - [ - 20.943, - 0.361, - 0.979 - ], - [ - 21.183, - 0.385, - 0.987 - ], - [ - 15.678, - 0.752, - 1.059 - ], - [ - 19.931, - 1.93, - 2.073 - ], - [ - 15.871, - 0.823, - 1.129 - ], - [ - 15.616, - 0.519, - 1.174 - ], - [ - 19.261, - 1.115, - 1.469 - ], - [ - 20.771, - 2.69, - 2.936 - ], - [ - 18.985, - 1.916, - 1.954 - ], - [ - 7.996, - 0.048, - 0.144 - ], - [ - 14.433, - 2.869, - 2.866 - ], - [ - 17.04, - 3.151, - 3.129 - ], - [ - 19.397, - 3.818, - 3.838 - ], - [ - 15.5, - 2.373, - 2.373 - ], - [ - 17.701, - 1.298, - 1.238 - ], - [ - 15.493, - 1.168, - 1.165 - ], - [ - 17.727, - 1.289, - 1.29 - ], - [ - 19.139, - 1.234, - 1.25 - ], - [ - 15.479, - 3.331, - 3.306 - ], - [ - 0.058, - 0.004, - 0.004 - ], - [ - 27.787, - 0.821, - 0.977 - ], - [ - 27.38, - 0.844, - 1.25 - ], - [ - 26.542, - 2.806, - 2.782 - ], - [ - 15.123, - 3.315, - 3.277 - ], - [ - 15.122, - 3.349, - 3.3 - ], - [ - 15.977, - 0.528, - 1.177 - ], - [ - 7.678, - 0.091, - 0.053 - ], - [ - 7.623, - 0.082, - 0.036 - ], - [ - 7.754, - 0.087, - 0.044 - ], - [ - 8.135, - 0.621, - 0.542 - ], - [ - 7.738, - 0.056, - 0.026 - ], - [ - 7.77, - 0.046, - 0.028 - ], - [ - 7.847, - 0.05, - 0.028 - ] - ] -} \ No newline at end of file diff --git a/scramdb/results/20260905/c6a.4xlarge.json b/scramdb/results/20260905/c6a.4xlarge.json index a2c95e08b7..aee65e3908 100644 --- a/scramdb/results/20260905/c6a.4xlarge.json +++ b/scramdb/results/20260905/c6a.4xlarge.json @@ -5,231 +5,53 @@ "cluster_size": 1, "proprietary": "no", "tuned": "no", - "tags": [ - "Rust", - "column-oriented", - "PostgreSQL compatible", - "UTAP", - "JIT" - ], + "tags": ["Rust", "column-oriented", "PostgreSQL compatible", "UTAP", "JIT"], "load_time": 717, "data_size": 17255221551, "result": [ - [ - 0.043, - 0.001, - 0.001 - ], - [ - 1.536, - 0.022, - 0.016 - ], - [ - 0.045, - 0.001, - 0.001 - ], - [ - 4.035, - 0.098, - 0.087 - ], - [ - 5.049, - 1.212, - 1.208 - ], - [ - 5.658, - 2.221, - 2.246 - ], - [ - 0.03, - 0.001, - 0.001 - ], - [ - 1.535, - 0.026, - 0.02 - ], - [ - 4.373, - 0.635, - 0.656 - ], - [ - 8.056, - 0.738, - 0.738 - ], - [ - 8.862, - 0.201, - 0.207 - ], - [ - 8.791, - 0.237, - 0.241 - ], - [ - 4.168, - 0.491, - 0.478 - ], - [ - 8.468, - 1.4, - 1.375 - ], - [ - 4.153, - 0.522, - 0.525 - ], - [ - 4.255, - 0.448, - 0.459 - ], - [ - 7.922, - 0.883, - 0.891 - ], - [ - 9.508, - 2.327, - 2.281 - ], - [ - 8.021, - 1.614, - 1.622 - ], - [ - 0.353, - 0.021, - 0.019 - ], - [ - 5.895, - 1.002, - 1.0 - ], - [ - 7.368, - 0.99, - 0.988 - ], - [ - 14.141, - 1.843, - 1.854 - ], - [ - 0.611, - 0.17, - 0.166 - ], - [ - 0.365, - 0.033, - 0.029 - ], - [ - 4.059, - 0.472, - 0.468 - ], - [ - 0.397, - 0.037, - 0.031 - ], - [ - 7.332, - 0.95, - 0.947 - ], - [ - 6.333, - 2.636, - 2.635 - ], - [ - 0.036, - 0.003, - 0.003 - ], - [ - 7.147, - 0.649, - 0.66 - ], - [ - 8.943, - 0.774, - 0.771 - ], - [ - 10.429, - 2.546, - 2.55 - ], - [ - 6.557, - 2.765, - 2.701 - ], - [ - 6.5, - 2.705, - 2.743 - ], - [ - 4.36, - 0.45, - 0.451 - ], - [ - 0.369, - 0.054, - 0.042 - ], - [ - 0.452, - 0.025, - 0.027 - ], - [ - 0.454, - 0.041, - 0.035 - ], - [ - 0.646, - 0.509, - 0.48 - ], - [ - 0.463, - 0.02, - 0.021 - ], - [ - 0.433, - 0.02, - 0.022 - ], - [ - 0.465, - 0.019, - 0.023 - ] + [0.043, 0.001, 0.001], + [1.536, 0.022, 0.016], + [0.045, 0.001, 0.001], + [4.035, 0.098, 0.087], + [5.049, 1.212, 1.208], + [5.658, 2.221, 2.246], + [0.03, 0.001, 0.001], + [1.535, 0.026, 0.02], + [4.373, 0.635, 0.656], + [8.056, 0.738, 0.738], + [8.862, 0.201, 0.207], + [8.791, 0.237, 0.241], + [4.168, 0.491, 0.478], + [8.468, 1.4, 1.375], + [4.153, 0.522, 0.525], + [4.255, 0.448, 0.459], + [7.922, 0.883, 0.891], + [9.508, 2.327, 2.281], + [8.021, 1.614, 1.622], + [0.353, 0.021, 0.019], + [5.895, 1.002, 1.0], + [7.368, 0.99, 0.988], + [14.141, 1.843, 1.854], + [0.611, 0.17, 0.166], + [0.365, 0.033, 0.029], + [4.059, 0.472, 0.468], + [0.397, 0.037, 0.031], + [7.332, 0.95, 0.947], + [6.333, 2.636, 2.635], + [0.036, 0.003, 0.003], + [7.147, 0.649, 0.66], + [8.943, 0.774, 0.771], + [10.429, 2.546, 2.55], + [6.557, 2.765, 2.701], + [6.5, 2.705, 2.743], + [4.36, 0.45, 0.451], + [0.369, 0.054, 0.042], + [0.452, 0.025, 0.027], + [0.454, 0.041, 0.035], + [0.646, 0.509, 0.48], + [0.463, 0.02, 0.021], + [0.433, 0.02, 0.022], + [0.465, 0.019, 0.023] ], "comment": "ScramDB a097be5c: native install on c6a.4xlarge (500 GB gp2), the harness load with the one-pass CSV split; cold runs after sync and drop_caches with a restart per query" -} \ No newline at end of file +} From 1981b02d9e64f4a3a13f9d0681dc00de373972cd Mon Sep 17 00:00:00 2001 From: Theo Bulut Date: Sun, 6 Sep 2026 01:30:31 +0200 Subject: [PATCH 05/10] scramdb: pin the installer to build c664e19, the published master merge of the benchmarked branch --- scramdb/install | 2 +- scramdb/results/20260905/c6a.4xlarge.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/scramdb/install b/scramdb/install index f3a14a7d88..ed2ed54213 100755 --- a/scramdb/install +++ b/scramdb/install @@ -10,7 +10,7 @@ set -euo pipefail : "${HOME:?HOME must be set: the install directory lives under it}" BENCH_DIR="$(cd "$(dirname "$0")" && pwd)" -VERSION="${SCRAMDB_VERSION:-44837c8}" +VERSION="${SCRAMDB_VERSION:-c664e19}" INSTALL_DIR="${SCRAMDB_INSTALL_DIR:-$HOME/.scramdb}" BIN="$INSTALL_DIR/bin/scramdb" diff --git a/scramdb/results/20260905/c6a.4xlarge.json b/scramdb/results/20260905/c6a.4xlarge.json index aee65e3908..2075a1370f 100644 --- a/scramdb/results/20260905/c6a.4xlarge.json +++ b/scramdb/results/20260905/c6a.4xlarge.json @@ -53,5 +53,5 @@ [0.433, 0.02, 0.022], [0.465, 0.019, 0.023] ], - "comment": "ScramDB a097be5c: native install on c6a.4xlarge (500 GB gp2), the harness load with the one-pass CSV split; cold runs after sync and drop_caches with a restart per query" + "comment": "ScramDB build c664e19 (the master merge carrying a097be5c): native install on c6a.4xlarge (500 GB gp2), the harness load with the one-pass CSV split; cold runs after sync and drop_caches with a restart per query" } From 6aee82c49f25f6c822d7b018ccfdd7d1b775a4f8 Mon Sep 17 00:00:00 2001 From: Theo Bulut Date: Sun, 6 Sep 2026 02:47:14 +0200 Subject: [PATCH 06/10] scramdb: 20260906 c7a.metal-48xl results (build c664e19, the submission unchanged: load 673.8 s, cold 227.8 s, hot 10.208 s, 16.13 GB) --- scramdb/results/20260906/c7a.metal-48xl.json | 235 +++++++++++++++++++ 1 file changed, 235 insertions(+) create mode 100644 scramdb/results/20260906/c7a.metal-48xl.json diff --git a/scramdb/results/20260906/c7a.metal-48xl.json b/scramdb/results/20260906/c7a.metal-48xl.json new file mode 100644 index 0000000000..3205c2abab --- /dev/null +++ b/scramdb/results/20260906/c7a.metal-48xl.json @@ -0,0 +1,235 @@ +{ + "system": "ScramDB", + "date": "2026-09-06", + "machine": "c7a.metal-48xl", + "cluster_size": 1, + "proprietary": "no", + "tuned": "no", + "tags": [ + "Rust", + "column-oriented", + "PostgreSQL compatible", + "UTAP", + "JIT" + ], + "load_time": 673.763, + "data_size": 16126644060, + "result": [ + [ + 0.043, + 0.001, + 0.002 + ], + [ + 1.61, + 0.015, + 0.011 + ], + [ + 0.043, + 0.001, + 0.001 + ], + [ + 4.053, + 0.022, + 0.029 + ], + [ + 5.004, + 1.289, + 1.278 + ], + [ + 6.111, + 1.905, + 1.809 + ], + [ + 0.043, + 0.002, + 0.001 + ], + [ + 1.593, + 0.016, + 0.012 + ], + [ + 4.231, + 0.278, + 0.271 + ], + [ + 8.927, + 0.292, + 0.26 + ], + [ + 8.89, + 0.07, + 0.074 + ], + [ + 8.889, + 0.07, + 0.067 + ], + [ + 4.133, + 0.06, + 0.054 + ], + [ + 8.577, + 0.851, + 0.8 + ], + [ + 4.146, + 0.062, + 0.059 + ], + [ + 4.114, + 0.062, + 0.063 + ], + [ + 8.202, + 0.092, + 0.087 + ], + [ + 8.934, + 0.742, + 0.735 + ], + [ + 9.833, + 0.172, + 0.171 + ], + [ + 0.306, + 0.012, + 0.008 + ], + [ + 9.191, + 0.092, + 0.087 + ], + [ + 14.032, + 0.089, + 0.084 + ], + [ + 23.148, + 0.158, + 0.149 + ], + [ + 0.542, + 0.253, + 0.095 + ], + [ + 0.25, + 0.065, + 0.013 + ], + [ + 4.045, + 0.432, + 0.24 + ], + [ + 0.209, + 0.028, + 0.012 + ], + [ + 11.46, + 0.078, + 0.069 + ], + [ + 8.858, + 2.184, + 2.166 + ], + [ + 0.049, + 0.004, + 0.005 + ], + [ + 7.953, + 0.072, + 0.067 + ], + [ + 12.765, + 0.076, + 0.073 + ], + [ + 12.345, + 0.285, + 0.292 + ], + [ + 9.406, + 0.247, + 0.253 + ], + [ + 9.41, + 0.248, + 0.247 + ], + [ + 4.131, + 0.068, + 0.067 + ], + [ + 0.284, + 0.035, + 0.031 + ], + [ + 0.253, + 0.018, + 0.019 + ], + [ + 0.283, + 0.032, + 0.03 + ], + [ + 0.775, + 0.482, + 0.393 + ], + [ + 0.262, + 0.017, + 0.018 + ], + [ + 0.247, + 0.019, + 0.017 + ], + [ + 0.232, + 0.02, + 0.018 + ] + ], + "comment": "ScramDB build c664e19 (the master merge carrying a097be5c), the ClickBench submission run unchanged on c7a.metal-48xl (192 vCPU, 384 GB, 500 GB gp2) from the PR branch at 1981b02d9; concurrent window 3.643 QPS at error ratio 0.000." +} From a5a79ebafd2aa3f28d19d226b23a028aba1f5206 Mon Sep 17 00:00:00 2001 From: Theo Bulut Date: Sun, 6 Sep 2026 02:54:17 +0200 Subject: [PATCH 07/10] scramdb: format the c7a.metal-48xl result --- scramdb/results/20260906/c7a.metal-48xl.json | 266 +++---------------- 1 file changed, 44 insertions(+), 222 deletions(-) diff --git a/scramdb/results/20260906/c7a.metal-48xl.json b/scramdb/results/20260906/c7a.metal-48xl.json index 3205c2abab..2d0d1868b7 100644 --- a/scramdb/results/20260906/c7a.metal-48xl.json +++ b/scramdb/results/20260906/c7a.metal-48xl.json @@ -5,231 +5,53 @@ "cluster_size": 1, "proprietary": "no", "tuned": "no", - "tags": [ - "Rust", - "column-oriented", - "PostgreSQL compatible", - "UTAP", - "JIT" - ], + "tags": ["Rust", "column-oriented", "PostgreSQL compatible", "UTAP", "JIT"], "load_time": 673.763, "data_size": 16126644060, "result": [ - [ - 0.043, - 0.001, - 0.002 - ], - [ - 1.61, - 0.015, - 0.011 - ], - [ - 0.043, - 0.001, - 0.001 - ], - [ - 4.053, - 0.022, - 0.029 - ], - [ - 5.004, - 1.289, - 1.278 - ], - [ - 6.111, - 1.905, - 1.809 - ], - [ - 0.043, - 0.002, - 0.001 - ], - [ - 1.593, - 0.016, - 0.012 - ], - [ - 4.231, - 0.278, - 0.271 - ], - [ - 8.927, - 0.292, - 0.26 - ], - [ - 8.89, - 0.07, - 0.074 - ], - [ - 8.889, - 0.07, - 0.067 - ], - [ - 4.133, - 0.06, - 0.054 - ], - [ - 8.577, - 0.851, - 0.8 - ], - [ - 4.146, - 0.062, - 0.059 - ], - [ - 4.114, - 0.062, - 0.063 - ], - [ - 8.202, - 0.092, - 0.087 - ], - [ - 8.934, - 0.742, - 0.735 - ], - [ - 9.833, - 0.172, - 0.171 - ], - [ - 0.306, - 0.012, - 0.008 - ], - [ - 9.191, - 0.092, - 0.087 - ], - [ - 14.032, - 0.089, - 0.084 - ], - [ - 23.148, - 0.158, - 0.149 - ], - [ - 0.542, - 0.253, - 0.095 - ], - [ - 0.25, - 0.065, - 0.013 - ], - [ - 4.045, - 0.432, - 0.24 - ], - [ - 0.209, - 0.028, - 0.012 - ], - [ - 11.46, - 0.078, - 0.069 - ], - [ - 8.858, - 2.184, - 2.166 - ], - [ - 0.049, - 0.004, - 0.005 - ], - [ - 7.953, - 0.072, - 0.067 - ], - [ - 12.765, - 0.076, - 0.073 - ], - [ - 12.345, - 0.285, - 0.292 - ], - [ - 9.406, - 0.247, - 0.253 - ], - [ - 9.41, - 0.248, - 0.247 - ], - [ - 4.131, - 0.068, - 0.067 - ], - [ - 0.284, - 0.035, - 0.031 - ], - [ - 0.253, - 0.018, - 0.019 - ], - [ - 0.283, - 0.032, - 0.03 - ], - [ - 0.775, - 0.482, - 0.393 - ], - [ - 0.262, - 0.017, - 0.018 - ], - [ - 0.247, - 0.019, - 0.017 - ], - [ - 0.232, - 0.02, - 0.018 - ] + [0.043, 0.001, 0.002], + [1.61, 0.015, 0.011], + [0.043, 0.001, 0.001], + [4.053, 0.022, 0.029], + [5.004, 1.289, 1.278], + [6.111, 1.905, 1.809], + [0.043, 0.002, 0.001], + [1.593, 0.016, 0.012], + [4.231, 0.278, 0.271], + [8.927, 0.292, 0.26], + [8.89, 0.07, 0.074], + [8.889, 0.07, 0.067], + [4.133, 0.06, 0.054], + [8.577, 0.851, 0.8], + [4.146, 0.062, 0.059], + [4.114, 0.062, 0.063], + [8.202, 0.092, 0.087], + [8.934, 0.742, 0.735], + [9.833, 0.172, 0.171], + [0.306, 0.012, 0.008], + [9.191, 0.092, 0.087], + [14.032, 0.089, 0.084], + [23.148, 0.158, 0.149], + [0.542, 0.253, 0.095], + [0.25, 0.065, 0.013], + [4.045, 0.432, 0.24], + [0.209, 0.028, 0.012], + [11.46, 0.078, 0.069], + [8.858, 2.184, 2.166], + [0.049, 0.004, 0.005], + [7.953, 0.072, 0.067], + [12.765, 0.076, 0.073], + [12.345, 0.285, 0.292], + [9.406, 0.247, 0.253], + [9.41, 0.248, 0.247], + [4.131, 0.068, 0.067], + [0.284, 0.035, 0.031], + [0.253, 0.018, 0.019], + [0.283, 0.032, 0.03], + [0.775, 0.482, 0.393], + [0.262, 0.017, 0.018], + [0.247, 0.019, 0.017], + [0.232, 0.02, 0.018] ], "comment": "ScramDB build c664e19 (the master merge carrying a097be5c), the ClickBench submission run unchanged on c7a.metal-48xl (192 vCPU, 384 GB, 500 GB gp2) from the PR branch at 1981b02d9; concurrent window 3.643 QPS at error ratio 0.000." } From 24721c9c8ecd52661824d575354a973119b59961 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 6 Sep 2026 15:18:14 +0000 Subject: [PATCH 08/10] Add benchmark results for scramdb (c6a.4xlarge) --- scramdb/results/20260905/c6a.4xlarge.json | 57 ------------------- scramdb/results/20260906/c6a.4xlarge.json | 60 ++++++++++++++++++++ scramdb/results/20260906/c7a.metal-48xl.json | 57 ------------------- 3 files changed, 60 insertions(+), 114 deletions(-) delete mode 100644 scramdb/results/20260905/c6a.4xlarge.json create mode 100644 scramdb/results/20260906/c6a.4xlarge.json delete mode 100644 scramdb/results/20260906/c7a.metal-48xl.json diff --git a/scramdb/results/20260905/c6a.4xlarge.json b/scramdb/results/20260905/c6a.4xlarge.json deleted file mode 100644 index 2075a1370f..0000000000 --- a/scramdb/results/20260905/c6a.4xlarge.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "system": "ScramDB", - "date": "2026-09-05", - "machine": "c6a.4xlarge", - "cluster_size": 1, - "proprietary": "no", - "tuned": "no", - "tags": ["Rust", "column-oriented", "PostgreSQL compatible", "UTAP", "JIT"], - "load_time": 717, - "data_size": 17255221551, - "result": [ - [0.043, 0.001, 0.001], - [1.536, 0.022, 0.016], - [0.045, 0.001, 0.001], - [4.035, 0.098, 0.087], - [5.049, 1.212, 1.208], - [5.658, 2.221, 2.246], - [0.03, 0.001, 0.001], - [1.535, 0.026, 0.02], - [4.373, 0.635, 0.656], - [8.056, 0.738, 0.738], - [8.862, 0.201, 0.207], - [8.791, 0.237, 0.241], - [4.168, 0.491, 0.478], - [8.468, 1.4, 1.375], - [4.153, 0.522, 0.525], - [4.255, 0.448, 0.459], - [7.922, 0.883, 0.891], - [9.508, 2.327, 2.281], - [8.021, 1.614, 1.622], - [0.353, 0.021, 0.019], - [5.895, 1.002, 1.0], - [7.368, 0.99, 0.988], - [14.141, 1.843, 1.854], - [0.611, 0.17, 0.166], - [0.365, 0.033, 0.029], - [4.059, 0.472, 0.468], - [0.397, 0.037, 0.031], - [7.332, 0.95, 0.947], - [6.333, 2.636, 2.635], - [0.036, 0.003, 0.003], - [7.147, 0.649, 0.66], - [8.943, 0.774, 0.771], - [10.429, 2.546, 2.55], - [6.557, 2.765, 2.701], - [6.5, 2.705, 2.743], - [4.36, 0.45, 0.451], - [0.369, 0.054, 0.042], - [0.452, 0.025, 0.027], - [0.454, 0.041, 0.035], - [0.646, 0.509, 0.48], - [0.463, 0.02, 0.021], - [0.433, 0.02, 0.022], - [0.465, 0.019, 0.023] - ], - "comment": "ScramDB build c664e19 (the master merge carrying a097be5c): native install on c6a.4xlarge (500 GB gp2), the harness load with the one-pass CSV split; cold runs after sync and drop_caches with a restart per query" -} diff --git a/scramdb/results/20260906/c6a.4xlarge.json b/scramdb/results/20260906/c6a.4xlarge.json new file mode 100644 index 0000000000..92ab0a9983 --- /dev/null +++ b/scramdb/results/20260906/c6a.4xlarge.json @@ -0,0 +1,60 @@ +{ + "system": "ScramDB", + "date": "2026-09-06", + "machine": "c6a.4xlarge", + "cluster_size": 1, + "proprietary": "yes", + "hardware": "cpu", + "tuned": "no", + "tags": ["Rust","column-oriented","PostgreSQL compatible","UTAP","JIT"], + "load_time": 735, + "data_size": 16088754231, + "concurrent_qps": 1.285, + "concurrent_error_ratio": 0, + "result": [ + [0.034, 0, 0.001], + [1.581, 0.019, 0.022], + [0.045, 0.001, 0.001], + [4.065, 0.08, 0.097], + [5.074, 1.209, 1.196], + [5.592, 2.214, 2.203], + [0.036, 0.001, 0.001], + [1.582, 0.023, 0.02], + [4.335, 0.612, 0.612], + [8.112, 0.719, 0.721], + [8.852, 0.208, 0.203], + [8.867, 0.223, 0.224], + [4.214, 0.445, 0.439], + [8.502, 1.395, 1.413], + [4.219, 0.511, 0.5], + [4.299, 0.426, 0.434], + [7.983, 0.812, 0.821], + [9.51, 2.246, 2.328], + [7.953, 1.62, 1.612], + [0.429, 0.022, 0.018], + [5.907, 0.995, 0.995], + [7.409, 0.971, 0.969], + [14.159, 1.813, 1.808], + [0.877, 0.168, 0.161], + [0.39, 0.038, 0.031], + [4.046, 0.471, 0.467], + [0.385, 0.039, 0.035], + [7.375, 0.899, 0.893], + [6.487, 2.606, 2.56], + [0.043, 0.003, 0.003], + [7.186, 0.642, 0.63], + [9.019, 0.768, 0.771], + [10.259, 2.527, 2.489], + [6.554, 2.561, 2.554], + [6.531, 2.57, 2.551], + [4.328, 0.432, 0.42], + [0.423, 0.04, 0.038], + [0.517, 0.022, 0.026], + [0.489, 0.037, 0.038], + [0.68, 0.484, 0.478], + [0.484, 0.018, 0.02], + [0.495, 0.024, 0.022], + [0.525, 0.019, 0.022] +] + } + \ No newline at end of file diff --git a/scramdb/results/20260906/c7a.metal-48xl.json b/scramdb/results/20260906/c7a.metal-48xl.json deleted file mode 100644 index 2d0d1868b7..0000000000 --- a/scramdb/results/20260906/c7a.metal-48xl.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "system": "ScramDB", - "date": "2026-09-06", - "machine": "c7a.metal-48xl", - "cluster_size": 1, - "proprietary": "no", - "tuned": "no", - "tags": ["Rust", "column-oriented", "PostgreSQL compatible", "UTAP", "JIT"], - "load_time": 673.763, - "data_size": 16126644060, - "result": [ - [0.043, 0.001, 0.002], - [1.61, 0.015, 0.011], - [0.043, 0.001, 0.001], - [4.053, 0.022, 0.029], - [5.004, 1.289, 1.278], - [6.111, 1.905, 1.809], - [0.043, 0.002, 0.001], - [1.593, 0.016, 0.012], - [4.231, 0.278, 0.271], - [8.927, 0.292, 0.26], - [8.89, 0.07, 0.074], - [8.889, 0.07, 0.067], - [4.133, 0.06, 0.054], - [8.577, 0.851, 0.8], - [4.146, 0.062, 0.059], - [4.114, 0.062, 0.063], - [8.202, 0.092, 0.087], - [8.934, 0.742, 0.735], - [9.833, 0.172, 0.171], - [0.306, 0.012, 0.008], - [9.191, 0.092, 0.087], - [14.032, 0.089, 0.084], - [23.148, 0.158, 0.149], - [0.542, 0.253, 0.095], - [0.25, 0.065, 0.013], - [4.045, 0.432, 0.24], - [0.209, 0.028, 0.012], - [11.46, 0.078, 0.069], - [8.858, 2.184, 2.166], - [0.049, 0.004, 0.005], - [7.953, 0.072, 0.067], - [12.765, 0.076, 0.073], - [12.345, 0.285, 0.292], - [9.406, 0.247, 0.253], - [9.41, 0.248, 0.247], - [4.131, 0.068, 0.067], - [0.284, 0.035, 0.031], - [0.253, 0.018, 0.019], - [0.283, 0.032, 0.03], - [0.775, 0.482, 0.393], - [0.262, 0.017, 0.018], - [0.247, 0.019, 0.017], - [0.232, 0.02, 0.018] - ], - "comment": "ScramDB build c664e19 (the master merge carrying a097be5c), the ClickBench submission run unchanged on c7a.metal-48xl (192 vCPU, 384 GB, 500 GB gp2) from the PR branch at 1981b02d9; concurrent window 3.643 QPS at error ratio 0.000." -} From 0dbbeddd52a23896bf17de45d0cfe6d6a354b916 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 6 Sep 2026 16:40:44 +0000 Subject: [PATCH 09/10] Add benchmark results for scramdb (c6a.4xlarge, c6a.metal, c7a.metal-48xl, c8g.4xlarge, c8g.metal-48xl) --- scramdb/results/20260906/c6a.4xlarge.json | 92 ++++++++++---------- scramdb/results/20260906/c6a.metal.json | 60 +++++++++++++ scramdb/results/20260906/c7a.metal-48xl.json | 60 +++++++++++++ scramdb/results/20260906/c8g.4xlarge.json | 60 +++++++++++++ scramdb/results/20260906/c8g.metal-48xl.json | 60 +++++++++++++ 5 files changed, 286 insertions(+), 46 deletions(-) create mode 100644 scramdb/results/20260906/c6a.metal.json create mode 100644 scramdb/results/20260906/c7a.metal-48xl.json create mode 100644 scramdb/results/20260906/c8g.4xlarge.json create mode 100644 scramdb/results/20260906/c8g.metal-48xl.json diff --git a/scramdb/results/20260906/c6a.4xlarge.json b/scramdb/results/20260906/c6a.4xlarge.json index 92ab0a9983..78149a365c 100644 --- a/scramdb/results/20260906/c6a.4xlarge.json +++ b/scramdb/results/20260906/c6a.4xlarge.json @@ -7,54 +7,54 @@ "hardware": "cpu", "tuned": "no", "tags": ["Rust","column-oriented","PostgreSQL compatible","UTAP","JIT"], - "load_time": 735, - "data_size": 16088754231, - "concurrent_qps": 1.285, + "load_time": 732, + "data_size": 16089800584, + "concurrent_qps": 1.295, "concurrent_error_ratio": 0, "result": [ - [0.034, 0, 0.001], - [1.581, 0.019, 0.022], - [0.045, 0.001, 0.001], - [4.065, 0.08, 0.097], - [5.074, 1.209, 1.196], - [5.592, 2.214, 2.203], - [0.036, 0.001, 0.001], - [1.582, 0.023, 0.02], - [4.335, 0.612, 0.612], - [8.112, 0.719, 0.721], - [8.852, 0.208, 0.203], - [8.867, 0.223, 0.224], - [4.214, 0.445, 0.439], - [8.502, 1.395, 1.413], - [4.219, 0.511, 0.5], - [4.299, 0.426, 0.434], - [7.983, 0.812, 0.821], - [9.51, 2.246, 2.328], - [7.953, 1.62, 1.612], - [0.429, 0.022, 0.018], - [5.907, 0.995, 0.995], - [7.409, 0.971, 0.969], - [14.159, 1.813, 1.808], - [0.877, 0.168, 0.161], - [0.39, 0.038, 0.031], - [4.046, 0.471, 0.467], - [0.385, 0.039, 0.035], - [7.375, 0.899, 0.893], - [6.487, 2.606, 2.56], - [0.043, 0.003, 0.003], - [7.186, 0.642, 0.63], - [9.019, 0.768, 0.771], - [10.259, 2.527, 2.489], - [6.554, 2.561, 2.554], - [6.531, 2.57, 2.551], - [4.328, 0.432, 0.42], - [0.423, 0.04, 0.038], - [0.517, 0.022, 0.026], - [0.489, 0.037, 0.038], - [0.68, 0.484, 0.478], - [0.484, 0.018, 0.02], - [0.495, 0.024, 0.022], - [0.525, 0.019, 0.022] + [0.042, 0.001, 0.001], + [1.586, 0.02, 0.015], + [0.042, 0.001, 0.001], + [4.031, 0.081, 0.091], + [5.076, 1.195, 1.179], + [5.585, 2.184, 2.2], + [0.044, 0.001, 0.001], + [1.591, 0.022, 0.039], + [4.331, 0.612, 0.603], + [8.173, 0.721, 0.774], + [8.867, 0.195, 0.202], + [8.855, 0.22, 0.222], + [4.234, 0.505, 0.443], + [8.599, 1.39, 1.387], + [4.219, 0.493, 0.504], + [4.304, 0.417, 0.426], + [8.062, 0.821, 0.816], + [9.519, 2.279, 2.279], + [8.08, 1.6, 1.602], + [0.641, 0.022, 0.016], + [5.937, 0.992, 0.989], + [8.306, 0.967, 0.965], + [14.213, 1.805, 1.801], + [0.956, 0.171, 0.165], + [0.478, 0.041, 0.046], + [4.058, 0.468, 0.474], + [0.458, 0.043, 0.049], + [7.298, 0.9, 0.898], + [7.703, 2.558, 2.57], + [0.053, 0.004, 0.003], + [7.32, 0.638, 0.628], + [10.162, 0.767, 0.762], + [10.541, 2.493, 2.389], + [8.614, 2.561, 2.535], + [6.587, 2.547, 2.52], + [4.348, 0.416, 0.424], + [0.485, 0.05, 0.037], + [0.493, 0.024, 0.025], + [0.498, 0.035, 0.032], + [0.692, 0.486, 0.487], + [0.505, 0.015, 0.022], + [0.475, 0.016, 0.02], + [0.538, 0.018, 0.023] ] } \ No newline at end of file diff --git a/scramdb/results/20260906/c6a.metal.json b/scramdb/results/20260906/c6a.metal.json new file mode 100644 index 0000000000..8213c2e399 --- /dev/null +++ b/scramdb/results/20260906/c6a.metal.json @@ -0,0 +1,60 @@ +{ + "system": "ScramDB", + "date": "2026-09-06", + "machine": "c6a.metal", + "cluster_size": 1, + "proprietary": "yes", + "hardware": "cpu", + "tuned": "no", + "tags": ["Rust","column-oriented","PostgreSQL compatible","UTAP","JIT"], + "load_time": 718, + "data_size": 16122448826, + "concurrent_qps": 3.013, + "concurrent_error_ratio": 0, + "result": [ + [0.042, 0.001, 0.001], + [1.595, 0.022, 0.013], + [0.032, 0.001, 0.001], + [4.054, 0.028, 0.03], + [5.449, 1.25, 1.531], + [6.003, 1.864, 1.753], + [0.033, 0.002, 0.001], + [1.598, 0.019, 0.013], + [4.22, 0.295, 0.28], + [8.812, 0.331, 0.332], + [8.882, 0.105, 0.094], + [8.856, 0.109, 0.099], + [4.134, 0.11, 0.122], + [8.609, 0.686, 0.695], + [4.125, 0.115, 0.122], + [4.137, 0.197, 0.162], + [8.16, 0.201, 0.226], + [9.241, 1.205, 1.235], + [9.768, 0.456, 0.457], + [0.275, 0.019, 0.009], + [9.172, 0.136, 0.181], + [13.693, 0.147, 0.181], + [22.908, 0.352, 0.317], + [0.518, 0.433, 0.092], + [0.171, 0.048, 0.018], + [4.03, 0.343, 0.298], + [0.161, 0.041, 0.018], + [11.304, 0.175, 0.17], + [9.006, 1.648, 1.659], + [0.038, 0.004, 0.004], + [7.818, 0.141, 0.185], + [12.1, 0.2, 0.25], + [12.013, 0.754, 0.834], + [9.49, 0.604, 0.583], + [9.487, 0.592, 0.61], + [4.134, 0.14, 0.159], + [0.221, 0.044, 0.033], + [0.201, 0.025, 0.024], + [0.247, 0.042, 0.024], + [0.788, 0.491, 0.402], + [0.238, 0.022, 0.019], + [0.225, 0.02, 0.019], + [0.232, 0.023, 0.02] +] + } + \ No newline at end of file diff --git a/scramdb/results/20260906/c7a.metal-48xl.json b/scramdb/results/20260906/c7a.metal-48xl.json new file mode 100644 index 0000000000..ae1e038c5f --- /dev/null +++ b/scramdb/results/20260906/c7a.metal-48xl.json @@ -0,0 +1,60 @@ +{ + "system": "ScramDB", + "date": "2026-09-06", + "machine": "c7a.metal-48xl", + "cluster_size": 1, + "proprietary": "yes", + "hardware": "cpu", + "tuned": "no", + "tags": ["Rust","column-oriented","PostgreSQL compatible","UTAP","JIT"], + "load_time": 668, + "data_size": 16119309270, + "concurrent_qps": 3.617, + "concurrent_error_ratio": 0, + "result": [ + [0.042, 0.001, 0.002], + [1.6, 0.016, 0.016], + [0.04, 0.002, 0.001], + [4.045, 0.021, 0.026], + [4.982, 0.985, 0.988], + [6.097, 1.984, 1.8], + [0.031, 0.002, 0.001], + [1.598, 0.015, 0.015], + [4.219, 0.266, 0.282], + [8.698, 0.264, 0.255], + [8.866, 0.079, 0.077], + [8.851, 0.084, 0.074], + [4.085, 0.057, 0.055], + [8.624, 0.822, 0.849], + [4.083, 0.061, 0.059], + [4.052, 0.117, 0.064], + [8.133, 0.089, 0.087], + [8.822, 0.746, 0.743], + [9.653, 0.171, 0.199], + [0.171, 0.013, 0.008], + [9.2, 0.09, 0.086], + [13.977, 0.093, 0.085], + [23.233, 0.155, 0.193], + [0.352, 0.327, 0.087], + [0.139, 0.043, 0.017], + [4.007, 0.433, 0.406], + [0.157, 0.023, 0.013], + [11.411, 0.081, 0.07], + [8.747, 2.177, 2.164], + [0.032, 0.005, 0.004], + [7.856, 0.081, 0.074], + [12.613, 0.077, 0.082], + [12.221, 0.294, 0.347], + [9.347, 0.25, 0.27], + [9.341, 0.247, 0.264], + [4.08, 0.066, 0.068], + [0.189, 0.027, 0.029], + [0.212, 0.022, 0.021], + [0.235, 0.023, 0.024], + [0.561, 0.376, 0.383], + [0.226, 0.018, 0.017], + [0.223, 0.017, 0.01], + [0.226, 0.02, 0.018] +] + } + \ No newline at end of file diff --git a/scramdb/results/20260906/c8g.4xlarge.json b/scramdb/results/20260906/c8g.4xlarge.json new file mode 100644 index 0000000000..79b66220e1 --- /dev/null +++ b/scramdb/results/20260906/c8g.4xlarge.json @@ -0,0 +1,60 @@ +{ + "system": "ScramDB", + "date": "2026-09-06", + "machine": "c8g.4xlarge", + "cluster_size": 1, + "proprietary": "yes", + "hardware": "cpu", + "tuned": "no", + "tags": ["Rust","column-oriented","PostgreSQL compatible","UTAP","JIT"], + "load_time": 636, + "data_size": 16112914607, + "concurrent_qps": 2.187, + "concurrent_error_ratio": 0, + "result": [ + [0.027, 0.001, 0.001], + [1.516, 0.013, 0.012], + [0.03, 0.001, 0.001], + [4.01, 0.034, 0.039], + [5.096, 1.207, 1.211], + [5.813, 2.154, 2.151], + [0.03, 0.001, 0.001], + [1.523, 0.012, 0.01], + [4.261, 0.443, 0.44], + [8.167, 0.481, 0.485], + [8.811, 0.126, 0.129], + [8.799, 0.26, 0.26], + [4.101, 0.204, 0.205], + [8.413, 1.101, 1.075], + [4.1, 0.235, 0.236], + [4.097, 0.163, 0.162], + [7.836, 0.303, 0.303], + [8.518, 1.021, 0.975], + [7.762, 0.533, 0.54], + [0.439, 0.009, 0.007], + [5.864, 0.647, 0.646], + [7.35, 0.627, 0.627], + [14.108, 1.096, 1.093], + [0.781, 0.115, 0.11], + [0.403, 0.032, 0.023], + [4.022, 0.262, 0.262], + [0.406, 0.029, 0.024], + [7.096, 0.416, 0.416], + [6.155, 2.984, 2.956], + [0.033, 0.003, 0.003], + [7.161, 0.283, 0.283], + [9.126, 0.269, 0.261], + [9.48, 18.8, 0.713], + [6.245, 1.011, 0.888], + [6.25, 0.963, 0.963], + [4.157, 0.21, 0.213], + [0.399, 0.027, 0.015], + [0.395, 0.012, 0.009], + [0.417, 0.019, 0.014], + [0.534, 0.364, 0.33], + [0.403, 0.007, 0.005], + [0.41, 0.008, 0.008], + [0.395, 0.012, 0.012] +] + } + \ No newline at end of file diff --git a/scramdb/results/20260906/c8g.metal-48xl.json b/scramdb/results/20260906/c8g.metal-48xl.json new file mode 100644 index 0000000000..7b8a3c7858 --- /dev/null +++ b/scramdb/results/20260906/c8g.metal-48xl.json @@ -0,0 +1,60 @@ +{ + "system": "ScramDB", + "date": "2026-09-06", + "machine": "c8g.metal-48xl", + "cluster_size": 1, + "proprietary": "yes", + "hardware": "cpu", + "tuned": "no", + "tags": ["Rust","column-oriented","PostgreSQL compatible","UTAP","JIT"], + "load_time": 657, + "data_size": 16123516657, + "concurrent_qps": 3.422, + "concurrent_error_ratio": 0, + "result": [ + [0.023, 0.001, 0], + [1.528, 0.014, 0.017], + [0.019, 0.001, 0.001], + [3.992, 0.018, 0.017], + [4.899, 0.945, 0.933], + [5.55, 1.487, 1.454], + [0.018, 0.001, 0.001], + [1.537, 0.013, 0.013], + [4.157, 0.283, 0.284], + [8.793, 0.278, 0.257], + [8.828, 0.074, 0.068], + [8.821, 0.077, 0.072], + [4.054, 0.052, 0.051], + [8.645, 1.02, 1.021], + [4.032, 0.058, 0.055], + [4.018, 0.065, 0.065], + [8.076, 0.082, 0.106], + [8.739, 0.799, 0.809], + [9.619, 0.164, 0.184], + [0.16, 0.011, 0.015], + [9.14, 0.079, 0.074], + [14.004, 0.079, 0.074], + [23.271, 0.137, 0.132], + [0.304, 0.458, 0.303], + [0.125, 0.024, 0.011], + [3.996, 0.389, 0.45], + [0.11, 0.027, 0.011], + [11.329, 0.069, 0.066], + [8.818, 2.638, 2.684], + [0.022, 0.003, 0.003], + [7.773, 0.106, 0.065], + [12.687, 0.068, 0.07], + [12.375, 0.292, 0.358], + [9.277, 0.276, 0.309], + [9.27, 0.275, 0.292], + [4.044, 0.079, 0.079], + [0.152, 0.037, 0.028], + [0.144, 0.024, 0.027], + [0.168, 0.032, 0.031], + [0.575, 0.363, 0.317], + [0.148, 0.011, 0.014], + [0.155, 0.013, 0.009], + [0.153, 0.014, 0.015] +] + } + \ No newline at end of file From 6a6ef4e9acf3ff8626c806e7c848516d1070cb88 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 6 Sep 2026 17:16:26 +0000 Subject: [PATCH 10/10] Add benchmark results for scramdb (c6a.2xlarge) --- scramdb/results/20260906/c6a.2xlarge.json | 60 +++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 scramdb/results/20260906/c6a.2xlarge.json diff --git a/scramdb/results/20260906/c6a.2xlarge.json b/scramdb/results/20260906/c6a.2xlarge.json new file mode 100644 index 0000000000..d97647a66d --- /dev/null +++ b/scramdb/results/20260906/c6a.2xlarge.json @@ -0,0 +1,60 @@ +{ + "system": "ScramDB", + "date": "2026-09-06", + "machine": "c6a.2xlarge", + "cluster_size": 1, + "proprietary": "yes", + "hardware": "cpu", + "tuned": "no", + "tags": ["Rust","column-oriented","PostgreSQL compatible","UTAP","JIT"], + "load_time": 754, + "data_size": 16079225186, + "concurrent_qps": 0.142, + "concurrent_error_ratio": 0.012, + "result": [ + [0.036, 0.001, 0.001], + [1.581, 0.027, 0.027], + [0.042, 0.001, 0.001], + [4.084, 0.085, 0.1], + [5.138, 1.352, 1.345], + [5.573, 2.81, 2.84], + [0.035, 0.001, 0.001], + [1.582, 0.03, 0.036], + [4.432, 0.957, 0.937], + [7.347, 1.147, 1.137], + [8.952, 0.294, 0.308], + [8.934, 0.347, 0.351], + [4.256, 0.657, 0.645], + [8.272, 2.061, 2.073], + [4.269, 0.752, 0.742], + [4.402, 0.556, 0.615], + [7.493, 1.132, 1.189], + [9.033, 2.692, 2.621], + [7.052, 2.133, 2.125], + [0.522, 0.022, 0.02], + [5.903, 1.938, 1.936], + [7.413, 1.871, 1.869], + [14.154, 3.369, 3.367], + [0.835, 0.281, 0.283], + [0.444, 0.052, 0.053], + [4.053, 0.888, 0.884], + [0.432, 0.054, 0.05], + [7.347, 1.341, 1.339], + [6.606, 4.244, 4.257], + [0.038, 0.003, 0.003], + [6.317, 0.969, 0.959], + [8.067, 1.039, 1.031], + [317.365, 342.318, 359.436], + [55.915, 51.942, 53.096], + [56.854, 52.756, 50.099], + [4.45, 0.576, 0.583], + [0.536, 0.046, 0.045], + [0.591, 0.023, 0.021], + [0.538, 0.038, 0.03], + [0.851, 0.635, 0.517], + [0.561, 0.017, 0.014], + [0.534, 0.015, 0.015], + [0.576, 0.018, 0.017] +] + } + \ No newline at end of file