Skip to content

Commit

Permalink
Added sequential scan performance tests
Browse files Browse the repository at this point in the history
  • Loading branch information
dutow committed Oct 7, 2024
1 parent a683aa3 commit 3e01b1d
Show file tree
Hide file tree
Showing 7 changed files with 121 additions and 0 deletions.
8 changes: 8 additions & 0 deletions .github/workflows/postgresql-16-src-meson-perf.yml
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,7 @@ jobs:
bin/psql sbtest2 <<< "SELECT pg_tde_add_key_provider_file('file-vault','/tmp/pg_tde_test_keyring.per');"
bin/psql sbtest2 <<< "SELECT pg_tde_set_principal_key('test-db-principal-key','file-vault');"
cp -r ../src/contrib/pg_tde/sysbench .
cp -r ../src/contrib/pg_tde/perf .
working-directory: inst

- name: Run baseline performance tests
Expand All @@ -109,6 +110,12 @@ jobs:
sysbench --db-driver=pgsql --threads=1 sysbench/oltp_read_only.lua --tables=1 --table-size=10000 --pgsql-db=sbtest2 run | tee perf_tde
working-directory: inst

- name: Run seq read performance tests
run: |
export PATH=../bin/:$PATH
./seq_read.sh | tee seq_read
working-directory: inst/perf

- name: Print results
run: |
NORM_Q=$(cat perf_norm | grep 'total number of events' | cut -d ':' -f 2 | sed 's/ //g')
Expand All @@ -119,6 +126,7 @@ jobs:
echo "Normal queries: $(cat perf_norm | grep 'total number of events' | cut -d ':' -f 2 | sed 's/ //g')" >> pr_perf_results
echo "TDE queries: $(cat perf_tde | grep 'total number of events' | cut -d ':' -f 2 | sed 's/ //g')" >> pr_perf_results
echo "Percentage: $(($TDE_Q*100/$NORM_Q))%" >> pr_perf_results
cat perf/seq_read >> pr_perf_results
PERF_RESULT=$(cat pr_perf_results)
echo "PERF_RESULT<<EOF" >> $GITHUB_ENV
echo "$PERF_RESULT" >> $GITHUB_ENV
Expand Down
Binary file added perf/pp-2019.csv.xz
Binary file not shown.
15 changes: 15 additions & 0 deletions perf/seq_read.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#!/usr/bin/env bash
cd "$(dirname "$0")"

xz -d pp2019.csv.xz
cp pp-2019.csv /tmp/
createdb seq_read_test
psql seq_read_test < seq_read_prepare.sql > /dev/null
echo "Sequential scan read times"
echo "=========================="
echo -n "HEAP: "
psql seq_read_test < seq_read_run_heap.sql | grep "Execution" | tail -n 10 | cut -d " " -f 4 | paste -sd+ | bc
echo -n "TDE: "
psql seq_read_test < seq_read_run_tde.sql | grep "Execution" | tail -n 10 | cut -d " " -f 4 | paste -sd+ | bc
echo -n "TDE_BASIC: "
psql seq_read_test < seq_read_run_tde_basic.sql | grep "Execution" | tail -n 10 | cut -d " " -f 4 | paste -sd+ | bc
65 changes: 65 additions & 0 deletions perf/seq_read_prepare.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
CREATE EXTENSION pg_tde;

SELECT pg_tde_add_key_provider_file('file-store','/tmp/pg_tde_test_keyring.per');
SELECT pg_tde_set_principal_key('test-db-principal-key','file-store');


CREATE TABLE land_registry_price_paid_uk(
transaction uuid,
price numeric,
transfer_date date,
postcode text,
property_type char(1),
newly_built boolean,
duration char(1),
paon text,
saon text,
street text,
locality text,
city text,
district text,
county text,
ppd_category_type char(1),
record_status char(1));

CREATE TABLE land_registry_price_paid_uk_tde(
transaction uuid,
price numeric,
transfer_date date,
postcode text,
property_type char(1),
newly_built boolean,
duration char(1),
paon text,
saon text,
street text,
locality text,
city text,
district text,
county text,
ppd_category_type char(1),
record_status char(1)) USING tde_heap;

CREATE TABLE land_registry_price_paid_uk_tde_basic(
transaction uuid,
price numeric,
transfer_date date,
postcode text,
property_type char(1),
newly_built boolean,
duration char(1),
paon text,
saon text,
street text,
locality text,
city text,
district text,
county text,
ppd_category_type char(1),
record_status char(1)) USING tde_heap_basic;

COPY land_registry_price_paid_uk FROM '/tmp/pp-2019.csv' with (format csv, encoding 'win1252', header false, null '', quote '"', force_null (postcode, saon, paon, street, locality, city, district));

COPY land_registry_price_paid_uk_tde FROM '/tmp/pp-2019.csv' with (format csv, encoding 'win1252', header false, null '', quote '"', force_null (postcode, saon, paon, street, locality, city, district));

COPY land_registry_price_paid_uk_tde_basic FROM '/tmp/pp-2019.csv' with (format csv, encoding 'win1252', header false, null '', quote '"', force_null (postcode, saon, paon, street, locality, city, district));
11 changes: 11 additions & 0 deletions perf/seq_read_run_heap.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
EXPLAIN ANALYZE SELECT * FROM land_registry_price_paid_uk;
EXPLAIN ANALYZE SELECT * FROM land_registry_price_paid_uk;
EXPLAIN ANALYZE SELECT * FROM land_registry_price_paid_uk;
EXPLAIN ANALYZE SELECT * FROM land_registry_price_paid_uk;
EXPLAIN ANALYZE SELECT * FROM land_registry_price_paid_uk;
EXPLAIN ANALYZE SELECT * FROM land_registry_price_paid_uk;
EXPLAIN ANALYZE SELECT * FROM land_registry_price_paid_uk;
EXPLAIN ANALYZE SELECT * FROM land_registry_price_paid_uk;
EXPLAIN ANALYZE SELECT * FROM land_registry_price_paid_uk;
EXPLAIN ANALYZE SELECT * FROM land_registry_price_paid_uk;
EXPLAIN ANALYZE SELECT * FROM land_registry_price_paid_uk;
11 changes: 11 additions & 0 deletions perf/seq_read_run_tde.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
EXPLAIN ANALYZE SELECT * FROM land_registry_price_paid_uk_tde;
EXPLAIN ANALYZE SELECT * FROM land_registry_price_paid_uk_tde;
EXPLAIN ANALYZE SELECT * FROM land_registry_price_paid_uk_tde;
EXPLAIN ANALYZE SELECT * FROM land_registry_price_paid_uk_tde;
EXPLAIN ANALYZE SELECT * FROM land_registry_price_paid_uk_tde;
EXPLAIN ANALYZE SELECT * FROM land_registry_price_paid_uk_tde;
EXPLAIN ANALYZE SELECT * FROM land_registry_price_paid_uk_tde;
EXPLAIN ANALYZE SELECT * FROM land_registry_price_paid_uk_tde;
EXPLAIN ANALYZE SELECT * FROM land_registry_price_paid_uk_tde;
EXPLAIN ANALYZE SELECT * FROM land_registry_price_paid_uk_tde;
EXPLAIN ANALYZE SELECT * FROM land_registry_price_paid_uk_tde;
11 changes: 11 additions & 0 deletions perf/seq_read_run_tde_basic.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
EXPLAIN ANALYZE SELECT * FROM land_registry_price_paid_uk_tde_basic;
EXPLAIN ANALYZE SELECT * FROM land_registry_price_paid_uk_tde_basic;
EXPLAIN ANALYZE SELECT * FROM land_registry_price_paid_uk_tde_basic;
EXPLAIN ANALYZE SELECT * FROM land_registry_price_paid_uk_tde_basic;
EXPLAIN ANALYZE SELECT * FROM land_registry_price_paid_uk_tde_basic;
EXPLAIN ANALYZE SELECT * FROM land_registry_price_paid_uk_tde_basic;
EXPLAIN ANALYZE SELECT * FROM land_registry_price_paid_uk_tde_basic;
EXPLAIN ANALYZE SELECT * FROM land_registry_price_paid_uk_tde_basic;
EXPLAIN ANALYZE SELECT * FROM land_registry_price_paid_uk_tde_basic;
EXPLAIN ANALYZE SELECT * FROM land_registry_price_paid_uk_tde_basic;
EXPLAIN ANALYZE SELECT * FROM land_registry_price_paid_uk_tde_basic;

0 comments on commit 3e01b1d

Please sign in to comment.