web-dev-qa-db-fra.com

Quel est le type de données de la colonne système «ctid» dans Postgres?

Les colonnes système de Postgres sont documentées au Chapitre 5. Définition des données> 5.4. Colonnes système .

Cette page mentionne que les valeurs de oid "sont des quantités 32 bits". Et cette page dit la même chose sur les identifiants de transaction. Je suppose donc que oid, tableoid, xmin, cmin, xmax et cmax sont tous Entiers 32 bits.

Mais cela laisse la colonne système ctid.

L'emplacement physique de la version de ligne dans sa table. Notez que bien que le ctid puisse être utilisé pour localiser la version de ligne très rapidement, le ctid d'une ligne changera s'il est mis à jour ou déplacé par VACUUM FULL. Par conséquent, ctid est inutile comme identificateur de ligne à long terme. L'OID, ou mieux encore un numéro de série défini par l'utilisateur, doit être utilisé pour identifier les lignes logiques.

➡ Quel est le type de données de la colonne ctid?

Plus précisément, je suis intéressé par la version Postgres 10.3, mais si elle a changé par rapport aux versions précédentes, ce serait bien de savoir.

6
Basil Bourque

tid

Voir la page de manuel, Chapitre 8. Types de données> 8.18. Types d'identificateurs d'objet . Il explique que le type de données est spécifique à Postgres et s'appelle tid.

Un type d'identifiant final utilisé par le système est tid, ou Tuple identifier (identifiant de ligne). Il s'agit du type de données de la colonne système ctid. Un ID de tuple est une paire (numéro de bloc, index de tuple dans le bloc) qui identifie l'emplacement physique de la ligne dans sa table.

Vous pourriez trouver cette question similaire intéressante: Comment décomposer ctid en numéros de page et de ligne?

Soit dit en passant, si vous êtes intéressé par ce sujet de ctid & tid, vous pourriez probablement être intéressé par deux nouvelles fonctionnalités de Postgres 12: (a) OID rétrogradés à normal colonnes , et (b) les fonctionnalités de stockage/accès aux tables enfichables sont nouvelles dans Postgres 12 et versions ultérieures. Voir this , this , this , this , et this .

7
Basil Bourque