mirror of
https://github.com/neondatabase/neon.git
synced 2026-05-27 01:50:38 +00:00
Usage:
postgres=# \timing
Timing is on.
postgres=# select neon_seqscan_rel('pgbench_accounts', 1000);
INFO: scanning 491804 blocks, prefetch 1000
INFO: blk 0/491804
INFO: blk 1024/491804
INFO: blk 2048/491804
INFO: blk 3072/491804
...
INFO: blk 489472/491804
INFO: blk 490496/491804
INFO: blk 491520/491804
neon_seqscan_rel
------------------
(1 row)
Time: 57517.979 ms (00:57.518)
The second argument to the function is the number of pages to prefetch.
Note: the prefetching in this function works differently from the
prefetching we have for sequential scans in 'main'. After receiving the
result for a block, it immediately sends the request for the next page,
it doesn't send them in batches like 'main' does.
35 lines
1.0 KiB
SQL
35 lines
1.0 KiB
SQL
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
|
|
\echo Use "CREATE EXTENSION neon_test_utils" to load this file. \quit
|
|
|
|
CREATE FUNCTION test_consume_xids(nxids int)
|
|
RETURNS VOID
|
|
AS 'MODULE_PATHNAME', 'test_consume_xids'
|
|
LANGUAGE C STRICT
|
|
PARALLEL UNSAFE;
|
|
|
|
CREATE FUNCTION clear_buffer_cache()
|
|
RETURNS VOID
|
|
AS 'MODULE_PATHNAME', 'clear_buffer_cache'
|
|
LANGUAGE C STRICT
|
|
PARALLEL UNSAFE;
|
|
|
|
CREATE FUNCTION get_raw_page_at_lsn(relname text, forkname text, blocknum int8, lsn pg_lsn)
|
|
RETURNS bytea
|
|
AS 'MODULE_PATHNAME', 'get_raw_page_at_lsn'
|
|
LANGUAGE C PARALLEL UNSAFE;
|
|
|
|
CREATE FUNCTION get_raw_page_at_lsn(tbspc oid, db oid, relfilenode oid, forknum int8, blocknum int8, lsn pg_lsn)
|
|
RETURNS bytea
|
|
AS 'MODULE_PATHNAME', 'get_raw_page_at_lsn_ex'
|
|
LANGUAGE C PARALLEL UNSAFE;
|
|
|
|
CREATE FUNCTION neon_seqscan_rel(rel regclass, nprefetch int DEFAULT 0)
|
|
RETURNS void
|
|
AS 'MODULE_PATHNAME', 'neon_seqscan_rel'
|
|
LANGUAGE C PARALLEL UNSAFE;
|
|
|
|
CREATE FUNCTION neon_xlogflush(lsn pg_lsn)
|
|
RETURNS VOID
|
|
AS 'MODULE_PATHNAME', 'neon_xlogflush'
|
|
LANGUAGE C PARALLEL UNSAFE;
|