Documentation PostgreSQL 8.1.23 > Langage SQL > Contrôle d'accès simultané > Verrouillage et index | |
Vérification de cohérence des données au niveau de l'application | Conseils sur les performances |
Bien que PostgreSQL™ fournisse des accès non bloquant en lecture/écriture aux données de la table, un accès non bloquant en lecture/écriture n'est pas fourni pour chaque méthode d'accès aux index implémentée dans PostgreSQL™. Les différents types d'index sont gérés ainsi :
Les verrous partagés/exclusifs de court terme au niveau page sont utilisés pour les accès en lecture/écriture. Les verrous sont immédiatement relâchés après le parcours ou l'insertion de chaque ligne d'index. Ces types d'index fournissent le plus haut niveau de concurrence sans conditions de blocage.
Les verrous partagés/exclusifs au niveau hash-bucket sont utilisés pour des accès en lecture/écriture. Les verrous sont relâchés après la fin des traitements sur le bucket. Les verrous au niveau bucket fournissent un meilleur accès concurrent que les verrous au niveau index mais sont sensibles aux blocages car les verrous sont détenus plus longtemps que pour une opération sur un index.
Les verrous partagés/exclusifs de niveau index sont utilisés pour les accès en lecture/écriture. Les verrous sont relâchés à la fin de la commande.
Actuellement, les index B-tree offrent la meilleure performance pour les applications concurrentes ; comme ils ont aussi plus de fonctionnalités que les index hachés, ils constituent le type d'index recommandé pour les applications concurrentes nécessitant des index sur des données scalaires. Pour les données non scalaires, les index B-trees ne sont pas utiles et les index GiST devraient être utilisés à leur place. Les index R-tree sont obsolètes et pourront complètement disparaître dans une prochaine version.