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:
    
- 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 or inserted.  B-tree indexes provide
	the highest concurrency without deadlock conditions.
        
- GiST and R-tree indexes
- 	Share/exclusive index-level locks are used for read/write access.
	Locks are released after the statement (command) is done.
        
- Hash indexes
- 	Share/exclusive page-level locks are used for read/write
	access.  Locks are released after the page is processed.
	Page-level locks provide better concurrency than index-level
	ones but are liable to deadlocks.
        
   
    In short, B-tree indexes are the recommended index type for concurrent
    applications.