mirror of
https://github.com/postgres/postgres.git
synced 2025-05-09 18:21:05 +03:00
Since pgstattuple v1.5 hasn't been released yet, no need for a new extension version. The new function exposes statistics about hash indexes similar to what other pgstatindex functions return for other index types. Ashutosh Sharma, reviewed by Kuntal Ghosh. Substantial further revisions by me.
141 lines
6.5 KiB
Plaintext
141 lines
6.5 KiB
Plaintext
CREATE EXTENSION pgstattuple;
|
|
--
|
|
-- It's difficult to come up with platform-independent test cases for
|
|
-- the pgstattuple functions, but the results for empty tables and
|
|
-- indexes should be that.
|
|
--
|
|
create table test (a int primary key, b int[]);
|
|
select * from pgstattuple('test');
|
|
table_len | tuple_count | tuple_len | tuple_percent | dead_tuple_count | dead_tuple_len | dead_tuple_percent | free_space | free_percent
|
|
-----------+-------------+-----------+---------------+------------------+----------------+--------------------+------------+--------------
|
|
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0
|
|
(1 row)
|
|
|
|
select * from pgstattuple('test'::text);
|
|
table_len | tuple_count | tuple_len | tuple_percent | dead_tuple_count | dead_tuple_len | dead_tuple_percent | free_space | free_percent
|
|
-----------+-------------+-----------+---------------+------------------+----------------+--------------------+------------+--------------
|
|
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0
|
|
(1 row)
|
|
|
|
select * from pgstattuple('test'::name);
|
|
table_len | tuple_count | tuple_len | tuple_percent | dead_tuple_count | dead_tuple_len | dead_tuple_percent | free_space | free_percent
|
|
-----------+-------------+-----------+---------------+------------------+----------------+--------------------+------------+--------------
|
|
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0
|
|
(1 row)
|
|
|
|
select * from pgstattuple('test'::regclass);
|
|
table_len | tuple_count | tuple_len | tuple_percent | dead_tuple_count | dead_tuple_len | dead_tuple_percent | free_space | free_percent
|
|
-----------+-------------+-----------+---------------+------------------+----------------+--------------------+------------+--------------
|
|
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0
|
|
(1 row)
|
|
|
|
select pgstattuple(oid) from pg_class where relname = 'test';
|
|
pgstattuple
|
|
---------------------
|
|
(0,0,0,0,0,0,0,0,0)
|
|
(1 row)
|
|
|
|
select pgstattuple(relname) from pg_class where relname = 'test';
|
|
pgstattuple
|
|
---------------------
|
|
(0,0,0,0,0,0,0,0,0)
|
|
(1 row)
|
|
|
|
select version, tree_level,
|
|
index_size / current_setting('block_size')::int as index_size,
|
|
root_block_no, internal_pages, leaf_pages, empty_pages, deleted_pages,
|
|
avg_leaf_density, leaf_fragmentation
|
|
from pgstatindex('test_pkey');
|
|
version | tree_level | index_size | root_block_no | internal_pages | leaf_pages | empty_pages | deleted_pages | avg_leaf_density | leaf_fragmentation
|
|
---------+------------+------------+---------------+----------------+------------+-------------+---------------+------------------+--------------------
|
|
2 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | NaN | NaN
|
|
(1 row)
|
|
|
|
select version, tree_level,
|
|
index_size / current_setting('block_size')::int as index_size,
|
|
root_block_no, internal_pages, leaf_pages, empty_pages, deleted_pages,
|
|
avg_leaf_density, leaf_fragmentation
|
|
from pgstatindex('test_pkey'::text);
|
|
version | tree_level | index_size | root_block_no | internal_pages | leaf_pages | empty_pages | deleted_pages | avg_leaf_density | leaf_fragmentation
|
|
---------+------------+------------+---------------+----------------+------------+-------------+---------------+------------------+--------------------
|
|
2 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | NaN | NaN
|
|
(1 row)
|
|
|
|
select version, tree_level,
|
|
index_size / current_setting('block_size')::int as index_size,
|
|
root_block_no, internal_pages, leaf_pages, empty_pages, deleted_pages,
|
|
avg_leaf_density, leaf_fragmentation
|
|
from pgstatindex('test_pkey'::name);
|
|
version | tree_level | index_size | root_block_no | internal_pages | leaf_pages | empty_pages | deleted_pages | avg_leaf_density | leaf_fragmentation
|
|
---------+------------+------------+---------------+----------------+------------+-------------+---------------+------------------+--------------------
|
|
2 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | NaN | NaN
|
|
(1 row)
|
|
|
|
select version, tree_level,
|
|
index_size / current_setting('block_size')::int as index_size,
|
|
root_block_no, internal_pages, leaf_pages, empty_pages, deleted_pages,
|
|
avg_leaf_density, leaf_fragmentation
|
|
from pgstatindex('test_pkey'::regclass);
|
|
version | tree_level | index_size | root_block_no | internal_pages | leaf_pages | empty_pages | deleted_pages | avg_leaf_density | leaf_fragmentation
|
|
---------+------------+------------+---------------+----------------+------------+-------------+---------------+------------------+--------------------
|
|
2 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | NaN | NaN
|
|
(1 row)
|
|
|
|
select pg_relpages('test');
|
|
pg_relpages
|
|
-------------
|
|
0
|
|
(1 row)
|
|
|
|
select pg_relpages('test_pkey');
|
|
pg_relpages
|
|
-------------
|
|
1
|
|
(1 row)
|
|
|
|
select pg_relpages('test_pkey'::text);
|
|
pg_relpages
|
|
-------------
|
|
1
|
|
(1 row)
|
|
|
|
select pg_relpages('test_pkey'::name);
|
|
pg_relpages
|
|
-------------
|
|
1
|
|
(1 row)
|
|
|
|
select pg_relpages('test_pkey'::regclass);
|
|
pg_relpages
|
|
-------------
|
|
1
|
|
(1 row)
|
|
|
|
select pg_relpages(oid) from pg_class where relname = 'test_pkey';
|
|
pg_relpages
|
|
-------------
|
|
1
|
|
(1 row)
|
|
|
|
select pg_relpages(relname) from pg_class where relname = 'test_pkey';
|
|
pg_relpages
|
|
-------------
|
|
1
|
|
(1 row)
|
|
|
|
create index test_ginidx on test using gin (b);
|
|
select * from pgstatginindex('test_ginidx');
|
|
version | pending_pages | pending_tuples
|
|
---------+---------------+----------------
|
|
2 | 0 | 0
|
|
(1 row)
|
|
|
|
create index test_hashidx on test using hash (b);
|
|
WARNING: hash indexes are not WAL-logged and their use is discouraged
|
|
select * from pgstathashindex('test_hashidx');
|
|
version | bucket_pages | overflow_pages | bitmap_pages | zero_pages | live_items | dead_items | free_percent
|
|
---------+--------------+----------------+--------------+------------+------------+------------+--------------
|
|
2 | 4 | 0 | 1 | 0 | 0 | 0 | 100
|
|
(1 row)
|
|
|