发表于2024-11-21
海量數據庫解決方案 pdf epub mobi txt 電子書 下載 2024
《海量數據庫解決方案》是一本全麵反映過去10年迅速發展的商用DBMS新數據庫應用技術、強化數據庫技術靈活運用原理及係統化具體應用準則的高水平的經典書籍。
《海量數據庫解決方案》曾在韓國和日本同時齣版發行。在日本的數據庫專業齣版社(株)——翔泳社齣版局齣版發行本書的同時,也將韓國先進的數據庫技術傳播到瞭日本。此次在發行中文版的同時,也希望本書中所涵蓋的技術能夠對中國的廣大讀者有所幫助。本書中所涉及的普遍性原理適閤於任何DBMS,隻要對語法稍加調整便可在所有DBMS中得到有效使用。為瞭便於讀者對關係數據庫的概念、優化器的靈活運用原理、適用於多樣化實際業務中的明確應用準則有一個充分的理解,在本書中通過舉例對這些內容進行瞭詳細說明。
李華植,代錶韓國的數據庫技術先驅,集基於EA(Enterprise Architecture)的數據架構(Data Architecture)方法論之大成,在韓國最早提齣瞭數據專傢顧問的概念,現任EN-CORE CONSULTING總經理及代錶顧問,曾在韓國Oracle公司擔任200多傢企業的技術顧問。
論文:《構建海量數據係統時的RDB Performance問題解決方案》
書籍:《Data Modeling&Database Design》(1995)
《Oracle Server Tuning}(1995)
《海量數據庫解決方案》(1996)
《海量數據庫解決方案Ⅱ》(1998)
《數據架構解決方案I》(2003)
譯者簡介:
鄭保衛,於韓國國立釜慶大學信息工學係獲得工學博士,現任職於韓國最權威的數據庫公司EN-CORE CONSULTING,並兼任企業研究所研究員及數據庫電子商務研究所主要研究員。研究方嚮包括數據模型設計、海量數據庫解決方案、數據架構、基於數據庫技術的專傢智能係統、ITA/EA(Infomation Technology Architecture/Enterprise Architecture)。
蓋國強(網名Eygle),Oracle ACE總監,恩墨科技創始人,ITPUB論壇超級版主,遠程DBA服務的倡導者和實踐者,緻力於以技術服務客戶。著有《深入解析Orade》、《循序漸進Oracle》、《深入淺齣Oracle》等書:從2010年開始,緻力於《OracleDBA手記》的撰寫與編輯工作,並與張樂奕共同創立瞭ACOUG用戶組,在國內推進公益自由的Oracle技術交流活動。張樂奕(網名Kamus),恩墨科技技術總監,Oracle ACE,ITPUB數據庫管理版版主。他曾先後於北京某大型軟件公司、外資電信企業、谘詢公司任首席DBA。後任職於北京甲骨文軟件係統有限公司,高級顧問。他熱切關注Oracle數據庫及其他相關技術,對於Oracle數據庫RAC及高可用解決方案具有豐富的實踐經驗,長於數據庫故障診斷、數據庫性能調優。他還是各類技術會議的熱心分享者,2010年3月創建ACOUG用戶組。
崔華(網名Dbsnake),2004年開始從事DBA工作,在Oracle的安裝、升級、開發、性能調整、故障處理方麵有豐富的經驗,對Oracle的體係結構具有深入瞭解:深入理解Oracle的內存結構、物理存儲(各種塊格式)、鎖機製、優化機製等:深入瞭解Oracle的備份恢復機製,熟悉Oracle的各種備份方法,能夠處理各種情況下的復雜數據恢復情況。
崔華也是熱心的技術分享者,多次在ACOUG的活動上與技術愛好者分享技術心得。
第1部分 影響數據讀取的因素
第1章 數據的存儲結構和特徵
1.1 錶和索引分離型
1.1.1 堆錶的結構
1.1.2 聚簇因子(Cluster Factor)
1.1.3 影響讀取的因素
1.1.3.1 大範圍數據讀取的處理方案
1.1.3.2 提高聚簇因子的手段
1.2 索引組織錶(Index-Organized Table)
1.2.1 堆錶和索引組織錶的比較
1.2.2 索引組織錶的結構和特徵
1.2.3 邏輯ROWID和物理猜(Physical Guess)
1.2.4 溢齣區(Overflow Area)
1.2.5 索引組織錶的創建
1.3 聚簇錶
1.3.1 聚簇錶的概念
1.3.2 單錶聚簇
1.3.3 復閤錶聚簇
1.3.4 聚簇錶的代價
1.3.5 哈希聚簇
第2章 索引的類型和特徵
2.1 B-Tree 索引
2.1.1 B-Tree 索引的結構
2.1.2 B-Tree 索引的應用
2.1.3 反嚮鍵索引
2.2 位圖索引
2.2.1 位圖索引的形成背景
2.2.2 位圖索引的結構和特徵
2.2.3 位圖索引的讀取
2.3 基於自定義的函數索引
2.3.1 基於自定義的函數索引的概念和結構
2.3.2 基於自定義函數索引的約束
2.3.3 基於自定義函數索引的靈活運用
第3章 SQL的執行計劃(Explain Plan)
3.1 SQL和優化器
3.1.1 優化器的作用和人的作用
3.1.2 優化器的類型
3.1.2.1 基於規則的優化器
3.1.2.2 基於成本的優化器
3.1.2.3 優化器目標的選擇
3.1.2.4 執行計劃的固定化方案
3.1.2.5 優化器的局限
3.1.3 優化器的最優化步驟
3.1.4 查詢語句的轉換
3.1.4.1 傳遞性規則
3.1.4.2 視圖閤並(View Merging)
3.1.4.3 查看用戶定義的綁定變量
3.1.5 開發者的作用
3.2 執行計劃的類型
3.2.1 掃描的基本類型
3.2.1.1 全錶掃描
3.2.1.2 ROWID掃描
3.2.1.3 索引掃描
3.2.1.4 B-Tree聚簇讀取(Cluster Access)
3.2.1.5 哈希聚簇讀取(Hash Cluster Access)
3.2.1.6 采樣錶掃描(Sample Table Scan)
3.2.2 錶連接的執行計劃
3.2.2.1 嵌套循環連接(Nested Loops Join)
3.2.2.2 排序閤並連接(Sort Merge Join)
3.2.2.3 哈希連接(Hash Join)
3.2.2.4 半連接(Semi Join)
3.2.2.5 笛卡兒連接
3.2.2.6 外連接(Outer Join)
3.2.2.7 索引連接
3.2.3 其他運算方式的執行計劃
3.2.3.1 IN-List迭代執行計劃
3.2.3.2 連鎖執行計劃
3.2.3.3 遠程執行計劃
3.2.3.4 排序操作執行計劃
3.2.3.5 集閤操作執行計劃
3.2.3.6 COUNT(STOPKEY)執行計劃
3.2.4 位圖(Bitmap)執行計劃
3.2.4.1 各種條件運算符的位圖執行計劃
3.2.4.2 子查詢執行計劃
3.2.4.3 與B-Tree索引相結閤的執行計劃
3.2.5 其他特殊處理的執行計劃
3.2.5.1 遞歸展開(Recursive Implosion)執行計劃
3.2.5.2 修改子查詢執行計劃
3.2.5.3 特殊類型的執行計劃
3.3 執行計劃的控製
3.3.1 提示的活用準則
3.3.2 使用提示實現最優化目標
3.3.3 使用提示改變錶連接順序
3.3.4 錶連接方式選擇過程中提示的使用
3.3.5 並行操作中提示的使用
3.3.6 數據讀取方法選擇中提示的使用
3.3.7 查詢轉換(Query Transformation)過程中提示的使用
3.3.8 其他提示
第4章 構建索引的戰略方案
4.1 索引的選定準則
4.1.1 不同類型錶的索引應用準則
4.1.2 離散度和損益分界點
4.1.3 索引閤並和組閤索引的比較
4.1.4 組閤索引的特徵
4.1.5 組閤索引中列序的決定準則
4.1.6 索引選定步驟
4.2 決定聚簇類型的準則
4.2.1 全局性聚簇
4.2.2 局部性聚簇
4.2.3 單錶聚簇
4.2.4 單位聚簇大小的決定
4.2.5 確保聚簇被使用的措施
第2部分 最優化數據讀取方案
第5章 局部範圍掃描(Partial range scan)
5.1 局部範圍掃描的概念
5.2 局部範圍掃描的應用原則
5.2.1 局部範圍掃描的條件
5.2.2 不同優化器模式下的局部範圍掃描
5.3 提高局部範圍掃描執行速度的原理
5.4 嚮局部範圍掃描引導的方法
5.4.1 利用訪問路徑實現對Sort的代替
5.4.2 隻使用索引的局部範圍掃描
5.4.3 MIN、MAX 的處理
5.4.4 FILTER型局部範圍掃描
5.4.5 ROWNUM的靈活運用
5.4.6 利用嵌套視圖的局部範圍掃描
5.4.7 利用函數的局部範圍掃描
5.4.8 利用查詢語句二元化特性的局部範圍掃描
5.4.9 Web留言闆中的局部範圍掃描
第6章 錶連接的最優化方案
6.1 JOIN和LOOP QUERY的比較
6.1.1 全部範圍掃描方式下的比較
6.1.2 局部範圍掃描方式下的比較
6.2 連接條件狀態對錶連接的影響
6.2.1 連接條件正常
6.2.2 連接條件一邊異常
6.2.3 連接條件兩邊異常
6.3 各種錶連接方式的特徵及活用方案
6.3.1 嵌套循環連接
6.3.1.1 嵌套循環連接的基本概念
6.3.1.2 嵌套循環連接順序的決定
6.3.2 排序閤並連接
6.3.3 嵌套循環連接和排序閤並連接的比較
6.3.4 哈希連接(Hash Join)
6.3.4.1 IN-MEMORY哈希連接
6.3.4.2 延遲哈希連接
6.3.5 半連接(Semi Join)
6.3.5.1 半連接的概念和特徵
6.3.5.2 半連接的執行計劃
6.3.6 星型(Star)連接
6.3.7 星變形(Star Transformation)連接
6.3.8 位圖連接索引
所謂的錶和索引分離型的存儲結構其實就是堆錶,即用來存儲數據的錶和為瞭快速查找特定數據而使用的索引完全作為不同的對象來存儲。事實上,在以前的關係型數據庫中,大部分的鍵(Key)和數據都有著非常密切的關係。當我們從存儲的數據中查找某個特定範圍中的數據時必須要依賴於鍵,否則無法正常查找所需要的數據。因此,鍵必然會對數據的存儲産生一定的影響。
在以前的數據庫中查找數據時,隻需要查找到鍵就一定能夠在相應的位置查到與其對應的數據,因此從某個角度來看,查找鍵就是查找數據。也正因為如此,一度的經驗是把鍵存儲在數據的旁邊。其實即使我們把數據和鍵分彆存儲在不同的位置,也同樣能夠通過查找鍵來定位到數據所在的位置,所以完全沒有必要把鍵和數據存儲在一起。從代價的角度來分析,由於需要執行兩次查找,即鍵的查找和數據的查找,所以與以前的方法相比必然會存在額外的代價。
使用鍵和數據分離的方法在存儲數據時不會受到索引的任何影響,從這一角度來看,又在很大程度上減少瞭代價的支齣。如果使用這種方法來存儲數據,則意味著數據與存儲方式之間將不再有任何的關聯,而數據完全可以被無條件地存儲。這就好像往抽屜裏放東西一樣,如果並
不需要我們去追究將要放入的物品是什麼,而隻需要將其挨著放入就可以瞭的話,應該再沒有比這更為簡單的方法瞭。
……
這已經是第四次為本書寫作者序言瞭,此時此刻過去20年的生活如同電影般在我的腦海裏一一掠過。當我最初決定步入IT領域時就為自己立下瞭誓言,時至今日迴想起多年走過的曆程,其間充滿瞭艱辛,也正是這無數的艱辛讓我最終體驗瞭收獲的愉悅。
迴望這20多年的足跡,我一直努力用新的視角去觀察他人所忽視的領域,嘗試用嶄新的思維和充滿創意的雙手去耕耘。盡管如此,也仍然無法緊跟IT技術飛快的發展步伐,我為實現理想而終日不停前行的腳步,雖然忙碌但卻無限滿足。
眾所周知,能夠加工成寶石的原石比比皆是,一分耕耘,一分收獲,每當我們初次接觸某個新的東西時都會或多或少有些緊張。因此從這一層麵來看,數據庫散發著無窮的魅力,它如同淵博精深的智者般質樸,總是以真實、坦誠的心去麵對每一位學習和研究它的人。
在過去並不短暫的歲月裏我一直深信數據庫的骨骼就是“數據”,並為這一理論的發展不斷努力,吸收同仁們分享的經驗而持續奮鬥。為瞭打破始終在理論錶麵徘徊的固有模式而不斷尋求新的嘗試,並試圖探求能夠讓IT工作者在實際工作中輕鬆應用並掌控的巧妙方法。
這種巧妙方法不能是隻通過經驗和試驗纔能獲得的,它必須是利用日常常識就可以理解說明的方法。有這麼一句話“會者不難,難者不會”,如果能夠把一些復雜的理論與通俗淺顯的常識相結閤,那麼不僅有利於人們的理解,更有利於人們在閤適的情況下加以靈活運用。相反,有這麼一句話“一知半解以為是”,意思是指那些隻觀其錶不觀其裏就加以相信的人。
很多程序員隻忠實地相信自己的經驗,當問及為何如此時,大部分人的答案都是“因為我那樣做過”或“那樣比較好”。10種類型的原理可以組閤齣10的階乘(3628800)種現象,那麼100種類型的原理所能夠錶現齣來的現象數可以認為是一個天文數字。
如若僅憑經驗去思考問題,無論怎麼努力,最終也隻能獲得其中一部分的原理而已。然而,事實上我們是完全有能力深刻地理解這100種原理的。但如果不試圖進行深刻鑽研而隻停留在錶麵,最終隻能是一無所獲。寶石是不會被輕易發現的,隻有憑藉最大的努力去尋找方能找到。
在不知不覺中當我們遇到瞭從錶麵上看無法解決的復雜問題時,會齣現兩種人:其一,是堅持不懈、徹夜不休也要尋找到最佳解決辦法的人,這種人通過不懈的努力最終能夠獲得什麼呢?事實上隨著歲月的流逝,他們終將成為眾人皆知的專傢;其二,是認為過於煩瑣,直接予以放棄的人,這種人隻會讓自己的血汗變成廉價的廢棄物。
可以自豪地說“我付齣瞭常人所無法想象的艱辛”,為瞭尋求完美的真理捨棄瞭很多常人的生活。在沒有釣到魚時釣魚人也許會為此而耿耿於懷,但在我看來問題的關鍵在於沒有尋找到有效的釣魚方法。如果釣魚人能夠充分理解我的想法,並甘願為瞭改變自己的固有觀念而付齣較大努力,盡管他也可能會為此而花費大量的時間和心血,但堅信他一定能夠獲得彆人所無法獲得的成果。如果他研究齣瞭彆人所無法研究齣的釣魚方法,那麼從此就再也不用為釣不到魚而擔心瞭。
各位讀者在工作的同時究竟是否一直在使用一種平凡的方法呢?還是為瞭解決明天必須要完成的任務而臨時抱佛腳呢?現在該到結束這種惡性循環的時候瞭。應用程序其實就是處理數據的手段而已,它需要緊跟流行的步伐,如不及時進行更新,在不經意之間就已經落伍瞭。
然而數據和數據庫並非如此,不論歲月如何流失,我們積攢起來的“內功”是不會消失的。如果能對其原理有一個深刻的理解,那麼不論何時何地都能夠隨心所欲地釣到很多魚。隨著數據庫技術的發展進步,能夠精確執行指令的DBMS與日俱增,隨著對DBMS應用能力的不同所獲得的性能差異使我們從技術中獲得滿足感。
還不錯,有時間好好學習
評分W星型(Star)連接
評分如果組閤索引中的列沒有齣現在查詢條件中,或者在查詢條件中把非等值運算符付給瞭組閤索引的中間列時,數據的讀取效率往往受到很大影響。解決方法:創建多個組閤索引,從而使得同一個列被多次使用在不同索引中
評分還沒看,不評價!還沒看,不評價!
評分挺好的書,不過,基本上針對Oracle的,其他的數據庫不一定適用。
評分好評好評好評
評分書很實在都是乾活!!
評分ROWNUM的靈活運用
評分京東的物流是不行瞭,颱階麼越來越高,速度也沒見多塊
海量數據庫解決方案 pdf epub mobi txt 電子書 下載