mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-11-27 07:21:09 +08:00
dab42382f4
This is an extension of pgstattuple to query information from indexes. It supports btree, hash and gist. Gin is not supported. It scans only index pages and does not read corresponding heap tuples. Therefore, 'dead_tuple' means the number of tuples with LP_DELETE flag. Also, I added an experimental feature for btree indexes. It checks fragmentation factor of indexes. If an leaf has the right link on the next adjacent page in the file, it is assumed to be continuous (not fragmented). It will help us to decide when to REINDEX. ITAGAKI Takahiro
71 lines
1.9 KiB
Plaintext
71 lines
1.9 KiB
Plaintext
pgstattuple README 2002/08/29 Tatsuo Ishii
|
|
|
|
1. What is pgstattuple?
|
|
|
|
pgstattuple returns the relation length, percentage of the "dead"
|
|
tuples of a relation and other info. This may help users to determine
|
|
whether vacuum is necessary or not. Here is an example session:
|
|
|
|
test=# \x
|
|
Expanded display is on.
|
|
test=# select * from pgstattuple('pg_catalog.pg_proc');
|
|
-[ RECORD 1 ]------+-------
|
|
table_len | 458752
|
|
tuple_count | 1470
|
|
tuple_len | 438896
|
|
tuple_percent | 95.67
|
|
dead_tuple_count | 11
|
|
dead_tuple_len | 3157
|
|
dead_tuple_percent | 0.69
|
|
free_space | 8932
|
|
free_percent | 1.95
|
|
|
|
|
|
Here are explanations for each column:
|
|
|
|
table_len -- physical relation length in bytes
|
|
tuple_count -- number of live tuples
|
|
tuple_len -- total tuples length in bytes
|
|
tuple_percent -- live tuples in %
|
|
dead_tuple_len -- total dead tuples length in bytes
|
|
dead_tuple_percent -- dead tuples in %
|
|
free_space -- free space in bytes
|
|
free_percent -- free space in %
|
|
|
|
2. Installing pgstattuple
|
|
|
|
$ make
|
|
$ make install
|
|
$ psql -e -f /usr/local/pgsql/share/contrib/pgstattuple.sql test
|
|
|
|
3. Using pgstattuple
|
|
|
|
pgstattuple may be called as a relation function and is
|
|
defined as follows:
|
|
|
|
CREATE OR REPLACE FUNCTION pgstattuple(text) RETURNS pgstattuple_type
|
|
AS 'MODULE_PATHNAME', 'pgstattuple'
|
|
LANGUAGE C STRICT;
|
|
|
|
CREATE OR REPLACE FUNCTION pgstattuple(oid) RETURNS pgstattuple_type
|
|
AS 'MODULE_PATHNAME', 'pgstattuplebyid'
|
|
LANGUAGE C STRICT;
|
|
|
|
The argument is the relation name (optionally it may be qualified)
|
|
or the OID of the relation. Note that pgstattuple only returns
|
|
one row.
|
|
|
|
4. Notes
|
|
|
|
pgstattuple acquires only a read lock on the relation. So concurrent
|
|
update may affect the result.
|
|
|
|
pgstattuple judges a tuple is "dead" if HeapTupleSatisfiesNow()
|
|
returns false.
|
|
|
|
5. History
|
|
|
|
2006/06/28
|
|
|
|
Extended to work against indexes.
|