關聯式資料庫索引設計和優化器前言

lt發表於2013-04-23

前言

關聯式資料庫的出現迄今已經超過20年。在它們發展的初期,效能問題普遍是由於有限的硬體資源和不成熟的優化器導致的,所以效能是一個優先考慮的問題。如今的情況是非常不同的,硬體和軟體的發展已超出了所有的認識。現在假定效能能夠照顧自己都是不足為奇的!但現實情況是,儘管資源增長是巨大的,現在可用的資訊量和需要對這些資訊做的工作的增長更大。此外,一個關鍵方面的硬體並沒有跟上時代的步伐:雖然磁碟的容量一定會成為更大並令人難以置信的便宜,但它們在直接訪問資料方面己的能力仍然相對緩慢。因此很多的老問題實際上沒有消失——它們只是改變了其現象。這些問題有些可能會有巨大的影響——故事比比皆是,可能預期花費幾分之一秒的“簡單”的查詢似乎是很樂意需要幾分鐘甚至更長的時間,這儘管所有的書會告訴我們如何正確地對查詢編碼,以及如何組織表和把合適的列放入索引有什麼規律可循。所以這是非常清楚的,有需要一本書,它超越平常的界限,並真正開始思考為什麼今天這麼多的人仍然有這麼多的問題。

為了滿足這一需求,我們相信,我們必須把重點放在兩個問題。首先,關係系統的部件(稱為SQL優化器)必須來決定如何以最有效的方式找到所需的資訊,其次是如何掃描索引和表。我們想嘗試把自己放在優化器的位置,也許,如果我們理解為什麼它可能有問題,我們能夠做的事情也許就會不同。幸運的是,我們真的需要了解有關優化器的資訊是相當驚人地少,但有什麼卻是非常重要的。同樣,這本書不同於其他在該領域的書籍非常重要的方式,就是我們不會提供一個巨大的規則清單和使用SQL編碼和設計表甚至索引的語法。這不是一本參考書,它不顯示應該使用哪些SQL WHERE子句,或對於每一個可以想象的情況應採用什麼樣的語法。如果我們試圖按照一長串的複雜、曖昧,也許是不完整的指示行事,我們將重蹈所有別人已經踩出相同的路徑。如果另一方面,我們贊成我們要求關係系統來承擔的東西的影響,以及我們如何能夠對這種影響施加影響,我們就將能夠理解、控制、減輕或避免所遇到的問題。

這本書的第二個目標是展示我們如何能利用這些知識來用CPU和用時的方式量化的正在執行的工作。我們只有這樣,才能真正判斷我們的索引和表設計是否成功,我們需要用實際的數字來顯示優化器會認為,掃描的用時會是多久,而且哪些修改會被要求提供令人滿意的效能。但最重要的是,我們必須要能夠快速、輕鬆地做到這一點,這反過來又意味著把重點放在一些真正重大的問題上,而不是放在許多人沉溺其中的相對不重要的細節上,這至關重要。要點是——專注於極少數的、至關重要的領域——並且能夠說出用時是多久或將花費多少資源。

我們也有一個進一步的優勢提供,作為專注於真正重要問題的結果再次出現。對於那些可能會使用多個關係型產品(即使是來自同一供應商)的人們,我們使用的是一個共同的方法,它適用於所有關係型產品,而不是閱讀和消化多套廣泛不同的規則和建議。全部“貨真價實”的關係型系統優化器,都有相同的工作要做,它們都必須做出決定,然後掃描索引和表。他們都在以一個驚人相似的方式(雖然他們有自己描述他們的方式)做這些事情。當然,它們也有一些差異,但我們可以不大困難地處理這個問題。

這本書的目標讀者,毫不誇張地說,是任何認為是他或她受益於知道一些有關SQL效能如何設計表和索引有效的人,以及那些直接負責設計索引、編寫SQL語句作為查詢或作為應用程式的一部分,以及那些負責維護關係型資料和關係型環境的任何人。所有人都將在不同程度上受益,如果他們覺得他們所做的工作對效能的影響有一定的責任的話。

最後,用一個詞概括適合閱讀這本書的讀者有關的背景。假定他們具有SQL的知識,即關係的語言。如果一個人甚至考慮這樣一本書,那麼他對計算機系統的一般理解可能已經到位。除此之外,也許將有助於讀者的最重要的品質,將是一種天然的好奇心和對事情是如何工作的興趣——以及一個希望把事情做得更好的願望。在另一個極端,也有兩類大量的在關係型系統中具有多年的經驗的人們,他們可能會覺得他們將受益;第一類是多年來利用詳細規則書管理相當不錯的人,想通過了解為什麼這些規則適用放鬆一下,第二類是,那些已經使用在這本書中描述的技術很多年,但還沒有意識到這些影響通過引進的新世界硬體已發揮出來的人。

在這本書中所使用的大部分的思想和技術是原創的,因此很少會發現對其他出版物和作者的外部引用。另一方面,正如常有的事,在創作像這樣的一本書的情況下,我們非常感謝眾多朋友和同事們在許多方面的協助,並提供了這麼多的鼓勵。我們特別想感謝Matti St˚ ahl他詳細的輸入和挑剔,但對整個開發的書非常有助於有用的建議;Lennart Hen¨ ang,Ari Hovi,Marja K¨ armeniemi,Timo Raitalaakso的寶貴協助和審查,和Akira Shibamiya,因他原創的工作效能關係公式。此外,我們還感謝幾十個學生和大量資料庫顧問提供了一個洞察他們的真實環境的問題和解決方案。最後,特別感謝Meta和Lyn,沒有他們的鼓勵和支援,這本書絕不會已經完成;Meta還在她的本書封面特殊設計中精闢地概括了本書的核心。各章結束處的練習的答案和其他有關這段文字的材料,可以在下面這個FTP地址獲得:ftp://ftp.wiley.com/public/sci_tech_med/relational_database/。

TAPIO LAHDENMA¨KI

MICHAEL LEACH

相關文章