Locking and Indexes

PostgreSQL 7.2 Documentation
Prev | Chapter 9. Multiversion Concurrency Control | Next

# 9.7. Locking and Indexes

Though PostgreSQL provides nonblocking read/write access to table data, nonblocking read/write access is not currently offered for every index access method implemented in PostgreSQL.

The various index types are handled as follows:

GiST and R-Tree indexes

  Share/exclusive index-level locks are used for read/write access. Locks are released after statement is done.

Hash indexes

  Share/exclusive page-level locks are used for read/write access. Locks are released after page is processed.

  Page-level locks provide better concurrency than index-level ones but are subject to deadlocks.

B-tree indexes

  Short-term share/exclusive page-level locks are used for read/write access. Locks are released immediately after each index tuple is fetched/inserted.

  B-tree indexes provide the highest concurrency without deadlock conditions.

In short, B-tree indexes are the recommended index type for concurrent applications.

Prev | Home | Next
Locking and Tables | Up | Managing a Database