出版時間:2010-10 出版社:電子工業(yè)出版社 作者:李華植 頁數(shù):440
Tag標簽:無
前言
這已經(jīng)是第四次為本書寫作者序言了,此時此刻過去20年的生活如同電影般在我的腦海里一一掠過。當我最初決定步入IT領(lǐng)域時就為自己立下了誓言,時至今日回想起多年走過的歷程,其間充滿了艱辛,也正是這無數(shù)的艱辛讓我最終體驗了收獲的愉悅?;赝@20多年的足跡,我一直努力用新的視角去觀察他人所忽視的領(lǐng)域,嘗試用嶄新的思維和充滿創(chuàng)意的雙手去耕耘。盡管如此,也仍然無法緊跟IT技術(shù)飛快的發(fā)展步伐,我為實現(xiàn)理想而終日不停前行的腳步,雖然忙碌但卻無限滿足。眾所周知,能夠加工成寶石的原石比比皆是,一分耕耘,一分收獲,每當我們初次接觸某個新的東西時都會或多或少有些緊張。因此從這一層面來看,數(shù)據(jù)庫散發(fā)著無窮的魅力,它如同淵博精深的智者般質(zhì)樸,總是以真實、坦誠的心去面對每一位學(xué)習(xí)和研究它的人。在過去并不短暫的歲月里我一直深信數(shù)據(jù)庫的骨骼就是“數(shù)據(jù)”,并為這一理論的發(fā)展不斷努力,吸收同仁們分享的經(jīng)驗而持續(xù)奮斗。為了打破始終在理論表面徘徊的固有模式而不斷尋求新的嘗試,并試圖探求能夠讓IT工作者在實際工作中輕松應(yīng)用并掌控的巧妙方法。這種巧妙方法不能是只通過經(jīng)驗和試驗才能獲得的,它必須是利用日常常識就可以理解說明的方法。有這么一句話“會者不難,難者不會”,如果能夠把一些復(fù)雜的理論與通俗淺顯的常識相結(jié)合,那么不僅有利于人們的理解,更有利于人們在合適的情況下加以靈活運用。相反,有這么一句話“一知半解以為是”,意思是指那些只觀其表不觀其里就加以相信的人。很多程序員只忠實地相信自己的經(jīng)驗,當問及為何如此時,大部分人的答案都是“因為我那樣做過”或“那樣比較好”。10種類型的原理可以組合出10的階乘(3 628 800)種現(xiàn)象,那么100種類型的原理所能夠表現(xiàn)出來的現(xiàn)象數(shù)可以認為是一個天文數(shù)字。如若僅憑經(jīng)驗去思考問題,無論怎么努力,最終也只能獲得其中一部分的原理而已。然而,事實上我們是完全有能力深刻地理解這100種原理的。但如果不試圖進行深刻鉆研而只停留在表面,最終只能是一無所獲。寶石是不會被輕易發(fā)現(xiàn)的,只有憑借最大的努力去尋找方能找到。在不知不覺中當我們遇到了從表面上看無法解決的復(fù)雜問題時,會出現(xiàn)兩種人:其一,是堅持不懈、徹夜不休也要尋找到最佳解決辦法的人,這種人通過不懈的努力最終能夠獲得什么呢?事實上隨著歲月的流逝,他們終將成為眾人皆知的專家;其二,是認為過于煩瑣,直接予以放棄的人,這種人只會讓自己的血汗變成廉價的廢棄物??梢宰院赖卣f“我付出了常人所無法想象的艱辛”,為了尋求完美的真理舍棄了很多常人的生活。在沒有釣到魚時釣魚人也許會為此而耿耿于懷,但在我看來問題的關(guān)鍵在于沒有尋找到有效的釣魚方法。如果釣魚人能夠充分理解我的想法,并甘愿為了改變自己的固有觀念而付出較大努力,盡管他也可能會為此而花費大量的時間和心血,但堅信他一定能夠獲得別人所無法獲得的成果。如果他研究出了別人所無法研究出的釣魚方法,那么從此就再也不用為釣不到魚而擔心了。各位讀者在工作的同時究竟是否一直在使用一種平凡的方法呢?還是為了解決明天必須要完成的任務(wù)而臨時抱佛腳呢?現(xiàn)在該到結(jié)束這種惡性循環(huán)的時候了。應(yīng)用程序其實就是處理數(shù)據(jù)的手段而已,它需要緊跟流行的步伐,如不及時進行更新,在不經(jīng)意之間就已經(jīng)落伍了。然而數(shù)據(jù)和數(shù)據(jù)庫并非如此,不論歲月如何流失,我們積攢起來的“內(nèi)功”是不會消失的。如果能對其原理有一個深刻的理解,那么不論何時何地都能夠隨心所欲地釣到很多魚。隨著數(shù)據(jù)庫技術(shù)的發(fā)展進步,能夠精確執(zhí)行指令的DBMS與日俱增,隨著對DBMS應(yīng)用能力的不同所獲得的性能差異使我們從技術(shù)中獲得滿足感。
內(nèi)容概要
本書將整體內(nèi)容分為兩部分,在第1部分中以影響數(shù)據(jù)讀取效率的所有要素為類別,對其各自的概念、原理、 特征、應(yīng)用準則,以及表的結(jié)構(gòu)特征、多樣化的索引類型、優(yōu)化器的內(nèi)部作用、優(yōu)化器為各種結(jié)果制定的執(zhí)行計劃予以詳細說明,并以對優(yōu)化器的正確理解為基礎(chǔ),提出對執(zhí)行計劃和執(zhí)行速度產(chǎn)生最大影響的索引構(gòu)建戰(zhàn)略方案;在第2部分中主要介紹提高數(shù)據(jù)讀取效率的具體戰(zhàn)略方案,在這部分中介紹與數(shù)據(jù)讀取效率相關(guān)的局部范圍掃描的原理和具體應(yīng)用方法,以及對被認為是提高數(shù)據(jù)庫使用效率基礎(chǔ)的表連接的所有類型予以詳細說明。 《海量數(shù)據(jù)庫解決方案》系列叢書深受廣大讀者的喜愛已經(jīng)長達10年之久,在被譽為“圣經(jīng)”的同時,它已經(jīng)變成了數(shù)據(jù)庫用戶不可或缺的必讀書籍。作者竭力探求能夠讓IT工作者在實際工作中輕松應(yīng)用并掌控的巧妙方法,提供事半功倍的海量數(shù)據(jù)庫解決之道。
作者簡介
李華植 代表韓國的數(shù)據(jù)庫技術(shù)先驅(qū)
集基于EA的數(shù)據(jù)架構(gòu)方法論之大成
在韓國最早提出了數(shù)據(jù)專家顧問的概念
現(xiàn)任EN-CORE CONSULTING總經(jīng)理及代表顧問
曾任韓國Oracle公司擔任200多家企業(yè)的技術(shù)顧問
書籍目錄
第1部分 影響數(shù)據(jù)讀取的因素第1章 數(shù)據(jù)的存儲結(jié)構(gòu)和特征 1 1.1 表和索引分離型 5 1.1.1 堆表的結(jié)構(gòu) 5 1.1.2 聚簇因子(Cluster Factor) 10 1.1.3 影響讀取的因素 13 1.1.3.1 大范圍數(shù)據(jù)讀取的處理方案 14 1.1.3.2 提高聚簇因子的手段 17 1.2 索引組織表(Index-Organized Table) 19 1.2.1 堆表和索引組織表的比較 19 1.2.2 索引組織表的結(jié)構(gòu)和特征 20 1.2.3 邏輯ROWID和物理猜(Physical Guess) 22 1.2.4 溢出區(qū)(Overflow Area) 24 1.2.5 索引組織表的創(chuàng)建 25 1.3 聚簇表 26 1.3.1 聚簇表的概念 27 1.3.2 單表聚簇 29 1.3.3 復(fù)合表聚簇 31 1.3.4 聚簇表的代價 34 1.3.5 哈希聚簇 39第2章 索引的類型和特征 43 2.1 B-Tree 索引 44 2.1.1 B-Tree 索引的結(jié)構(gòu) 44 2.1.2 B-Tree 索引的應(yīng)用 47 2.1.3 反向鍵索引 52 2.2 位圖索引 53 2.2.1 位圖索引的形成背景 54 2.2.2 位圖索引的結(jié)構(gòu)和特征 55 2.2.3 位圖索引的讀取 57 2.3 基于自定義的函數(shù)索引 60 2.3.1 基于自定義的函數(shù)索引的概念和結(jié)構(gòu) 60 2.3.2 基于自定義函數(shù)索引的約束 61 2.3.3 基于自定義函數(shù)索引的靈活運用 64第3章 SQL的執(zhí)行計劃(Explain Plan) 74 3.1 SQL和優(yōu)化器 75 3.1.1 優(yōu)化器的作用和人的作用 77 3.1.2 優(yōu)化器的類型 80 3.1.2.1 基于規(guī)則的優(yōu)化器 82 3.1.2.2 基于成本的優(yōu)化器 86 3.1.2.3 優(yōu)化器目標的選擇 93 3.1.2.4 執(zhí)行計劃的固定化方案 97 3.1.2.5 優(yōu)化器的局限 103 3.1.3 優(yōu)化器的最優(yōu)化步驟 106 3.1.4 查詢語句的轉(zhuǎn)換 112 3.1.4.1 傳遞性規(guī)則 113 3.1.4.2 視圖合并(View Merging) 116 3.1.4.3 查看用戶定義的綁定變量 122 3.1.5 開發(fā)者的作用 123 3.2 執(zhí)行計劃的類型 126 3.2.1 掃描的基本類型 126 3.2.1.1 全表掃描 127 3.2.1.2 ROWID掃描 132 3.2.1.3 索引掃描 133 3.2.1.4 B-Tree聚簇讀取(Cluster Access) 138 3.2.1.5 哈希聚簇讀?。℉ash Cluster Access) 139 3.2.1.6 采樣表掃描(Sample Table Scan) 140 3.2.2 表連接的執(zhí)行計劃 143 3.2.2.1 嵌套循環(huán)連接(Nested Loops Join) 143 3.2.2.2 排序合并連接(Sort Merge Join) 146 3.2.2.3 哈希連接(Hash Join) 148 3.2.2.4 半連接(Semi Join) 149 3.2.2.5 笛卡兒連接 151 3.2.2.6 外連接(Outer Join) 154 3.2.2.7 索引連接 159 3.2.3 其他運算方式的執(zhí)行計劃 161 3.2.3.1 IN-List迭代執(zhí)行計劃 162 3.2.3.2 連鎖執(zhí)行計劃 163 3.2.3.3 遠程執(zhí)行計劃 165 3.2.3.4 排序操作執(zhí)行計劃 168 3.2.3.5 集合操作執(zhí)行計劃 171 3.2.3.6 COUNT(STOPKEY)執(zhí)行計劃 174 3.2.4 位圖(Bitmap)執(zhí)行計劃 175 3.2.4.1 各種條件運算符的位圖執(zhí)行計劃 176 3.2.4.2 子查詢執(zhí)行計劃 182 3.2.4.3 與B-Tree索引相結(jié)合的執(zhí)行計劃 184 3.2.5 其他特殊處理的執(zhí)行計劃 185 3.2.5.1 遞歸展開(Recursive Implosion)執(zhí)行計劃 186 3.2.5.2 修改子查詢執(zhí)行計劃 191 3.2.5.3 特殊類型的執(zhí)行計劃 193 3.3 執(zhí)行計劃的控制 203 3.3.1 提示的活用準則 204 3.3.2 使用提示實現(xiàn)最優(yōu)化目標 206 3.3.3 使用提示改變表連接順序 207 3.3.4 表連接方式選擇過程中提示的使用 208 3.3.5 并行操作中提示的使用 209 3.3.6 數(shù)據(jù)讀取方法選擇中提示的使用 211 3.3.7 查詢轉(zhuǎn)換(Query Transformation)過程中提示的使用 214 3.3.8 其他提示 216第4章 構(gòu)建索引的戰(zhàn)略方案 221 4.1 索引的選定準則 222 4.1.1 不同類型表的索引應(yīng)用準則 223 4.1.2 離散度和損益分界點 227 4.1.3 索引合并和組合索引的比較 229 4.1.4 組合索引的特征 232 4.1.5 組合索引中列序的決定準則 239 4.1.6 索引選定步驟 242 4.2 決定聚簇類型的準則 263 4.2.1 全局性聚簇 263 4.2.2 局部性聚簇 265 4.2.3 單表聚簇 266 4.2.4 單位聚簇大小的決定 267 4.2.5 確保聚簇被使用的措施 270第2部分 最優(yōu)化數(shù)據(jù)讀取方案第5章 局部范圍掃描(Partial range scan) 274 5.1 局部范圍掃描的概念 276 5.2 局部范圍掃描的應(yīng)用原則 281 5.2.1 局部范圍掃描的條件 281 5.2.2 不同優(yōu)化器模式下的局部范圍掃描 284 5.3 提高局部范圍掃描執(zhí)行速度的原理 285 5.4 向局部范圍掃描引導(dǎo)的方法 289 5.4.1 利用訪問路徑實現(xiàn)對Sort的代替 289 5.4.2 只使用索引的局部范圍掃描 292 5.4.3 MIN、MAX 的處理 293 5.4.4 FILTER型局部范圍掃描 298 5.4.5 ROWNUM的靈活運用 300 5.4.6 利用嵌套視圖的局部范圍掃描 306 5.4.7 利用函數(shù)的局部范圍掃描 308 5.4.8 利用查詢語句二元化特性的局部范圍掃描 316 5.4.9 Web留言板中的局部范圍掃描 318第6章 表連接的最優(yōu)化方案 336 6.1 JOIN和LOOP QUERY的比較 339 6.1.1 全部范圍掃描方式下的比較 341 6.1.2 局部范圍掃描方式下的比較 349 6.2 連接條件狀態(tài)對表連接的影響 351 6.2.1 連接條件正常 353 6.2.2 連接條件一邊異常 358 6.2.3 連接條件兩邊異常 361 6.3 各種表連接方式的特征及活用方案 365 6.3.1 嵌套循環(huán)連接 366 6.3.1.1 嵌套循環(huán)連接的基本概念 367 6.3.1.2 嵌套循環(huán)連接順序的決定 370 6.3.2 排序合并連接 379 6.3.3 嵌套循環(huán)連接和排序合并連接的比較 383 6.3.4 哈希連接(Hash Join) 387 6.3.4.1 IN-MEMORY哈希連接 392 6.3.4.2 延遲哈希連接 395 6.3.5 半連接(Semi Join) 398 6.3.5.1 半連接的概念和特征 399 6.3.5.2 半連接的執(zhí)行計劃 401 6.3.6 星型(Star)連接 417 6.3.7 星變形(Star Transformation)連接 425 6.3.8 位圖連接索引 436
章節(jié)摘錄
插圖:所謂的表和索引分離型的存儲結(jié)構(gòu)其實就是堆表,即用來存儲數(shù)據(jù)的表和為了快速查找特定數(shù)據(jù)而使用的索引完全作為不同的對象來存儲。事實上,在以前的關(guān)系型數(shù)據(jù)庫中,大部分的鍵(Key)和數(shù)據(jù)都有著非常密切的關(guān)系。當我們從存儲的數(shù)據(jù)中查找某個特定范圍中的數(shù)據(jù)時必須要依賴于鍵,否則無法正常查找所需要的數(shù)據(jù)。因此,鍵必然會對數(shù)據(jù)的存儲產(chǎn)生一定的影響。在以前的數(shù)據(jù)庫中查找數(shù)據(jù)時,只需要查找到鍵就一定能夠在相應(yīng)的位置查到與其對應(yīng)的數(shù)據(jù),因此從某個角度來看,查找鍵就是查找數(shù)據(jù)。也正因為如此,一度的經(jīng)驗是把鍵存儲在數(shù)據(jù)的旁邊。其實即使我們把數(shù)據(jù)和鍵分別存儲在不同的位置,也同樣能夠通過查找鍵來定位到數(shù)據(jù)所在的位置,所以完全沒有必要把鍵和數(shù)據(jù)存儲在一起。從代價的角度來分析,由于需要執(zhí)行兩次查找,即鍵的查找和數(shù)據(jù)的查找,所以與以前的方法相比必然會存在額外的代價。使用鍵和數(shù)據(jù)分離的方法在存儲數(shù)據(jù)時不會受到索引的任何影響,從這一角度來看,又在很大程度上減少了代價的支出。如果使用這種方法來存儲數(shù)據(jù),則意味著數(shù)據(jù)與存儲方式之間將不再有任何的關(guān)聯(lián),而數(shù)據(jù)完全可以被無條件地存儲。這就好像往抽屜里放東西一樣,如果并不需要我們?nèi)プ肪繉⒁湃氲奈锲肥鞘裁?,而只需要將其挨著放入就可以了的話,?yīng)該再沒有比這更為簡單的方法了。
編輯推薦
《海量數(shù)據(jù)庫解決方案》:涵蓋數(shù)據(jù)庫專家最新核心技術(shù)的RDBMS經(jīng)典書籍包含了將代碼縮減為原來的1/10而速度提高至原來10倍的先進方法。揭開了關(guān)系數(shù)據(jù)庫的真面目。展示了截至現(xiàn)在未能被靈活使用的新技術(shù)。10億韓元 40萬冊銷售神話韓國數(shù)據(jù)庫泰斗李華植先生力作風靡日韓蓋國強 鄭保衛(wèi)博士 譯? ITPUB數(shù)據(jù)庫版主張樂奕 崔華 審校 ?《海量數(shù)據(jù)庫解決方案》是一本全面反映過去10年迅速發(fā)展的商用DBMS最新數(shù)據(jù)庫應(yīng)用技術(shù)、強化數(shù)據(jù)庫技術(shù)靈活運用原理及系統(tǒng)化具體應(yīng)用準則的高水平的經(jīng)典書籍?!逗A繑?shù)據(jù)庫解決方案》曾在韓國和日本同時出版發(fā)行。在日本最權(quán)威的數(shù)據(jù)庫專業(yè)出版社(株)——翔泳社出版局出版發(fā)行《海量數(shù)據(jù)庫解決方案》的同時,也將韓國先進的數(shù)據(jù)庫技術(shù)傳播到了日本。此次在發(fā)行中文版的同時,也希望《海量數(shù)據(jù)庫解決方案》中所涵蓋的技術(shù)能夠?qū)χ袊膹V大讀者有所幫助。《海量數(shù)據(jù)庫解決方案》中所涉及的普遍性原理適合于任何DBMS,只要對語法稍加調(diào)整便可在所有DBMS中得到有效使用。為了便于讀者對關(guān)系數(shù)據(jù)庫的概念、優(yōu)化器的靈活運用原理、適用于多樣化實際業(yè)務(wù)中的明確應(yīng)用準則有一個充分的理解,在《海量數(shù)據(jù)庫解決方案》中通過舉例對這些內(nèi)容進行了詳細說明。?
圖書封面
圖書標簽Tags
無
評論、評分、閱讀與下載