2025PostgreSQL 哈希索引原理淺析_第1頁
2025PostgreSQL 哈希索引原理淺析_第2頁
2025PostgreSQL 哈希索引原理淺析_第3頁
2025PostgreSQL 哈希索引原理淺析_第4頁
2025PostgreSQL 哈希索引原理淺析_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

PostgreSQL哈希索引原理淺析PostgreSQL哈希索引的實現(xiàn)原理展開研究,PostgreSQL高度重視可定制ApacheOpenDALPostgreSQLService部分OpenDALPostgreSQL服務(wù)部PG索引可定制化MySQL“Table”“Index”兩種AccessMethon直“存儲引擎”MySQLPostgreSQLAPI上面API“數(shù)據(jù)表”Tuple二、可獨立提供數(shù)據(jù)(Index-Only同時指出,MySQL,PostgreSQL在這方面的可“并沒有那么高”Index-Access-Method“主HashIndex的實現(xiàn)。知識準備:pg_amIndexAmRoutineAccess-Method的注冊信息(pg_am.dat直接得amhandler所指向的內(nèi)IndexAmRoutine結(jié)構(gòu)描述著PostgreSQL將元祖的鍵值進BKIBKIselectfrom;的上層BKI文件、pg_xxx.hPostgreSQL“關(guān)系型數(shù)據(jù)的思想同catalog目錄的pg_xxx.h是諸多系“原始形態(tài)”(Perl腳本將會負pg_xxx.dat將會指知識準備:pg_am知識準備:pg_amIndexAmRoutinehashhandlerIndexAmRoutine結(jié)PostgreSQLORDEYBY的原因“段”,再將桶分配到段下PostgreSQL的系統(tǒng)緩存按照這個思想進PostgreSQLTEA算法HashKeyTID(Key,Value)(這就是為什么amkeytypeint)'item'用于指代存儲于頁面中的一條單獨數(shù)據(jù)(或者是數(shù)據(jù)表中的一行,或者是一條索引記錄每一條元組/(offset,length)ItemIdDataAtupleIDisapair(blocknumber,tupleindexwithinblock)thatidentifiesthephysicallocationoftherowwithinitstable.(TID與物理存儲的對應(yīng)關(guān)系'item'用于指代存儲于頁面中的一條單獨數(shù)據(jù)(或者是數(shù)據(jù)表中的一行,或者是一條索引記錄每一條元組/(offset,length)ItemIdDataAccessAccessMethodPageHeaderData一個HashPageGetOpaquepg_specialBuffer層打Buffer層PostgreSQL存儲于內(nèi)存中的數(shù)據(jù),采用頁面的方式來PostgreSQL的索引均為二級索引,因此索引本身所涉及的自定義WAL日志同樣以頁面為邏輯單位展開工作,日志是實現(xiàn)故障后恢Bucket對Block每一個Bucket里Wal日志保證了哈 IndexRelation用于存儲索引私有的數(shù)據(jù),PostgreSQL索引數(shù)據(jù)與物理數(shù)據(jù)accessMethodId區(qū)分了不同種類的索引,PostgreSQL將會通過函數(shù)指針的方法,,hashbuildemptyhashbuild的主要區(qū)別在于,一個是hashbuild涉及到數(shù)據(jù)統(tǒng)計、依托排序接口做元組排序等PostgreSQL內(nèi)部存在著通用的插入索引記錄hashinsert函數(shù)可以理解為hashbuild“逐個插入元HashKeyBucket編號的橋梁(&HashKey與HighMask不同的部分)HighMaskLowMask則存HighMask值PostgreSQLSplitPoint本(動態(tài)哈希表)Hash表擴容時涉及的重分布splitpoint《ExtendibleHashing-AFastAccessMethodforDynamicFiles》這篇論文PostgreSQL涉及到物理存儲地址計HashKeyMeta“塊的地PostgreSQLflagSPLITPostgreSQLTID,避免被二次移動,同時PostgreSQLOverFlow頁面用以完成擴容操作OvewFlow頁的添加即是擴容(為什么這么復(fù)雜?因為涉及到磁盤儲存,塊地址計算for循環(huán)的目的就在于,找到一個可TID(HashKey可以通過HashKey)OverFlow頁面意味著整張哈希表也有可Index-ScanIndex-ScanBitmap-Index-ScanBitmap-Index-ScanPostgreSQL系統(tǒng)緩存實際上就是一張組織起Smgr接口,自磁盤上提取頁面PostgreSQL是多用戶同時使用,所以需FreeList存在的FileNode所對應(yīng)的數(shù)字(可以在pg_class.relfilenode中看到)形式存在(BBBPostgreSQLid,F(xiàn)FFFileNode所對應(yīng)的數(shù)值)加后綴名(mainfork)_fsm后綴代表該文件存儲著關(guān)系表中_vm后綴存儲著關(guān)系數(shù)據(jù)中有關(guān)死元組的信息(MVCC機制有關(guān)系)拓展:ManGrove拓展:ManGrovePGPGXSPostgreSQL拓展安裝流程規(guī)范化“./積極鼓勵鏡像站,因此建設(shè)新PostgreSQL國內(nèi)拓展生態(tài)建設(shè)不溫不火,既是PostgreSQL拓展管理器并非難事,同時技術(shù)上已證明整合生態(tài)具有可行性PostgreSQL拓展的英文技術(shù)材料,內(nèi)核原理書籍“代碼Kiwi存儲引擎,TiDB社區(qū))走動過少(但是這也拓展:ManGrove拓展:ManGrovePGPostgreSQL內(nèi)核的研發(fā)工作,可以促進其它方面存儲引擎、中間件、數(shù)據(jù)庫的發(fā)展(比如,Kiwi存儲引PostgreSQL的理解PostgreSQL查詢引擎的不少知識,進而導(dǎo)致PostgreSQL哈希索引。感興趣的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論