Bonjour,


Je me posais des questions concernant la maintenance des tables d'une base pgsql.


Et plus en particulier sur les manières de gérer l'espace / la ré-organisation des tables / index.


Prenons une table avec 3.000.000 de lignes assez simple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
create table t_telephone_tel (
cli_id references t_client_cli (cli_id),
ttl_id references t_tel_type_ttl (ttl_id),
tel_num varchar(10),
primary key (cli_id, ttl_id));
 
 
CREATE INDEX idx_tel_1
  ON t_telephone_tel
  USING btree
  (tel_num COLLATE pg_catalog."default" varchar_pattern_ops, cli_id );

Mon test est le suivant :
Suppression de 300.000 lignes
vacuum analyze de la table.

Insertion de 300.000 lignes =>
la table n'a pas grossis => les lignes supprimées ont été réutilisées.
Mon index idx_tel_1 n'a pas grossis (j'en déduis qu'il a bien été ré-indéxé ?)
Par contre la taille de ma primary key a presque doublée 64Mo=> 101Mo !


Comment celà ce fait ?
Quelle possibilité ai-je à ce stade là ? Ré-org mes tables selon un cluster ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
cluster ma_table using ma_pk
Merci.