Vous n'êtes pas identifié(e).
Bonjour,
Je me perds dans les traces de la commande VACUUM VERBOSE et j'aurai besoin de quelques "explications de texte" ou d'un pointeur vers la doc. Je travaille avec la version 9.1.
Je viens de mettre à jour 384 lignes (sur 1000000) et e VACUUM ANALYZE me renvoie ces informations :
entrepot=# vacuum analyze verbose my_table;
INFO: vacuuming "public.my_table"
INFO: scanned index "pk_my_table" to remove 384 row versions
DÉTAIL : CPU 0.00s/0.06u sec elapsed 0.07 sec.
INFO: scanned index "my_table_rand_id_idx" to remove 384 row versions
DÉTAIL : CPU 0.00s/0.07u sec elapsed 0.07 sec.
INFO: "my_table": removed 384 row versions in 3 pages
DÉTAIL : CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO: index "pk_my_table" now contains 1000000 row versions in 5486 pages
DÉTAIL : 384 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: index "my_table_rand_id_idx" now contains 1000000 row versions in 6128 pages
DÉTAIL : 384 index row versions were removed.
1 index pages have been deleted, 0 are currently reusable.
CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO: "my_table": found 384 removable, 502 nonremovable row versions in 4427 out of 8850 pages
DÉTAIL : 0 dead row versions cannot be removed yet.
There were 999616 unused item pointers.
0 pages are entirely empty.
CPU 0.00s/0.16u sec elapsed 0.16 sec.
INFO: analyzing "public.my_table"
INFO: "my_table": scanned 8850 of 8850 pages, containing 1000000 live rows and 0 dead rows; 30000 rows in sample, 1000000 estimated total rows
D'après ces traces, je comprends que 384 rows ont été flaggés périmés ("removed"). Est-ce correct ?
Est-ce que la ligne "DETAIL : 0 dead row versions cannot be removed yet" indique bien qu'il n'y a pas de transactions en mode "pending" ou "idle" ?
Par contre, que signifie "There were 999616 unused item pointers" et "0 pages are entirely empty" ?
Que signifie "0 dead rows" dans les traces du ANALYZE ?
Merci pour votre aide.
Hors ligne
D'après ces traces, je comprends que 384 rows ont été flaggés périmés ("removed"). Est-ce correct ?
Si vous parlez de la ligne "INFO: scanned index "pk_my_table" to remove 384 row versions", VACUUM vous indique qu'il a lu l'index pk_my_table pour flagguer les éléments de l'index correspondant aux 384 lignes modifiées dans la table.
Est-ce que la ligne "DETAIL : 0 dead row versions cannot be removed yet" indique bien qu'il n'y a pas de transactions en mode "pending" ou "idle" ?
Non, cela indique seulement que les lignes mortes (ie, lignes non visibles par les transactions) n'ont pas été supprimées physiquement du fichier de la table. Autrement dit, vous n'avez rien gagné en espace disque.
Par contre, que signifie "There were 999616 unused item pointers" et "0 pages are entirely empty" ?
Pour le second, aucune page n'est vide d'enregistrements visibles, donc pas de possibilité de dire au système de tronquer le fichier de la table.
Que signifie "0 dead rows" dans les traces du ANALYZE ?
Cela signifie que ANALYZE a rencontré 1 million de lignes visibles par des transactions, et 0 lignes invisibles (ce qui ne veut pas dire qu'il n'y a pas de fragmentation dans la table).
Guillaume.
Hors ligne
Merci pour ces précisions.
Pour revenir sur l'information "There were 999616 unused item pointers", avez-vous une explication à me donner svp ?
Est-ce que par hasard vous auriez une documentation à me recommenter pour comprendre les outputs du VACUUM ?
Hors ligne
Pour revenir sur l'information "There were 999616 unused item pointers", avez-vous une explication à me donner svp ?
Un index contient des pointeurs. Il a trouvé 999616 pointeurs inutilisés, ce qui paraît étonnant.
Est-ce que par hasard vous auriez une documentation à me recommenter pour comprendre les outputs du VACUUM ?
Sur les messages eux-mêmes non. Leur signification se comprend par la compréhension du moteur et notamment du système MVCC. Il existe quelques conférences sur le sujet, que vous pourrez trouver assez facilement, sur youtube (pour la vidéo) comme le wiki de postgresql.org (pour les slides).
Guillaume.
Hors ligne
Merci pour votre aide, je vais retourner sur le wiki.
Hors ligne