experiments-postgresql-locks/pg_lock_hash_info--1.0.sql

66 lines
1.6 KiB
SQL

CREATE FUNCTION pg_lock_hash_info()
RETURNS TABLE (
dsize INT,
nsegs INT,
max_bucket INT,
keysize INT,
entrysize INT,
num_partitions INT,
max_dsize INT,
ssize INT,
sshift INT,
nelem_alloc INT,
nfree INT,
nlockents INT,
low_mask INT,
high_mask INT
) AS 'pg_lock_hash_info', 'pg_lock_hash_info'
LANGUAGE C STRICT;
CREATE FUNCTION pg_lock_hash_freelist_info()
RETURNS TABLE (
freelist INT,
nentries INT,
count INT
) AS 'pg_lock_hash_info', 'pg_lock_hash_freelist_info'
LANGUAGE C STRICT;
CREATE FUNCTION pg_lock_hash_bucket_info()
RETURNS TABLE (
segment INT,
bucket INT,
bucket_hash INT,
bucket_hash_low INT,
bucket_hash_high INT,
entries INT
) AS 'pg_lock_hash_info', 'pg_lock_hash_bucket_info'
LANGUAGE C STRICT;
CREATE VIEW pg_lock_hash_info AS
SELECT * from pg_lock_hash_info();
CREATE VIEW pg_lock_hash_freelist_info AS
SELECT * FROM pg_lock_hash_freelist_info();
CREATE VIEW pg_lock_hash_bucket_info AS
SELECT * from pg_lock_hash_bucket_info();
CREATE VIEW pg_lock_hash_freelist_summary AS
SELECT count(*) AS freelist_total,
sum(nentries) AS nentries_total,
avg(nentries) AS nentries_avg,
stddev_pop(nentries) nentries_stddev,
sum(count) AS count_total,
avg(count) AS count_avg,
stddev_pop(count) AS count_stddev,
sum(nentries+count) AS total
FROM pg_lock_hash_freelist_info();
CREATE VIEW pg_lock_hash_bucket_summary AS
SELECT count(*) AS buckets_total,
sum(entries) AS total_active_locks,
avg(entries) AS avg_bucket_size,
stddev_pop(entries) AS stddev_bucket_size
FROM pg_lock_hash_bucket_info();