summaryrefslogtreecommitdiff
path: root/src/exchangedb/benchmark-0001.sql
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2021-11-29 00:17:09 +0100
committerChristian Grothoff <christian@grothoff.org>2021-11-29 00:17:09 +0100
commit65533e8df5ea5ebf25bd9ae04186a475057efa9e (patch)
tree10bf4fc947d90c3a94d86e95defba35da199e082 /src/exchangedb/benchmark-0001.sql
parentc3ce84af44d7c281eb402500510053e2af86c314 (diff)
downloadexchange-65533e8df5ea5ebf25bd9ae04186a475057efa9e.tar.gz
exchange-65533e8df5ea5ebf25bd9ae04186a475057efa9e.tar.bz2
exchange-65533e8df5ea5ebf25bd9ae04186a475057efa9e.zip
-simple DB benchmark
Diffstat (limited to 'src/exchangedb/benchmark-0001.sql')
-rw-r--r--src/exchangedb/benchmark-0001.sql30
1 files changed, 27 insertions, 3 deletions
diff --git a/src/exchangedb/benchmark-0001.sql b/src/exchangedb/benchmark-0001.sql
index 07fe49407..34fed6a55 100644
--- a/src/exchangedb/benchmark-0001.sql
+++ b/src/exchangedb/benchmark-0001.sql
@@ -20,12 +20,36 @@ BEGIN;
-- Check patch versioning is in place.
SELECT _v.register_patch('benchmark-0001', NULL, NULL);
-
+-- Naive, btree version
CREATE TABLE IF NOT EXISTS benchmap
- (reserve_uuid BIGSERIAL UNIQUE
- ,hash BYTEA PRIMARY KEY CHECK(LENGTH(hash)=64)
+ (uuid BIGSERIAL PRIMARY KEY
+ ,hc BYTEA UNIQUE CHECK(LENGTH(hc)=64)
+ ,expiration_date INT8 NOT NULL
+ );
+
+-- Replace btree with hash-based index
+CREATE TABLE IF NOT EXISTS benchhmap
+ (uuid BIGSERIAL PRIMARY KEY
+ ,hc BYTEA NOT NULL CHECK(LENGTH(hc)=64)
+ ,expiration_date INT8 NOT NULL
+ );
+CREATE INDEX IF NOT EXISTS benchhmap_index
+ ON benchhmap
+ USING HASH (hc);
+ALTER TABLE benchhmap
+ ADD CONSTRAINT pk
+ EXCLUDE USING HASH (hc with =);
+
+-- Keep btree, also add 32-bit hash-based index on top
+CREATE TABLE IF NOT EXISTS benchemap
+ (uuid BIGSERIAL PRIMARY KEY
+ ,ihc INT4 NOT NULL
+ ,hc BYTEA UNIQUE CHECK(LENGTH(hc)=64)
,expiration_date INT8 NOT NULL
);
+CREATE INDEX IF NOT EXISTS benchemap_index
+ ON benchemap
+ USING HASH (ihc);
-- Complete transaction
COMMIT;