PostgreSQL資料庫核心分析 筆記(這本書沒有怎麼很好的看,主要就是一些資料結構、概念和流程的文字介紹)

來源:互聯網
上載者:User

標籤:資料庫   postgresql   記憶體管理   事務   索引   

PostgreSQL資料庫核心分析跳轉至: 導航、 搜尋
目錄
  • 1系統概述
  • 2體繫結構
  • 3儲存管理
  • 4索引
  • 5查詢編譯
  • 6查詢執行
  • 7交易處理與並發控制
  • 8資料庫安全
  • 9附錄A 用Eclipse開發和調試
系統概述
  1. 初始化資料庫:./initdb --no-locale -D ../data
  2. ./pg_ctl start -D ../data
  3. 資料庫命令:initdb createuser dropuser createdb dropdb pg_dump pg_restore pg_ctl vacuumdb psql
  4. psql元命令:\? \o \l \q \c \dt \d \di \i (sql);
體繫結構
  1. 主要系統資料表及其依賴關係
    1. pg_namespace(nspname, nspowner, nspacl)
    2. pg_tablespace(spcname, spcowner, spclocation, spcacl)
    3. pg_database
    4. pg_class
    5. pg_type
    6. pg_attribute
    7. pg_index
  2. 系統檢視表:pg_cursors pg_group pg_indexes pg_locks pg_roles pg_rules ...
  3. 資料集簇
    1. 表/索引:超過1G分裂,filenode.1 ...
    2. 如果有些屬性藥儲存大資料,那麼就會有關聯的TOAST表
    3. PG_DATA中的子目錄和檔案:PG_VERSION base global pg_clog pg_tblspc ...
    4. postgres.bki
    5. initdb的執行過程
    6. 系統資料庫:template1 template0 postgres
  4. 進程結構:Postmaster Postgres SysLogger PgStat AutoVacuum BgWriter WalWriter PgArch
    1. Postmaster
      1. MemoryContext
      2. GUC配置參數
      3. 訊號處理:SIGHUP_handler pmdie reaper(清理退出的子進程)
      4. 輔助進程啟動
    2. 輔助進程
      1. WalWriter:段編號從0開始,不能迴圈使用
      2. PgArch(WAL日誌歸檔):直接調用shell命令?k
    3. Postgres
    4. exec_simple_query
儲存管理
  1. 外存管理:表檔案、空閑空間、虛擬檔案描述符(VFD)、大資料
    1. 8.2+ 可見度映射VM 空閑映射FSM
  2. 堆檔案:表檔案+元組之間不關聯,{普通、臨時、序列、TOAST}
    1. 物理結構:PageHeaderData Linp<N> ... Freespace .. Tuple<N> Special_space
    2. “HOT技術”
      1. 一條元組的每個版本都有對應版本的索引 ==〉... 標記刪除
  3. 磁碟管理(SMGR)
    1. MdfdVec:vfd、segno、chain
  4. VFD機制
    1. LRU池(VfdCache)
  5. FSM
    1. p66 fp_next_slot
    2. fsm_search 最大堆二叉樹?
  6. VM:作為一個提示加快VACUUM速度
  7. 大資料:
    1. TOAST:儲存變長資料?如VARCHAR等,需超過2KB;線外/壓縮2種儲存機制
    2. LOB
  8. 記憶體管理
    1. MemoryContext:AllocSet
    2. 快取:SysCache/RelCache
    3. 緩衝池
    4. IPC
  9. 表操作和元組操作
    1. 同步掃描(多個掃描時利用共用緩衝)
  10. VACUUM機制
    1. Lazy:標記無效為可用
    2. Full
  11. ResourceOwner資源跟蹤

感覺這裡的描述非常混亂

索引
  1. 索引方式
    1. 部分索引?CREATE INDEX idx ON student(name) WHERE (id>1 AND id<255);
    2. 運算式索引?CREATE INDEX idx ON student(lower(name))
  2. pg_am:每個元組包括了該索引類型提供的訪問函數(pg_proc.oid)?
  3. B-Tree索引
    1. 每個非最右節點:High-Key
    2. BTWriteState:記錄整個索引建立過程中的資訊
    3. 對每一層產生一個BTPageState,其btps_next指向父節點(?)
    4. 填滿因數:... WITH (fillfactor=70);
    5. 掃描索引
  4. Hash索引
    1. 4種頁:meta(0#) bucket overflow(桶裡的元素) bitmap(管理前兩者的使用方式)
  5. GiST
    1. Consistent(E,q) Union(P) Same(E1,E2) Penalty(E1,E2) PickSplit(P) Compress(E) Decompress(E)
    2. GISTInsertStack?
  6. GIN
    1. compare、extractValue、extractQuery、consistent(類似於hashtable的equals?)、comparePartial
  7. TSearch2
查詢編譯
  1. 查詢分析
  2. 查詢重寫
  3. 查詢規劃:查詢樹鏈表 => 執行計畫鏈表
    1. 在路徑產生過程中,每產生一個中間關係,要估算出大小、路徑及代價
      1. DP、GA
      2. 基本關係訪問路徑
      3. 索引掃描路徑
      4. TID(元組的物理地址?)
    2. 產生可最佳化的MIN/MAX聚集計劃
    3. 產生普通計劃
      1. 掃描:順序/索引
      2. 串連:嵌套迴圈、Hash、歸併
      3. 其他:Append、Result、物化
    4. 產生完整計劃(+聚集/排序)
    5. 整理計劃樹
  4. 代價估計
  5. 遺傳演算法
查詢執行
  1. 非可最佳化語句
  2. 可最佳化語句
  3. 計劃節點
    1. 控制:Result Append BitmapAnd/Or RecursiveUnion
    2. 掃描:Seq Index BitmapHeap BitmapIndex Tid Subquery Function Values Cte WorkTable
    3. 物化:Material Sort Group Agg Unqiue Hash SetOp Limit WindowAgg
    4. 串連:類型(Inner Left/Right/Full_Outer Semi Anti)、操作
  4. 其他子功能
    1. 元組操作
    2. 運算式計算
    3. 投影
交易處理與並發控制
  1. TBlockState
  2. 2PC
  3. 3種鎖
    1. SpinLock
    2. LWLock
    3. RegularLock
  4. 鎖管理機制
  5. 死結
    1. 等待圖(WFG)
  6. MVCC(這裡講解似乎不夠清晰)
  7. 日誌管理:XLOG/CLOG
    1. SLRU緩衝池
    2. SUBTRANS日誌管理器?
    3. MULTIXACT日誌管理器:記錄組合事務ID?
資料庫安全附錄A 用Eclipse開發和調試 

PostgreSQL資料庫核心分析 筆記(這本書沒有怎麼很好的看,主要就是一些資料結構、概念和流程的文字介紹)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.