Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added sequential scan performance tests #303

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -37,23 +37,18 @@ jobs:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt update && sudo apt install -y vault
- name: Clone postgres repository
uses: actions/checkout@v4
with:
repository: 'postgres/postgres'
ref: 'a81e5516fa4bc53e332cb35eefe231147c0e1749'
repository: 'percona-lab/postgres'
ref: 'TDE_REL_17_STABLE'
path: 'src'

- name: Clone pg_tde repository
uses: actions/checkout@v4
with:
path: 'src/contrib/pg_tde'

- name: Include pg_tde in meson build
run: |
echo "subdir('pg_tde')" >> src/contrib/meson.build
- name: Build postgres
run: |
meson setup build --prefix `pwd`/../inst --buildtype=release
Expand Down Expand Up @@ -93,6 +88,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 +105,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 +121,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 pp-2019.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;
Loading