mirror of
https://github.com/neondatabase/neon.git
synced 2026-05-24 00:20:37 +00:00
manually benchmark get_values_reconstruct_data performance
on my M2 MacBook Pro, running a Linux VM
./target/release/neon_local stop
rm -rf .neon
./target/release/neon_local init
./target/release/neon_local start
./target/release/neon_local tenant create --set-default
./target/release/neon_local endpoint create foo
./target/release/neon_local endpoint start foo
psql 'postgresql://cloud_admin@127.0.0.1:55432/postgres'
psql (13.16 (Debian 13.16-0+deb11u1), server 15.7)
CREATE TABLE wal_test (
id SERIAL PRIMARY KEY,
data TEXT
);
DO $$
DECLARE
i INTEGER := 1;
BEGIN
WHILE i <= 500000 LOOP
INSERT INTO wal_test (data) VALUES ('data');
i := i + 1;
END LOOP;
END $$;
-- => result is one L0 from initdb and one 137M-sized ephemeral-2
DO $$
DECLARE
i INTEGER := 1;
random_id INTEGER;
random_record wal_test%ROWTYPE;
start_time TIMESTAMP := clock_timestamp();
selects_completed INTEGER := 0;
min_id INTEGER := 1; -- Minimum ID value
max_id INTEGER := 100000; -- Maximum ID value, based on your insert range
iters INTEGER := 100000000; -- Number of iterations to run
BEGIN
WHILE i <= iters LOOP
-- Generate a random ID within the known range
random_id := min_id + floor(random() * (max_id - min_id + 1))::int;
-- Select the row with the generated random ID
SELECT * INTO random_record
FROM wal_test
WHERE id = random_id;
-- Increment the select counter
selects_completed := selects_completed + 1;
-- Check if a second has passed
IF EXTRACT(EPOCH FROM clock_timestamp() - start_time) >= 1 THEN
-- Print the number of selects completed in the last second
RAISE NOTICE 'Selects completed in last second: %', selects_completed;
-- Reset counters for the next second
selects_completed := 0;
start_time := clock_timestamp();
END IF;
-- Increment the loop counter
i := i + 1;
END LOOP;
END $$;
./target/release/neon_local stop
baseline: commit d9a57aeed9 origin/main,
NOTICE: Selects completed in last second: 1286
NOTICE: Selects completed in last second: 1352
NOTICE: Selects completed in last second: 1365
NOTICE: Selects completed in last second: 1399
NOTICE: Selects completed in last second: 1410
NOTICE: Selects completed in last second: 1393
NOTICE: Selects completed in last second: 1316
ours
NOTICE: Selects completed in last second: 1541
NOTICE: Selects completed in last second: 1536
NOTICE: Selects completed in last second: 1493
NOTICE: Selects completed in last second: 1379
NOTICE: Selects completed in last second: 1519
NOTICE: Selects completed in last second: 1546
NOTICE: Selects completed in last second: 1489
NOTICE: Selects completed in last second: 1578
NOTICE: Selects completed in last second: 1508
This commit is contained in: