?
This document uses PHP Chinese website manual Release
盡管PostgreSQL提供對(duì)表數(shù)據(jù)訪問(wèn)的非阻塞讀/寫(xiě), 但并非所有PostgreSQL里實(shí)現(xiàn)的索引訪問(wèn)模式都能夠進(jìn)行非阻塞讀/寫(xiě)。 不同的索引類(lèi)型按照下面方法操作:
短期的頁(yè)面級(jí)共享/排斥鎖用于讀/寫(xiě)訪問(wèn)。鎖在索引行被插入/抓取后立即釋放。 這種索引類(lèi)型提供了無(wú)死鎖條件的最高級(jí)的并發(fā)性。
Hash 桶級(jí)別的共享/排斥鎖用于讀/寫(xiě)訪問(wèn)。鎖在整個(gè) Hash 桶處理完成后釋放。 Hash 桶級(jí)鎖比索引級(jí)的鎖提供了更好的并發(fā)性但是可能產(chǎn)生死鎖,因?yàn)殒i持有的時(shí)間比一次索引操作時(shí)間長(zhǎng)
短期的頁(yè)面級(jí)共享/排斥鎖用于讀/寫(xiě)訪問(wèn)。 鎖在索引行插入/抓取后立即釋放。 但要注意的是一個(gè) GIN 索引值的插入通常導(dǎo)致幾個(gè)每行幾個(gè)索引鍵的插入,因此 GIN 可能為了插入一個(gè)值而做大量的工作。
目前,B-tree 索引為并發(fā)應(yīng)用提供了最好的性能。 因?yàn)樗€有比 Hash 索引更多的特性,在那些需要對(duì)標(biāo)量數(shù)據(jù)進(jìn)行索引的并發(fā)應(yīng)用中,我們建議使用 B-tree 索引類(lèi)型。 在處理非標(biāo)量類(lèi)型數(shù)據(jù)的時(shí)候,B-tree 就沒(méi)什么用了,應(yīng)該使用 GiST 或 GIN 索引替代。