W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
BRIN表示塊范圍索引。 BRIN是為處理這樣的表而設(shè)計(jì)的:表的規(guī)模非常大,并且其中某些列與它們?cè)诒碇械奈锢砦恢么嬖谀撤N自然關(guān)聯(lián)。一個(gè)塊范圍是一組在表中物理上相鄰的頁面,對(duì)于每一個(gè)塊范圍在 索引中存儲(chǔ)了一些摘要信息。例如,一個(gè)存儲(chǔ)商店銷售訂單的表可能有一個(gè)日期 列記錄每個(gè)訂單產(chǎn)生的時(shí)間,并且很多時(shí)候較早的訂單項(xiàng)也將出現(xiàn)在表中較早的 地方。一個(gè)存儲(chǔ) ZIP 代碼列的表中一個(gè)城市的所有代碼可能自然地聚在一起。
如果索引中存儲(chǔ)的摘要信息與查詢條件一致,BRIN 索引可以通過常規(guī)的位圖索引掃描滿足查詢,并且將會(huì)返回每個(gè)范圍中所有頁面 中的所有元組。查詢執(zhí)行器負(fù)責(zé)再次檢查這些元組并且拋棄掉那些不匹配查詢條 件的元組 — 換句話說,這些索引是有損的。由于一個(gè)BRIN 索引很小,掃描這種索引雖然比使用順序掃描多出了一點(diǎn)點(diǎn)開銷,但是可能會(huì)避 免掃描表中很多已知不包含匹配元組的部分。
一個(gè)BRIN索引將存儲(chǔ)的特定數(shù)據(jù)以及該索引將能 滿足的特定查詢,都依賴于為該索引的每一列所選擇的操作符類。具有一種 線性排序順序的數(shù)據(jù)類型的操作符類可以存儲(chǔ)在每個(gè)塊范圍內(nèi)的最小和最大 值,例如幾何類型可能會(huì)存儲(chǔ)在塊范圍內(nèi)的所有對(duì)象的外包盒。
塊范圍的尺寸在索引創(chuàng)建時(shí)由pages_per_range
存儲(chǔ)參數(shù)決定。 索引項(xiàng)的數(shù)量將等于該關(guān)系的尺寸(以頁面計(jì))除以為 pages_per_range
選擇的值。因此,該值越小,索引會(huì)變得越大 (因?yàn)樾枰鎯?chǔ)更多索引項(xiàng)),但是與此同時(shí)存儲(chǔ)的摘要數(shù)據(jù)可以更加精確并 且在索引掃描期間可以跳過更多數(shù)據(jù)塊。
在創(chuàng)建時(shí),所有已有的堆頁面將被掃描并且會(huì)為每一個(gè)范圍創(chuàng)建一個(gè)摘要 索引元組,對(duì)于末尾的可能不完整的范圍也是這樣做。隨著新頁面被數(shù)據(jù)填 充,已經(jīng)被創(chuàng)建摘要的頁面范圍的摘要信息會(huì)被來自新元組的數(shù)據(jù)所更新。 當(dāng)一個(gè)被創(chuàng)建的新頁面沒有落在最后一個(gè)被摘要的范圍內(nèi)時(shí),該范圍不會(huì)自 動(dòng)獲得一個(gè)摘要元組,那些元組將保持未被摘要的狀態(tài),直到后面調(diào)用一次 摘要操作來創(chuàng)建初始的摘要。可以使用brin_summarize_range(regclass, bigint)
或
brin_summarize_new_values(regclass)
函數(shù)手動(dòng)調(diào)用這種處理,而當(dāng)VACUUM
處理表時(shí)或者插入發(fā)生時(shí)由autovacuum執(zhí)行的自動(dòng)摘要過程都會(huì)自動(dòng)調(diào)用這種處理(最后這一個(gè)觸發(fā)器默認(rèn)是被禁用的,可以用autosummarize
參數(shù)啟用。相對(duì)地,可以用brin_desummarize_range(regclass, bigint)
函數(shù)解除一個(gè)范圍的摘要,在現(xiàn)有值發(fā)生變化導(dǎo)致索引元組不再是一個(gè)很好的表達(dá)式,這樣做是很有用的。
當(dāng)自動(dòng)摘要被啟用時(shí),每次一個(gè)頁面范圍會(huì)被裝進(jìn)一個(gè)請(qǐng)求中發(fā)送給autovacuum,以便autovacuum為那個(gè)范圍執(zhí)行定向的摘要,這個(gè)請(qǐng)求會(huì)在運(yùn)行在同一個(gè)數(shù)據(jù)庫的下一個(gè)工作者的末尾被滿足。如果請(qǐng)求隊(duì)列滿了,該請(qǐng)求不會(huì)被記錄,并且在服務(wù)器日志中會(huì)有一條消息:
LOG: request for BRIN range summarization for index "brin_wi_idx" page 128 was not recorded
如果這種情況發(fā)生,在該表的下一次常規(guī)vacuum時(shí)將會(huì)正常對(duì)這個(gè)范圍做摘要。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: