出版時間:2012-1 出版社:機(jī)械工業(yè)出版社華章公司 作者:彭智勇,彭煜瑋
Tag標(biāo)簽:無
內(nèi)容概要
postgresql是目前廣泛應(yīng)用的開源數(shù)據(jù)庫管理系統(tǒng)。《PostgreSQL
數(shù)據(jù)庫內(nèi)核分析》從postgresql數(shù)據(jù)庫的源代碼入手,深入分析了該數(shù)據(jù)庫管理系統(tǒng)的底層實(shí)現(xiàn)細(xì)節(jié),揭示了數(shù)據(jù)庫運(yùn)行的基本原理?!禤ostgreSQL
數(shù)據(jù)庫內(nèi)核分析》的主要內(nèi)容包括:postgresql數(shù)據(jù)庫的體系結(jié)構(gòu)、
存儲管理、索引機(jī)制、查詢編譯、查詢執(zhí)行、并發(fā)控制機(jī)制以及安全等。每個主題都引用了大量的數(shù)據(jù)結(jié)構(gòu)、圖表等進(jìn)行說明,使讀者對實(shí)現(xiàn)過程和機(jī)理一目了然。
《postgresql數(shù)據(jù)庫內(nèi)核分析》適合從事數(shù)據(jù)庫領(lǐng)域相關(guān)研究的技術(shù)人員、高等院校相關(guān)專業(yè)高年級本科生或研究生閱讀,有助于讀者進(jìn)行數(shù)據(jù)庫的高級開發(fā)、基于postgresql定制滿足需求的數(shù)據(jù)庫系統(tǒng),或者在數(shù)據(jù)庫內(nèi)核中實(shí)現(xiàn)并驗(yàn)證數(shù)據(jù)庫新技術(shù)。
作者簡介
彭智勇,武漢大學(xué)計(jì)算機(jī)學(xué)院教授,博士生導(dǎo)師,日本京都大學(xué)博士,中國計(jì)算機(jī)學(xué)會數(shù)據(jù)庫專業(yè)委員會委員,長期從事數(shù)據(jù)庫理論與技術(shù)的研究和教學(xué)工作。在武漢大學(xué)開設(shè)了“數(shù)據(jù)庫基礎(chǔ)”、“數(shù)據(jù)庫系統(tǒng)實(shí)現(xiàn)”、“數(shù)據(jù)庫內(nèi)核分析”等數(shù)據(jù)庫系列課程?!? 彭煜瑋,武漢大學(xué)計(jì)算機(jī)學(xué)院講師、博士,長期從事數(shù)據(jù)庫理論與技術(shù)研究以及教學(xué)工作,主要負(fù)責(zé)“數(shù)據(jù)庫內(nèi)核分析”等課程的實(shí)踐教學(xué)工作。
書籍目錄
前言
第1章 postgresql系統(tǒng)概述
1.1 postgresql簡介及發(fā)展歷程
1.2 postgresql的特性
1.3 postgresql的應(yīng)用
1.4 postgresql代碼結(jié)構(gòu)
1.5 安裝postgresql
1.6 postgresql數(shù)據(jù)庫命令
第2章 postgresql的體系結(jié)構(gòu)
2.1 系統(tǒng)表
2.2 數(shù)據(jù)集簇
2.3 postgresql進(jìn)程結(jié)構(gòu)
2.4 守護(hù)進(jìn)程postmaster
2.5 輔助進(jìn)程
2.6 服務(wù)進(jìn)程postgres
2.7 小結(jié)
第3章 存儲管理
3.1 存儲管理器的體系結(jié)構(gòu)
3.2 外存管理
3.3 內(nèi)存管理
3.4 表操作與元組操作
3.5 vacuum機(jī)制
3.6 resourceowner資源跟蹤
3.7 小結(jié)
第4章 索引
4.1 概述
4.2 b-tree索引
4.3 hash索引
4.4 gist索引
4.5 gin索引
4.6 tsearch2全文搜索
4.7 小結(jié)
第5章 查詢編譯
5.1 概述
5.2 查詢分析
5.3 查詢重寫
5.4 查詢規(guī)劃
5.5 代價估計(jì)
5.6 postgresql中的遺傳算法
5.7 小結(jié)
第6章 查詢執(zhí)行
6.1 查詢執(zhí)行策略
6.2 數(shù)據(jù)定義語句執(zhí)行
6.3 可優(yōu)化語句執(zhí)行
6.4 計(jì)劃節(jié)點(diǎn)
6.5 其他子功能介紹
6.6 小結(jié)
第7章 事務(wù)處理與并發(fā)控制
第8章 數(shù)據(jù)庫安全
附錄a 用eclipse開發(fā)和調(diào)試postgresql
章節(jié)摘錄
6.6小結(jié) 本章介紹了PostgreSQL中對于各種SQL語句的一般執(zhí)行流程。對于用戶輸入的SQL語句,優(yōu)化器將為可優(yōu)化語句生成計(jì)劃樹,最終Portal會通過判斷選擇Executor來處理,而數(shù)據(jù)描述語句則在執(zhí)行過程中由Portal使其統(tǒng)一進(jìn)入Process Utility過程進(jìn)行執(zhí)行?!? 作為查詢執(zhí)行部分的入口,Portal提供了對外的調(diào)用接口:PortaIStart、PortalRun、Port,alEnd,對內(nèi)提供了執(zhí)行流程和部件的選擇。外層通過調(diào)用Portal接口,將計(jì)劃器輸出的執(zhí)行計(jì)劃傳遞給Portal,Portal通過對于鏈表中操作的類型和鏈表長度等信息來決定選擇怎樣的執(zhí)行過程,對于簡單的查詢語句直接調(diào)用Executor,對于需要緩存輸出直到執(zhí)行完成的語句則需要為其增加緩存結(jié)構(gòu)和輸出過程,對于更為復(fù)雜的過程提供了更為通用的復(fù)雜處理流程。不論哪種執(zhí)行過程,優(yōu)化器生成的查詢計(jì)劃樹由Executor來處理,而其他數(shù)據(jù)描述語句的功能由ProcessUtility來完成?!? 對于種類繁多的數(shù)據(jù)描述語句,每種都有一個Stmt類型的數(shù)據(jù)結(jié)構(gòu)保存其語法分析的信息,通過對于Stmt類型的判斷,ProcessUtility會為其調(diào)用相應(yīng)的語法解析和執(zhí)行處理過程。 可優(yōu)化語句則會提供Plan類的子類對象構(gòu)成的計(jì)劃樹,每個計(jì)劃節(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu)共同繼承于Plan節(jié)點(diǎn),計(jì)劃樹的每種節(jié)點(diǎn)對應(yīng)了一種物理操作,被分為四大類,除了對應(yīng)于關(guān)系代數(shù)的各種操作外,還增加了掃描、物化、唯一等操作。每種節(jié)點(diǎn)根據(jù)所對應(yīng)的操作的不同,執(zhí)行器都為其實(shí)現(xiàn)了初始化、執(zhí)行和清理流程。 Plan只是一個查詢計(jì)劃,初始化過程中為這個計(jì)劃里的每個節(jié)點(diǎn)生成狀態(tài)節(jié)點(diǎn)并構(gòu)造狀態(tài)樹,保存執(zhí)行中的相關(guān)信息。最終通過Executor執(zhí)行每種節(jié)點(diǎn)的執(zhí)行函數(shù)來實(shí)現(xiàn)各種節(jié)點(diǎn)的物理操作,在執(zhí)行中利用狀態(tài)樹中信息處理相關(guān)數(shù)據(jù)。各節(jié)點(diǎn)的執(zhí)行過程普遍包含了投影和選擇操作,以及對于下層節(jié)點(diǎn)的處理過程調(diào)用。 Executor通過迭代的調(diào)用每個節(jié)點(diǎn)處理過程,從下層計(jì)劃節(jié)點(diǎn)對應(yīng)的執(zhí)行流程中獲取數(shù)據(jù),并經(jīng)過各種節(jié)點(diǎn)的處理流程,得到最終的輸出結(jié)果。對于修改元組的相關(guān)操作則是在獲取到元組后通過調(diào)用相關(guān)存儲操作接口實(shí)現(xiàn)的?!? 執(zhí)行過程需要使用存儲和索引提供的接口存取數(shù)據(jù),并涉及事務(wù)和權(quán)限控制等內(nèi)容,這些會在相關(guān)章節(jié)給出更加詳細(xì)的介紹?!? ……
編輯推薦
《PostgreSQL 數(shù)據(jù)庫內(nèi)核分析》系統(tǒng)、深入地剖析開源數(shù)據(jù)庫PostgreSQL的實(shí)現(xiàn)機(jī)制和工作原理,作者跟蹤、研究PostgreSQL源代碼十年的嘔心之作。 《PostgreSQL 數(shù)據(jù)庫內(nèi)核分析》按照PostgreSQL的體系結(jié)構(gòu),從存儲、索引、查詢編譯、查詢執(zhí)行、并發(fā)控制以及安全幾個方面切入,全面介紹PostgreSQL各種機(jī)制的運(yùn)行原理。為了清晰闡述復(fù)雜的運(yùn)行機(jī)理,書中穿插了大量的原理圖、程序流程圖進(jìn)行輔助講解,使數(shù)據(jù)庫的運(yùn)行過程一目了然?!禤ostgreSQL 數(shù)據(jù)庫內(nèi)核分析》沒有單純地介紹數(shù)據(jù)庫原理或逐行分析源代碼,而是從數(shù)據(jù)庫設(shè)計(jì)者的角度,闡釋數(shù)據(jù)庫內(nèi)部各個模塊之間如何配合實(shí)現(xiàn)各種功能。 《PostgreSQL 數(shù)據(jù)庫內(nèi)核分析》基于開源數(shù)據(jù)庫管理系統(tǒng)PostgreSQL 8.4.1,對其底層運(yùn)行、實(shí)現(xiàn)機(jī)制進(jìn)行了詳盡介紹,使讀者從全局的角度理解數(shù)據(jù)庫管理系統(tǒng)?!? 《PostgreSQL 數(shù)據(jù)庫內(nèi)核分析》作者一直從事數(shù)據(jù)庫相關(guān)的科研、教學(xué)工作,深知要進(jìn)行數(shù)據(jù)庫的設(shè)計(jì)、開發(fā)、高層次的研究或其他創(chuàng)新性的工作,分析數(shù)據(jù)庫源代碼是一個行之有效的方法。基于這一理念,作者于十年前在武漢大學(xué)率先開設(shè)了“數(shù)據(jù)庫內(nèi)核分析”課程,《PostgreSQL 數(shù)據(jù)庫內(nèi)核分析》的編寫理念、內(nèi)容架構(gòu)也在這十年間不斷成熟和完善?!? 《PostgreSQL 數(shù)據(jù)庫內(nèi)核分析》從數(shù)據(jù)庫學(xué)習(xí)、研究者的認(rèn)知規(guī)律出發(fā),以典型的開源數(shù)據(jù)庫管理系統(tǒng)為例,揭示了一個真實(shí)數(shù)據(jù)庫管理系統(tǒng)運(yùn)行背后的奧秘。作者從源代碼入手,將PostgreSQL的存儲管理、索引、查詢編譯、查詢執(zhí)行、并發(fā)控制、安全保障機(jī)制的實(shí)現(xiàn)原理、機(jī)制間的交互配合全景展現(xiàn),讀者不僅能夠了解PostgreSQL的設(shè)計(jì)原理,提升對數(shù)據(jù)庫的認(rèn)識,更能在此基礎(chǔ)上進(jìn)行數(shù)據(jù)庫系統(tǒng)的定制、數(shù)據(jù)庫內(nèi)核開發(fā)等設(shè)計(jì)層面的工作。
圖書封面
圖書標(biāo)簽Tags
無
評論、評分、閱讀與下載
PostgreSQL 數(shù)據(jù)庫內(nèi)核分析 PDF格式下載