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:
Christian Schwarz
2024-08-15 12:51:04 +00:00
parent 72966e06a2
commit 311282762f

Diff Content Not Available