Skip site navigation (1) Skip section navigation (2)

Peripheral Links

Header And Logo

PostgreSQL
| The world's most advanced open source database.

Site Navigation

Search for
  Advanced Search

pg_freespacemap et théorie sur le free space map



Bonjour à tous,

Je cherche actuellement à comprendre en détail la gestion du "free space map" sous PostgreSQL, et pour cela, j'ai installé la contrib "pg_freespacemap" sous PostgreSQL 8.2.0. Existe-t-il une doc dans laquelle les calculs faits pour déterminer les champs "avgrequest", "interestingpages", et "storedpage" utilisés pour définir le free space map sont détaillés ?

J'ai testé la contrib pg_freespacemap sur une base de test et je ne comprends pas les valeurs qu'elle me renvoie.
Je travaille sur une table "district" dont le schéma est le suivant :
base=# \d district
            Table "public.district"
  Column    |         Type          | Modifiers
-------------+-----------------------+-----------
d_w_id      | integer               | not null
d_id        | integer               | not null
d_ytd       | numeric(12,2)         |
d_tax       | numeric(4,4)          |
d_next_o_id | integer               |
d_name      | character varying(10) |
d_street_1  | character varying(20) |
d_street_2  | character varying(20) |
d_city      | character varying(20) |
d_state     | character(2)          |
d_zip       | character(9)          |
Indexes:
   "pk_district" PRIMARY KEY, btree (d_w_id, d_id), tablespace "index_tbs"
Tablespace: "misc_tbs"

Les données de cette table (100 lignes en tout) sont réparties sur 3 pages :
base=# select relname,relnamespace,relfilenode ,relpages ,reltuples from pg_class where relname='district';
relname  | relnamespace | relfilenode | relpages | reltuples
----------+--------------+-------------+----------+-----------
district |         2200 |       16397 |        3 |       100
(1 row)

Sur cette table, seuls des ordres d'INSERT ont été lancés. Aucun DELETE n'a été exécuté. Les infos renvoyées par "pg_freespacemap_relations" sont les suivantes pour cette table :
base=# SELECT c.relname, r.avgrequest, r.interestingpages, r.storedpages
base-#              FROM pg_freespacemap_relations r INNER JOIN pg_class c
base-# ON c.relfilenode = r.relfilenode INNER JOIN pg_database d base-# ON r.reldatabase = d.oid AND (d.datname = current_database())
base-#              ORDER BY r.storedpages DESC LIMIT 10;
 relname   | avgrequest | interestingpages | storedpages
------------+------------+------------------+-------------
district   |        250 |                1 |           1

Est-ce que quelqu'un pourrait "m'éclairer" sur ces valeurs svp ?
J'ai ensuite lancé un VACUUM VERBOSE sur cette table et j'ai obtenu :
base=# vacuum verbose district;
INFO:  vacuuming "public.district"
INFO:  index "pk_district" now contains 100 row versions in 2 pages
DETAIL:  0 index row versions were removed.
0 index pages have been deleted, 0 are currently reusable.
CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO: "district": found 0 removable, 100 nonremovable row versions in 3 pages
DETAIL:  0 dead row versions cannot be removed yet.
There were 0 unused item pointers.
1 pages contain useful free space.
0 pages are entirely empty.
CPU 0.00s/0.00u sec elapsed 0.00 sec.
VACUUM

De même, comment expliquer le commentaire "1 pages contain useful free space" ?

Par avance merci.
Cordialement,
Alexandra




Home | Main Index | Thread Index

Privacy Policy | PostgreSQL Archives hosted by Command Prompt, Inc. | Designed by tinysofa
Copyright © 1996 – 2008 PostgreSQL Global Development Group