should be it
This commit is contained in:
22
external/duckdb/benchmark/micro/index/checkpoint/checkpoint_art.benchmark
vendored
Normal file
22
external/duckdb/benchmark/micro/index/checkpoint/checkpoint_art.benchmark
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
# name: benchmark/micro/index/checkpoint/checkpoint_art.benchmark
|
||||
# description: Checkpoint an ART
|
||||
# group: [checkpoint]
|
||||
|
||||
name Checkpoint (ART)
|
||||
group art
|
||||
|
||||
#cache art_checkpoint.duckdb
|
||||
storage persistent
|
||||
|
||||
load
|
||||
CREATE TABLE art AS SELECT (range * 9876983769044::INT128 % 10000000)::INT64 AS id FROM range(10000000);
|
||||
CREATE INDEX idx ON art USING ART(id);
|
||||
|
||||
run
|
||||
CHECKPOINT;
|
||||
INSERT INTO art SELECT (range * 9876123469044::INT128 % 10000000)::INT64 AS id FROM range(1000000);
|
||||
CHECKPOINT;
|
||||
|
||||
cleanup
|
||||
DROP INDEX idx;
|
||||
CREATE INDEX idx ON art USING ART(id);
|
||||
15
external/duckdb/benchmark/micro/index/create/create_art.benchmark
vendored
Normal file
15
external/duckdb/benchmark/micro/index/create/create_art.benchmark
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
# name: benchmark/micro/index/create/create_art.benchmark
|
||||
# description: Create ART on 10M integers, 2.5M distinct values
|
||||
# group: [create]
|
||||
|
||||
name Create ART
|
||||
group art
|
||||
|
||||
load
|
||||
CREATE TABLE art AS SELECT (range * 9876983769044::INT128 % 10000000)::INT64 AS id FROM range(10000000);
|
||||
|
||||
run
|
||||
CREATE INDEX idx ON art USING ART(id);
|
||||
|
||||
cleanup
|
||||
DROP INDEX idx;
|
||||
15
external/duckdb/benchmark/micro/index/create/create_art_duplicates.benchmark
vendored
Normal file
15
external/duckdb/benchmark/micro/index/create/create_art_duplicates.benchmark
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
# name: benchmark/micro/index/create/create_art_duplicates.benchmark
|
||||
# description: Create ART on 10M integers, approx. 100 distinct values
|
||||
# group: [create]
|
||||
|
||||
name Create ART Duplicates
|
||||
group art
|
||||
|
||||
load
|
||||
CREATE TABLE art AS SELECT (random() * 100)::INT AS id FROM range(10000000);
|
||||
|
||||
run
|
||||
CREATE INDEX idx ON art USING ART(id);
|
||||
|
||||
cleanup
|
||||
DROP INDEX idx;
|
||||
16
external/duckdb/benchmark/micro/index/create/create_art_pk.benchmark
vendored
Normal file
16
external/duckdb/benchmark/micro/index/create/create_art_pk.benchmark
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
# name: benchmark/micro/index/create/create_art_pk.benchmark
|
||||
# description: Create ART PK on 10M integers, 2.5M distinct values
|
||||
# group: [create]
|
||||
|
||||
name Create ART PK
|
||||
group art
|
||||
|
||||
load
|
||||
CREATE TABLE art AS SELECT range AS id, random() AS pos FROM range(10000000) ORDER BY pos;
|
||||
|
||||
run
|
||||
ALTER TABLE art ADD PRIMARY KEY (id);
|
||||
|
||||
cleanup
|
||||
DROP TABLE art;
|
||||
CREATE TABLE art AS SELECT range AS id, random() AS pos FROM range(10000000) ORDER BY pos;
|
||||
15
external/duckdb/benchmark/micro/index/create/create_art_random.benchmark
vendored
Normal file
15
external/duckdb/benchmark/micro/index/create/create_art_random.benchmark
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
# name: benchmark/micro/index/create/create_art_random.benchmark
|
||||
# description: Create ART on 10M integers, approx. 1M distinct values
|
||||
# group: [create]
|
||||
|
||||
name Create ART Random
|
||||
group art
|
||||
|
||||
load
|
||||
CREATE TABLE art AS SELECT (random() * 1000000)::INT AS id FROM range(10000000);
|
||||
|
||||
run
|
||||
CREATE INDEX idx ON art USING ART(id);
|
||||
|
||||
cleanup
|
||||
DROP INDEX idx;
|
||||
15
external/duckdb/benchmark/micro/index/create/create_art_sorted.benchmark
vendored
Normal file
15
external/duckdb/benchmark/micro/index/create/create_art_sorted.benchmark
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
# name: benchmark/micro/index/create/create_art_sorted.benchmark
|
||||
# description: Create ART on 1M sorted integers
|
||||
# group: [create]
|
||||
|
||||
name Create ART Sorted
|
||||
group art
|
||||
|
||||
load
|
||||
CREATE TABLE art AS SELECT range::INT id FROM range(1000000);
|
||||
|
||||
run
|
||||
CREATE INDEX idx ON art USING ART(id);
|
||||
|
||||
cleanup
|
||||
DROP INDEX idx;
|
||||
15
external/duckdb/benchmark/micro/index/create/create_art_unique.benchmark
vendored
Normal file
15
external/duckdb/benchmark/micro/index/create/create_art_unique.benchmark
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
# name: benchmark/micro/index/create/create_art_unique.benchmark
|
||||
# description: Create UNIQUE ART on 10M integers, 2.5M distinct values
|
||||
# group: [create]
|
||||
|
||||
name Create ART UNIQUE
|
||||
group art
|
||||
|
||||
load
|
||||
CREATE TABLE art AS SELECT range AS id, random() AS pos FROM range(10000000) ORDER BY pos;
|
||||
|
||||
run
|
||||
CREATE UNIQUE INDEX idx ON art USING ART(id);
|
||||
|
||||
cleanup
|
||||
DROP INDEX idx;
|
||||
19
external/duckdb/benchmark/micro/index/create/create_art_varchar.benchmark
vendored
Normal file
19
external/duckdb/benchmark/micro/index/create/create_art_varchar.benchmark
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
# name: benchmark/micro/index/create/create_art_varchar.benchmark
|
||||
# description: Create ART on 28.8M VARCHARs with 7.2M unique values
|
||||
# group: [create]
|
||||
|
||||
name Create ART Varchar
|
||||
group art
|
||||
|
||||
load
|
||||
CREATE TABLE art AS
|
||||
SELECT rpad(((i * 95823983533) % 86000000)::VARCHAR, 10, '-') AS id
|
||||
FROM range(3600000) tbl(i);
|
||||
INSERT INTO art (SELECT * FROM art);
|
||||
INSERT INTO art (SELECT * FROM art);
|
||||
|
||||
run
|
||||
CREATE INDEX idx ON art USING ART(id);
|
||||
|
||||
cleanup
|
||||
DROP INDEX idx;
|
||||
20
external/duckdb/benchmark/micro/index/create/create_art_varchar_long.benchmark
vendored
Normal file
20
external/duckdb/benchmark/micro/index/create/create_art_varchar_long.benchmark
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
# name: benchmark/micro/index/create/create_art_varchar_long.benchmark
|
||||
# description: Create ART on 10M random long VARCHARs
|
||||
# group: [create]
|
||||
|
||||
name Create ART Varchar Long
|
||||
group art
|
||||
|
||||
load
|
||||
CREATE TEMPORARY TABLE strings_temp AS
|
||||
SELECT ((i * 95823983533) % 100000)::VARCHAR AS s1,
|
||||
((i * 547892347987) % 1000)::VARCHAR AS s2,
|
||||
((i * 847892347987) % 100)::VARCHAR AS s3,
|
||||
FROM range(1000000) tbl(i);
|
||||
CREATE TABLE art AS SELECT s3 || 'a' || s2 || 'b' || s3 || 'c' || repeat(s2, s3::INT) || s1 || 'a' || s3 || 'c' AS id FROM strings_temp;
|
||||
|
||||
run
|
||||
CREATE INDEX idx ON art USING ART(id);
|
||||
|
||||
cleanup
|
||||
DROP INDEX idx;
|
||||
20
external/duckdb/benchmark/micro/index/create/create_art_varchar_short.benchmark
vendored
Normal file
20
external/duckdb/benchmark/micro/index/create/create_art_varchar_short.benchmark
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
# name: benchmark/micro/index/create/create_art_varchar_short.benchmark
|
||||
# description: Create ART on 10M random short VARCHARs
|
||||
# group: [create]
|
||||
|
||||
name Create ART Varchar Short
|
||||
group art
|
||||
|
||||
load
|
||||
CREATE TEMPORARY TABLE strings_temp AS
|
||||
SELECT ((i * 95823983533) % 100000)::VARCHAR AS s1,
|
||||
((i * 547892347987) % 1000)::VARCHAR AS s2,
|
||||
((i * 847892347987) % 100)::VARCHAR AS s3,
|
||||
FROM range(1000000) tbl(i);
|
||||
CREATE TABLE art AS SELECT s1 || 'a' || s2 || 'b' || s3 || 'c' AS id FROM strings_temp;
|
||||
|
||||
run
|
||||
CREATE INDEX idx ON art USING ART(id);
|
||||
|
||||
cleanup
|
||||
DROP INDEX idx;
|
||||
18
external/duckdb/benchmark/micro/index/delete/delete_art.benchmark
vendored
Normal file
18
external/duckdb/benchmark/micro/index/delete/delete_art.benchmark
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
# name: benchmark/micro/index/delete/delete_art.benchmark
|
||||
# description: Delete approx. 5M integers from an ART with 10M integers
|
||||
# group: [delete]
|
||||
|
||||
name Delete ART
|
||||
group art
|
||||
|
||||
load
|
||||
CREATE TABLE temp AS SELECT (range * 9876983769044::INT128 % 10000000)::INT64 AS id FROM range(10000000);
|
||||
CREATE TABLE art AS (SELECT id FROM temp);
|
||||
CREATE INDEX idx ON art USING ART(id);
|
||||
|
||||
run
|
||||
DELETE FROM art WHERE id < 5000000;
|
||||
|
||||
cleanup
|
||||
DELETE FROM art;
|
||||
INSERT INTO art (SELECT id FROM temp);
|
||||
17
external/duckdb/benchmark/micro/index/insert/insert_art.benchmark
vendored
Normal file
17
external/duckdb/benchmark/micro/index/insert/insert_art.benchmark
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
# name: benchmark/micro/index/insert/insert_art.benchmark
|
||||
# description: Insert 10M integers into an ART
|
||||
# group: [insert]
|
||||
|
||||
name Insert ART
|
||||
group art
|
||||
|
||||
load
|
||||
CREATE TABLE temp AS SELECT (range * 9876983769044::INT128 % 10000000)::INT64 AS id FROM range(10000000);
|
||||
CREATE TABLE art (id INTEGER);
|
||||
CREATE INDEX idx ON art USING ART(id);
|
||||
|
||||
run
|
||||
INSERT INTO art (SELECT id FROM temp);
|
||||
|
||||
cleanup
|
||||
DELETE FROM art;
|
||||
16
external/duckdb/benchmark/micro/index/insert/insert_art_pk.benchmark
vendored
Normal file
16
external/duckdb/benchmark/micro/index/insert/insert_art_pk.benchmark
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
# name: benchmark/micro/index/insert/insert_art_pk.benchmark
|
||||
# description: Insert 10M integers into an ART PK
|
||||
# group: [insert]
|
||||
|
||||
name Insert ART PK
|
||||
group art
|
||||
|
||||
load
|
||||
CREATE TABLE temp AS SELECT range AS id, random() AS pos FROM range(10000000) ORDER BY pos;
|
||||
CREATE TABLE art (id INTEGER PRIMARY KEY);
|
||||
|
||||
run
|
||||
INSERT INTO art (SELECT id FROM temp);
|
||||
|
||||
cleanup
|
||||
DELETE FROM art;
|
||||
17
external/duckdb/benchmark/micro/index/insert/insert_art_unique.benchmark
vendored
Normal file
17
external/duckdb/benchmark/micro/index/insert/insert_art_unique.benchmark
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
# name: benchmark/micro/index/insert/insert_art_unique.benchmark
|
||||
# description: Insert 10M integers into an UNIQUE ART
|
||||
# group: [insert]
|
||||
|
||||
name Insert UNIQUE ART
|
||||
group art
|
||||
|
||||
load
|
||||
CREATE TABLE temp AS SELECT range AS id, random() AS pos FROM range(10000000) ORDER BY pos;
|
||||
CREATE TABLE art (id INTEGER);
|
||||
CREATE UNIQUE INDEX idx ON art USING ART(id);
|
||||
|
||||
run
|
||||
INSERT INTO art (SELECT id FROM temp);
|
||||
|
||||
cleanup
|
||||
DELETE FROM art;
|
||||
35
external/duckdb/benchmark/micro/index/insert/insert_pk_fk.benchmark
vendored
Normal file
35
external/duckdb/benchmark/micro/index/insert/insert_pk_fk.benchmark
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
# name: benchmark/micro/index/insert/insert_pk_fk.benchmark
|
||||
# description: Insert into multiple indexes
|
||||
# group: [insert]
|
||||
|
||||
name Insert into PK and FK
|
||||
group index
|
||||
|
||||
require tpcds
|
||||
|
||||
load
|
||||
BEGIN TRANSACTION;
|
||||
CALL dsdgen(sf=0.1);
|
||||
pragma threads=8;
|
||||
EXPORT DATABASE '${BENCHMARK_DIR}/sf1data';
|
||||
ROLLBACK;
|
||||
CREATE TABLE date_dim (d_date_sk Integer Not Null PRIMARY KEY, d_date_id String Not Null, d_date Date Not Null, d_month_seq Integer, d_week_seq Integer, d_quarter_seq Integer, d_year Integer, d_dow Integer, d_moy Integer, d_dom Integer, d_qoy Integer, d_fy_year Integer, d_fy_quarter_seq Integer, d_fy_week_seq Integer, d_day_name String, d_quarter_name String, d_holiday String, d_weekend String, d_following_holiday String, d_first_dom Integer, d_last_dom Integer, d_same_day_ly Integer, d_same_day_lq Integer, d_current_day String, d_current_week String, d_current_month String, d_current_quarter String, d_current_year String);
|
||||
CREATE TABLE warehouse (w_warehouse_sk Integer Not Null PRIMARY KEY, w_warehouse_id String Not Null, w_warehouse_name String, w_warehouse_sq_ft Integer, w_street_number String, w_street_name String, w_street_type String, w_suite_number String, w_city String, w_county String, w_state String, w_zip String, w_country String, w_gmt_offset Decimal(5,2));
|
||||
CREATE TABLE item (i_item_sk Integer Not Null PRIMARY KEY, i_item_id String Not Null, i_rec_start_date Date, i_rec_end_date Date, i_item_desc String, i_current_price Decimal(7,2), i_wholesale_cost Decimal(7,2), i_brand_id Integer, i_brand String, i_class_id Integer, i_class String, i_category_id Integer, i_category String, i_manufact_id Integer, i_manufact String, i_size String, i_formulation String, i_color String, i_units String, i_container String, i_manager_id Integer, i_product_name String);
|
||||
CREATE TABLE inventory (inv_date_sk Integer Not Null REFERENCES date_dim (d_date_sk), inv_item_sk Integer Not Null REFERENCES item (i_item_sk), inv_warehouse_sk Integer Not Null REFERENCES warehouse (w_warehouse_sk), inv_quantity_on_hand Integer);
|
||||
|
||||
run
|
||||
COPY date_dim FROM '${BENCHMARK_DIR}/sf1data/date_dim.csv' (FORMAT 'csv', header 1, delimiter ',', quote '"');
|
||||
COPY item FROM '${BENCHMARK_DIR}/sf1data/item.csv' (FORMAT 'csv', header 1, delimiter ',', quote '"');
|
||||
COPY warehouse FROM '${BENCHMARK_DIR}/sf1data/warehouse.csv' (FORMAT 'csv', header 1, delimiter ',', quote '"');
|
||||
COPY inventory FROM '${BENCHMARK_DIR}/sf1data/inventory.csv' (FORMAT 'csv', header 1, delimiter ',', quote '"');
|
||||
|
||||
cleanup
|
||||
DROP TABLE inventory;
|
||||
DROP TABLE item;
|
||||
DROP TABLE warehouse;
|
||||
DROP TABLE date_dim;
|
||||
CREATE TABLE date_dim (d_date_sk Integer Not Null PRIMARY KEY, d_date_id String Not Null, d_date Date Not Null, d_month_seq Integer, d_week_seq Integer, d_quarter_seq Integer, d_year Integer, d_dow Integer, d_moy Integer, d_dom Integer, d_qoy Integer, d_fy_year Integer, d_fy_quarter_seq Integer, d_fy_week_seq Integer, d_day_name String, d_quarter_name String, d_holiday String, d_weekend String, d_following_holiday String, d_first_dom Integer, d_last_dom Integer, d_same_day_ly Integer, d_same_day_lq Integer, d_current_day String, d_current_week String, d_current_month String, d_current_quarter String, d_current_year String);
|
||||
CREATE TABLE warehouse (w_warehouse_sk Integer Not Null PRIMARY KEY, w_warehouse_id String Not Null, w_warehouse_name String, w_warehouse_sq_ft Integer, w_street_number String, w_street_name String, w_street_type String, w_suite_number String, w_city String, w_county String, w_state String, w_zip String, w_country String, w_gmt_offset Decimal(5,2));
|
||||
CREATE TABLE item (i_item_sk Integer Not Null PRIMARY KEY, i_item_id String Not Null, i_rec_start_date Date, i_rec_end_date Date, i_item_desc String, i_current_price Decimal(7,2), i_wholesale_cost Decimal(7,2), i_brand_id Integer, i_brand String, i_class_id Integer, i_class String, i_category_id Integer, i_category String, i_manufact_id Integer, i_manufact String, i_size String, i_formulation String, i_color String, i_units String, i_container String, i_manager_id Integer, i_product_name String);
|
||||
CREATE TABLE inventory (inv_date_sk Integer Not Null REFERENCES date_dim (d_date_sk), inv_item_sk Integer Not Null REFERENCES item (i_item_sk), inv_warehouse_sk Integer Not Null REFERENCES warehouse (w_warehouse_sk), inv_quantity_on_hand Integer);
|
||||
27
external/duckdb/benchmark/micro/index/point/in_filter_with_index_scan.benchmark
vendored
Normal file
27
external/duckdb/benchmark/micro/index/point/in_filter_with_index_scan.benchmark
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
# name: benchmark/micro/index/point/in_filter_with_index_scan.benchmark
|
||||
# description: Benchmark the performance of adaptively choosing an index scan for an IN filter.
|
||||
# group: [point]
|
||||
|
||||
name IN filter with index scan
|
||||
group art
|
||||
|
||||
require tpch
|
||||
|
||||
load
|
||||
CALL dbgen(sf=1);
|
||||
SET index_scan_percentage = 1.0;
|
||||
CREATE TABLE random_orders AS (
|
||||
(SELECT o_orderkey FROM orders OFFSET 100 LIMIT 3)
|
||||
UNION
|
||||
(SELECT o_orderkey FROM orders
|
||||
OFFSET (SELECT COUNT(*) FROM orders) / 2 LIMIT 3)
|
||||
UNION
|
||||
(SELECT o_orderkey FROM orders
|
||||
OFFSET (SELECT COUNT(*) FROM orders) / 2 + 100000 LIMIT 3));
|
||||
CREATE TABLE orders_shuffled AS FROM orders ORDER BY random();
|
||||
ALTER TABLE orders_shuffled ADD PRIMARY KEY (o_orderkey);
|
||||
|
||||
run
|
||||
SELECT o_orderkey FROM orders_shuffled WHERE o_orderkey IN (
|
||||
SELECT UNNEST(LIST(o_orderkey)) FROM random_orders
|
||||
) ORDER BY ALL;
|
||||
18
external/duckdb/benchmark/micro/index/point/point_query_with_art.benchmark
vendored
Normal file
18
external/duckdb/benchmark/micro/index/point/point_query_with_art.benchmark
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
# name: benchmark/micro/index/point/point_query_with_art.benchmark
|
||||
# description: Point query with an ART on randomly ordered data
|
||||
# group: [point]
|
||||
|
||||
name Point Query (ART)
|
||||
group art
|
||||
|
||||
load
|
||||
SET index_scan_percentage = 1.0;
|
||||
CREATE TABLE integers AS
|
||||
SELECT (i * 9876983769044::INT128 % 100000000)::INT64 AS i, i + 2 AS j FROM range(0, 100000000) t(i);
|
||||
CREATE INDEX i_index ON integers USING ART(i);
|
||||
|
||||
run
|
||||
SELECT i FROM integers WHERE i = 50000 LIMIT 1
|
||||
|
||||
result I
|
||||
50000
|
||||
17
external/duckdb/benchmark/micro/index/point/point_query_with_art_and_many_keys.benchmark
vendored
Normal file
17
external/duckdb/benchmark/micro/index/point/point_query_with_art_and_many_keys.benchmark
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
# name: benchmark/micro/index/point/point_query_with_art_and_many_keys.benchmark
|
||||
# description: Point query with an ART and many duplicate keys.
|
||||
# group: [point]
|
||||
|
||||
name Point Query (ART) With Many Keys
|
||||
group art
|
||||
|
||||
load
|
||||
SET index_scan_percentage = 1.0;
|
||||
CREATE TABLE integers AS SELECT range % 100 AS i FROM range(10000000);
|
||||
CREATE INDEX i_index ON integers USING ART(i);
|
||||
|
||||
run
|
||||
SELECT COUNT(i) FROM integers WHERE i = '42';
|
||||
|
||||
result I
|
||||
100000
|
||||
17
external/duckdb/benchmark/micro/index/range/wide_range_query_with_art.benchmark
vendored
Normal file
17
external/duckdb/benchmark/micro/index/range/wide_range_query_with_art.benchmark
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
# name: benchmark/micro/index/range/wide_range_query_with_art.benchmark
|
||||
# description: Wide (non-selective) range query with ART
|
||||
# group: [range]
|
||||
|
||||
name Big Range Query (ART)
|
||||
group art
|
||||
|
||||
load
|
||||
SET index_scan_percentage = 1.0;
|
||||
CREATE TABLE integers AS SELECT i, i + 2 AS j FROM range(0, 100000000) t(i);
|
||||
CREATE INDEX i_index ON integers USING ART(i);
|
||||
|
||||
run
|
||||
SELECT COUNT(j) FROM integers WHERE i < 1500200;
|
||||
|
||||
result I
|
||||
1500200
|
||||
Reference in New Issue
Block a user