12.5. Bloqueio e índices

Embora o PostgreSQL disponibilize acesso de leitura e escrita não bloqueante aos dados das tabelas, o acesso de leitura e escrita não bloqueante não é fornecido, atualmente, por todos os métodos de acesso de índice implementados pelo PostgreSQL. Os vários tipos de índice são tratados como mostrado a seguir:

Índices B-tree
São utilizados bloqueios no nível de página, compartilhados ou exclusivos, de curta duração, para acesso de leitura/escrita. Os bloqueios são liberados imediatamente após cada linha do índice ser lida ou inserida. Os índices B-tree fornecem a mais alta simultaneidade sem condições de impasse.
Índices GiST e R-tree
São utilizados bloqueios no nível de índice, compartilhados ou exclusivos, para acesso de leitura/escrita. Os bloqueios são liberados após o comando terminar.
Índices Hash
São utilizados bloqueios no nível de página compartilhados e exclusivos para acessos de leitura/escrita. Os bloqueios são liberados após a página ser processada. Os bloqueios no nível de página fornecem uma simultaneidade melhor que os bloqueios no nível de índice, mas podem ocorrer impasses.

Em resumo, o índice B-tree oferece o melhor desempenho para aplicações simultâneas; uma vez que também possui mais funcionalidades do que o índice hash, é o tipo de índice recomendado para aplicações simultâneas que necessitam indexar dados escalares. Para tratar dados não escalares, os índices B-tree obviamente não podem ser utilizados; nesta situação, os desenvolvedores de aplicação devem estar cientes do desempenho relativamente pobre dos índices GiST e R-tree.

SourceForge.net Logo