9.5. Bloqueio e índices

Embora o PostgreSQL forneça acesso de leitura e gravação não bloqueante aos dados das tabelas, o acesso de leitura e gravação não bloqueante não é oferecido, atualmente, para todos os métodos de acessos dos índices implementados pelo PostgreSQL.

Os tipos de índices existentes são implementados do seguinte modo:

Índices B-tree

São utilizados bloqueios compartilhados/exclusivos no nível de página, de curta duração, para acesso de leitura/gravação. Os bloqueios são liberados imediatamente após cada tupla do índice ser lida ou inserida. Os índices B-tree fornecem a concorrência mais elevada sem condições de impasse.

Índices GiST e R-tree

São utilizados bloqueios compartilhados/exclusivos no nível de índice para acessos de leitura/gravação. Os bloqueios são liberados após a declaração (comando) ser executada.

Índices Hash

São utilizados bloqueios compartilhados/exclusivos no nível de página para acessos de leitura/gravação. Os bloqueios são liberados após a página ser processada. Os bloqueios no nível de página permitem uma concorrência melhor que o bloqueio no nível de índice, mas podem ocasionar impasses.

Em resumo, o índice B-tree é o tipo de índice recomendado para as aplicações correntes.