From 311282762f370f06b6fcb0cbce1743c8d9b8283e Mon Sep 17 00:00:00 2001 From: Christian Schwarz Date: Thu, 15 Aug 2024 12:51:04 +0000 Subject: [PATCH] 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 d9a57aeed9ca9b0e2134e7183355d52fb6a089d1 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