雖然 PostgreSQL 提供了對錶資料的非阻塞讀/寫訪問,但並非 PostgreSQL 中實現的每種索引訪問方法都提供非阻塞讀/寫訪問。各種索引型別的處理方式如下:
讀/寫訪問使用短時共享/排他頁級鎖。在獲取或插入每一行索引後,鎖會立即釋放。這些索引型別在沒有死鎖條件的情況下提供最高的併發性。
讀/寫訪問使用共享/排他雜湊桶級鎖。在處理完整個桶後,鎖會釋放。桶級鎖比索引級鎖提供更好的併發性,但由於鎖的持有時間超過一個索引操作,因此可能發生死鎖。
讀/寫訪問使用短時共享/排他頁級鎖。在獲取或插入每一行索引後,鎖會立即釋放。但請注意,插入 GIN 索引值通常會為每行生成多個索引鍵插入,因此 GIN 對單個值的插入可能會執行大量工作。
目前,B-tree 索引在併發應用程式中提供最佳效能;由於它們比雜湊索引具有更多功能,因此它們是需要索引標量資料的併發應用程式的推薦索引型別。在處理非標量資料時,B-tree 無效,應改用 GiST、SP-GiST 或 GIN 索引。
如果您在文件中發現任何不正確、與您使用特定功能時的體驗不符或需要進一步澄清的內容,請使用此表單報告文件問題。