HarborSQL Benchmark Dashboard

Dataset-first comparison of Databricks SQL Warehouse baselines, the latest HarborSQL result for each dataset, and a selected HarborSQL version.

Benchmarks are run from compute in the same cloud region as the dataset being read. Results keep only the wall-clock time observed by the benchmark client. Cost columns use server or warehouse compute only from the benchmark pricing assumptions; benchmark client EC2 cost is excluded.

4 datasets 13 HarborSQL versions 8 Databricks rows 49 HarborSQL rows

ClickBench

clickbench · latest HarborSQL v0.1.10

Analytical workload over the optimized S3-backed ClickBench hits table. The runner executes the 43 ClickBench queries multiple times and reports the aggregate best, median, and average query timings.

ComparisonInstance sizeVersion$/hrQueriesRuns/queryFailedBest totalBest costMedian totalMedian costAverage totalAverage costResult
Databricks2xsv2026.10$3.604330170.3s$0.1703192.1s$0.1921218.0s$0.2180results/databricks-sql-warehouse/2xs/v2026.10/clickbench/databricks-2xs-aws-ec2-t3.small-clickbench-20260510T152626Z.json
Databricks2xsv2026.10.cloudfetch$3.604330165.7s$0.1657179.5s$0.1795227.9s$0.2279results/databricks-sql-warehouse/2xs/v2026.10.cloudfetch/clickbench/databricks-2xs-aws-ec2-t3.small-clickbench-20260526T211154Z.json
Latestc8i.2xlargev0.1.10$0.4454433089.218s$0.011090.772s$0.011291.223s$0.0113results/harborsql/c8i.2xlarge/v0.1.10/clickbench/optimized.json
Selectedc8i.2xlargev0.1.10$0.4454433089.218s$0.011090.772s$0.011291.223s$0.0113results/harborsql/c8i.2xlarge/v0.1.10/clickbench/optimized.json
Per-query detail
QueryDatabricks / 2xsDatabricks / 2xsLatest HarborSQL / c8i.2xlargeSelected HarborSQL / c8i.2xlargeSelected HarborSQL / i3.2xlargeSelected HarborSQL / i3.xlarge
Q0SELECT COUNT(*) FROM hits
2.678s1.043s0.016s0.016s
Q1SELECT COUNT(*) FROM hits WHERE AdvEngineID <> 0
1.052s0.883s1.058s1.058s
Q2SELECT SUM(AdvEngineID), COUNT(*), AVG(ResolutionWidth) FROM hits
1.022s1.013s1.024s1.024s
Q3SELECT AVG(UserID) FROM hits
0.854s1.207s1.030s1.030s
Q4SELECT COUNT(DISTINCT UserID) FROM hits
3.306s3.169s1.456s1.456s
Q5SELECT COUNT(DISTINCT SearchPhrase) FROM hits
3.948s3.502s1.307s1.307s
Q6SELECT MIN(EventDate), MAX(EventDate) FROM hits
0.720s0.839s0.031s0.031s
Q7SELECT AdvEngineID, COUNT(*) FROM hits WHERE AdvEngineID <> 0 GROUP BY AdvEngineID ORDER BY COUNT(*) DESC
0.814s0.785s1.044s1.044s
Q8SELECT RegionID, COUNT(DISTINCT UserID) AS u FROM hits GROUP BY RegionID ORDER BY u DESC LIMIT 10
3.659s4.173s1.519s1.519s
Q9SELECT RegionID, SUM(AdvEngineID), COUNT(*) AS c, AVG(ResolutionWidth), COUNT(DISTINCT UserID) FROM hits GROUP BY Reg...
5.807s7.070s1.893s1.893s
Q10SELECT MobilePhoneModel, COUNT(DISTINCT UserID) AS u FROM hits WHERE MobilePhoneModel <> '' GROUP BY MobilePhoneModel...
1.711s1.612s1.271s1.271s
Q11SELECT MobilePhone, MobilePhoneModel, COUNT(DISTINCT UserID) AS u FROM hits WHERE MobilePhoneModel <> '' GROUP BY Mob...
5.335s1.263s1.324s1.324s
Q12SELECT SearchPhrase, COUNT(*) AS c FROM hits WHERE SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY c DESC LIMIT 10
3.650s3.309s1.545s1.545s
Q13SELECT SearchPhrase, COUNT(DISTINCT UserID) AS u FROM hits WHERE SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY u...
4.844s4.951s2.092s2.092s
Q14SELECT SearchEngineID, SearchPhrase, COUNT(*) AS c FROM hits WHERE SearchPhrase <> '' GROUP BY SearchEngineID, Search...
2.582s2.664s1.643s1.643s
Q15SELECT UserID, COUNT(*) FROM hits GROUP BY UserID ORDER BY COUNT(*) DESC LIMIT 10
2.679s2.781s1.511s1.511s
Q16SELECT UserID, SearchPhrase, COUNT(*) FROM hits GROUP BY UserID, SearchPhrase ORDER BY COUNT(*) DESC LIMIT 10
5.432s5.710s2.689s2.689s
Q17SELECT UserID, SearchPhrase, COUNT(*) FROM hits GROUP BY UserID, SearchPhrase LIMIT 10
4.449s4.614s2.615s2.615s
Q18SELECT UserID, extract(minute FROM EventTime) AS m, SearchPhrase, COUNT(*) FROM hits GROUP BY UserID, m, SearchPhrase...
9.806s9.491s4.729s4.729s
Q19SELECT UserID FROM hits WHERE UserID = 435090932899640449
0.484s0.529s0.557s0.557s
Q20SELECT COUNT(*) FROM hits WHERE URL LIKE '%google%'
3.134s2.902s2.463s2.463s
Q21SELECT SearchPhrase, MIN(URL), COUNT(*) AS c FROM hits WHERE URL LIKE '%google%' AND SearchPhrase <> '' GROUP BY Sear...
3.277s3.107s3.011s3.011s
Q22SELECT SearchPhrase, MIN(URL), MIN(Title), COUNT(*) AS c, COUNT(DISTINCT UserID) FROM hits WHERE Title LIKE '%Google%...
5.085s5.365s6.673s6.673s
Q23SELECT * FROM hits WHERE URL LIKE '%google%' ORDER BY EventTime LIMIT 10
10.336s9.918s3.779s3.779s
Q24SELECT SearchPhrase FROM hits WHERE SearchPhrase <> '' ORDER BY EventTime LIMIT 10
1.274s1.252s1.470s1.470s
Q25SELECT SearchPhrase FROM hits WHERE SearchPhrase <> '' ORDER BY SearchPhrase LIMIT 10
0.905s0.879s1.124s1.124s
Q26SELECT SearchPhrase FROM hits WHERE SearchPhrase <> '' ORDER BY EventTime, SearchPhrase LIMIT 10
1.245s1.229s1.701s1.701s
Q27SELECT CounterID, AVG(length(URL)) AS l, COUNT(*) AS c FROM hits WHERE URL <> '' GROUP BY CounterID HAVING COUNT(*) >...
3.006s3.000s3.142s3.142s
Q28SELECT REGEXP_REPLACE(Referer, '^https?://(?:www\.)?([^/]+)/.*$', '$1') AS k, AVG(length(Referer)) AS l, COUNT(*) AS...
28.257s29.357s13.006s13.006s
Q29SELECT SUM(ResolutionWidth), SUM(ResolutionWidth + 1), SUM(ResolutionWidth + 2), SUM(ResolutionWidth + 3), SUM(Resolu...
2.863s2.760s1.220s1.220s
Q30SELECT SearchEngineID, ClientIP, COUNT(*) AS c, SUM(IsRefresh), AVG(ResolutionWidth) FROM hits WHERE SearchPhrase <>...
2.021s2.133s1.775s1.775s
Q31SELECT WatchID, ClientIP, COUNT(*) AS c, SUM(IsRefresh), AVG(ResolutionWidth) FROM hits WHERE SearchPhrase <> '' GROU...
2.137s2.409s1.995s1.995s
Q32SELECT WatchID, ClientIP, COUNT(*) AS c, SUM(IsRefresh), AVG(ResolutionWidth) FROM hits GROUP BY WatchID, ClientIP OR...
7.063s7.255s4.011s4.011s
Q33SELECT URL, COUNT(*) AS c FROM hits GROUP BY URL ORDER BY c DESC LIMIT 10
13.947s13.405s4.955s4.955s
Q34SELECT 1, URL, COUNT(*) AS c FROM hits GROUP BY 1, URL ORDER BY c DESC LIMIT 10
13.878s12.831s4.815s4.815s
Q35SELECT ClientIP, ClientIP - 1, ClientIP - 2, ClientIP - 3, COUNT(*) AS c FROM hits GROUP BY ClientIP, ClientIP - 1, C...
2.835s2.830s1.750s1.750s
Q36SELECT URL, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND EventDate >= '2013-07-01' AND EventDate <= '2013...
0.659s0.709s0.280s0.280s
Q37SELECT Title, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND EventDate >= '2013-07-01' AND EventDate <= '20...
0.595s0.627s0.322s0.322s
Q38SELECT URL, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND EventDate >= '2013-07-01' AND EventDate <= '2013...
0.559s0.581s0.297s0.297s
Q39SELECT TraficSourceID, SearchEngineID, AdvEngineID, CASE WHEN (SearchEngineID = 0 AND AdvEngineID = 0) THEN Referer E...
0.897s0.865s0.373s0.373s
Q40SELECT URLHash, EventDate, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND EventDate >= '2013-07-01' AND Eve...
0.487s0.510s0.226s0.226s
Q41SELECT WindowClientWidth, WindowClientHeight, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND EventDate >= '...
0.498s0.598s0.249s0.249s
Q42SELECT DATE_TRUNC('minute', EventTime) AS M, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND EventDate >= '2...
0.497s0.543s0.227s0.227s

ClickBench point lookup

clickbench-point-lookup · latest HarborSQL v0.1.10

High-concurrency lookup workload over the optimized ClickBench hits table. The runner executes three 10-second phases with increasing target load: 10 RPS, then 20 RPS, then 50 RPS. It issues point-lookups in parallel at each load level using random lookup keys to reduce cache effects. The result reports request count, failure count, average latency, and tail latency percentiles across the run.

ComparisonInstance sizeVersion$/hrAttemptedFailedWall timeRun costAvgp95p99Result
Databricks2xsv2026.10$3.608000220.7s$0.220717.601s38.723s41.559sresults/databricks-sql-warehouse/2xs/v2026.10/clickbench-point-lookup/databricks-2xs-aws-ec2-t3.small-point-lookup-20260510T152625Z.json
Databricks2xsv2026.10.cloudfetch$3.608000223.6s$0.223621.697s43.913s45.476sresults/databricks-sql-warehouse/2xs/v2026.10.cloudfetch/clickbench-point-lookup/databricks-2xs-aws-ec2-t3.small-point-lookup-20260526T211153Z.json
Latestc8i.2xlargev0.1.10$0.4454800186197.6s$0.024517.314s38.724s48.086sresults/harborsql/c8i.2xlarge/v0.1.10/clickbench-point-lookup/point-lookup-concurrency.json
Selectedc8i.2xlargev0.1.10$0.4454800186197.6s$0.024517.314s38.724s48.086sresults/harborsql/c8i.2xlarge/v0.1.10/clickbench-point-lookup/point-lookup-concurrency.json
Point-lookup stage breakdown
StageComparisonVersionTarget RPSAttemptedFailedDrainAvg latencyp95p99Query delay p95Worker delay p95
Stage 1Databricksv2026.1010100041.998s18.254s26.278s26.627s46.731s
Stage 2Databricksv2026.1020200022.160s9.591s21.312s22.094s1.123s
Stage 3Databricksv2026.1050500058.361s20.674s40.334s41.835s22.160s
Stage 1Databricksv2026.10.cloudfetch10100046.527s28.834s34.058s34.244s19.451s
Stage 2Databricksv2026.10.cloudfetch20200024.319s11.893s21.435s21.664s3.076s
Stage 3Databricksv2026.10.cloudfetch50500061.746s24.192s44.441s45.632s28.325s
Stage 1Latestv0.1.101010006.896s5.347s9.722s11.719s1.005s
Stage 2Latestv0.1.1020200021.078s14.076s23.748s26.546s2.477s
Stage 3Latestv0.1.105050018646.899s23.188s41.137s50.653s25.897s
Stage 1Selectedv0.1.101010006.896s5.347s9.722s11.719s1.005s
Stage 2Selectedv0.1.1020200021.078s14.076s23.748s26.546s2.477s
Stage 3Selectedv0.1.105050018646.899s23.188s41.137s50.653s25.897s

Delta types

delta-types · latest HarborSQL v0.1.10

Delta Lake compatibility fixture for type decoding and projection. The core queries read scalar, array, map, and struct columns from delta_type_matrix, including nested field access.

ComparisonInstance sizeVersion$/hrQueriesRuns/queryFailedBest totalBest costMedian totalMedian costAverage totalAverage costResult
Databricks2xsv2026.10$3.604302.965s$0.002973.252s$0.0032518.739s$0.0187results/databricks-sql-warehouse/2xs/v2026.10/delta-types/databricks-2xs-aws-ec2-t3.small-delta-types-20260510T152629Z.json
Databricks2xsv2026.10.cloudfetch$3.604304.792s$0.004795.931s$0.0059320.464s$0.0205results/databricks-sql-warehouse/2xs/v2026.10.cloudfetch/delta-types/databricks-2xs-aws-ec2-t3.small-delta-types-20260526T211151Z.json
Latestc8i.2xlargev0.1.10$0.44544300.361s$0.000040.369s$0.000050.480s$0.00006results/harborsql/c8i.2xlarge/v0.1.10/delta-types/compatibility.json
Selectedc8i.2xlargev0.1.10$0.44544300.361s$0.000040.369s$0.000050.480s$0.00006results/harborsql/c8i.2xlarge/v0.1.10/delta-types/compatibility.json

SSB

ssb · latest HarborSQL v0.1.10

Star Schema Benchmark analytical workload at scale factor 10. The runner executes the 13 generated SSB queries over S3-backed Delta tables and reports aggregate query timings.

ComparisonInstance sizeVersion$/hrQueriesRuns/queryFailedBest totalBest costMedian totalMedian costAverage totalAverage costResult
Databricks2xsv2026.10$3.60133030.681s$0.030753.181s$0.053274.424s$0.0744results/databricks-sql-warehouse/2xs/v2026.10/ssb/databricks-2xs-aws-ec2-t3.small-ssb-sf10-20260510T152631Z.json
Databricks2xsv2026.10.cloudfetch$3.60133024.294s$0.024329.902s$0.029980.208s$0.0802results/databricks-sql-warehouse/2xs/v2026.10.cloudfetch/ssb/databricks-2xs-aws-ec2-t3.small-ssb-sf10-20260526T211154Z.json
Latestc8i.2xlargev0.1.10$0.4454133034.248s$0.0042435.938s$0.0044536.381s$0.00450results/harborsql/c8i.2xlarge/v0.1.10/ssb/ssb-sf10.json
Selectedc8i.2xlargev0.1.10$0.4454133034.248s$0.0042435.938s$0.0044536.381s$0.00450results/harborsql/c8i.2xlarge/v0.1.10/ssb/ssb-sf10.json
Per-query detail
QueryDatabricks / 2xsDatabricks / 2xsLatest HarborSQL / c8i.2xlargeSelected HarborSQL / c8i.2xlargeSelected HarborSQL / i3.2xlargeSelected HarborSQL / i3.xlarge
Q1.1SELECT SUM(lo_extendedprice * lo_discount) AS revenue FROM lineorder, date WHERE lo_orderdate = d_datekey AND d_year...
1.329s1.526s1.230s1.230s
Q1.2SELECT SUM(lo_extendedprice * lo_discount) AS revenue FROM lineorder, date WHERE lo_orderdate = d_datekey AND d_yearm...
1.180s1.154s1.284s1.284s
Q1.3SELECT SUM(lo_extendedprice * lo_discount) AS revenue FROM lineorder, date WHERE lo_orderdate = d_datekey AND d_weekn...
1.335s1.813s1.329s1.329s
Q2.1SELECT SUM(lo_revenue), d_year, p_brand FROM lineorder, date, part, supplier WHERE lo_orderdate = d_datekey AND lo_pa...
5.194s1.949s2.593s2.593s
Q2.2SELECT SUM(lo_revenue), d_year, p_brand FROM lineorder, date, part, supplier WHERE lo_orderdate = d_datekey AND lo_pa...
1.621s2.105s2.443s2.443s
Q2.3SELECT SUM(lo_revenue), d_year, p_brand FROM lineorder, date, part, supplier WHERE lo_orderdate = d_datekey AND lo_pa...
1.626s1.640s2.305s2.305s
Q3.1SELECT c_nation, s_nation, d_year, SUM(lo_revenue) AS revenue FROM customer, lineorder, supplier, date WHERE lo_custk...
2.722s1.808s1.373s1.373s
Q3.2SELECT c_city, s_city, d_year, SUM(lo_revenue) AS revenue FROM customer, lineorder, supplier, date WHERE lo_custkey =...
2.290s1.540s1.098s1.098s
Q3.3SELECT c_city, s_city, d_year, SUM(lo_revenue) AS revenue FROM customer, lineorder, supplier, date WHERE lo_custkey =...
1.336s2.553s1.003s1.003s
Q3.4SELECT c_city, s_city, d_year, SUM(lo_revenue) AS revenue FROM customer, lineorder, supplier, date WHERE lo_custkey =...
2.316s1.421s0.814s0.814s
Q4.1SELECT d_year, c_nation, SUM(lo_revenue - lo_supplycost) AS profit FROM date, customer, supplier, part, lineorder WHE...
4.520s2.561s14.427s14.427s
Q4.2SELECT d_year, s_nation, p_category, SUM(lo_revenue - lo_supplycost) AS profit FROM date, customer, supplier, part, l...
2.455s2.155s2.208s2.208s
Q4.3SELECT d_year, s_city, p_brand, SUM(lo_revenue - lo_supplycost) AS profit FROM date, customer, supplier, part, lineor...
2.757s2.069s2.141s2.141s