出版時(shí)間:2010-1 出版社:機(jī)械工業(yè)出版社 作者:(美)法拉特 等著,蘇敬凱 等譯 頁數(shù):286 譯者:蘇敬凱
Tag標(biāo)簽:無
前言
在翻譯本書時(shí),正流行著幾本名為“啥啥之美”的書。本書也可以說講的就是“如何將SQL寫得更美”。SQL之美就在于用清楚合理的方式告訴DBMS你要做什么,讓DBMS總能以最優(yōu)的方式高效地完成任務(wù)。SQL是一種描述式語言,在描述中要表達(dá)清楚能夠影響優(yōu)化器決策的要點(diǎn),同時(shí)避免過程化思維的那些細(xì)節(jié)。而要做到這一點(diǎn),理解優(yōu)化器的工作方式和SQL的理念至關(guān)重要,正如某條廣告語講的那樣“知其道,用其妙”。本書作者從事數(shù)據(jù)庫咨詢工作多年,在本書中,不僅舉出了很多具體生動(dòng)的例子,還講述了很多重構(gòu)sQL應(yīng)用的思想。無論你是DBA還是程序員,本書都能幫你寫出或改寫(也就是重構(gòu))出優(yōu)美的sQL語句、清楚明了的處理過程,從而交付出高效的系統(tǒng),贏得眾人的贊許,就像書中的很多故事那樣。參加本書翻譯的還有趙龍剛、金振林、周志強(qiáng)、楊寧等。本書翻譯力求忠于原著,但由于時(shí)間倉促,譯者水平有限,翻譯錯(cuò)誤和不妥之處在所難免,歡迎廣大讀者批評(píng)指正。
內(nèi)容概要
當(dāng)數(shù)據(jù)庫的性能達(dá)不到預(yù)期時(shí),該怎么辦呢?在用昂貴的硬件升級(jí)的力、法來解決這一問題之前,請(qǐng)拿起這本書。本書將教你如何發(fā)現(xiàn)和評(píng)估需要重構(gòu)的代碼,理解重構(gòu)和性能之間至關(guān)重要的關(guān)系。如果你的應(yīng)用陷入了困境,那么本書將能幫你使它重新加快速度。 在本書中你將學(xué)習(xí)到: ·判斷你是否(以及在哪里)可以得到性能的提升。 ·應(yīng)用快速修復(fù)的方法,例如在存儲(chǔ)函數(shù)和過程中限制對(duì)數(shù)據(jù)庫的調(diào)用。 ·改寫SQL語句以提高數(shù)據(jù)訪問的效率。 ·重構(gòu)任務(wù),例如用存儲(chǔ)過程代替應(yīng)用代碼,用全面的SQL語句代替重復(fù)的過程化語句。 ·增加并行以重構(gòu)流程。 ·使用模式擴(kuò)展、常規(guī)視圖、物化視圖、分區(qū)等來重構(gòu)設(shè)計(jì)。
作者簡(jiǎn)介
作者:(美國(guó))Stephane Farout(法拉特) (美國(guó))Pascal L Hermite 譯者:蘇敬凱 等Stephane Faroult,從1983年開始接觸關(guān)系數(shù)據(jù)庫和SQL語言,他從事數(shù)據(jù)庫咨詢工作已經(jīng)20多年了。O'Reilly的《The Art of SQL》也是他的作品。
書籍目錄
前言第1章 評(píng)估 一個(gè)簡(jiǎn)單的例子 評(píng)估可能的收益 第2章 健全檢查 統(tǒng)計(jì)信息與數(shù)據(jù)失真 檢查索引 解析與綁定變量 大數(shù)據(jù)量操作 事務(wù)管理 第3章 用戶函數(shù)和視圖 用戶自定義函數(shù) 視圖 第4章 測(cè)試框架 生成測(cè)試數(shù)據(jù) 比較備選版本 第5章 語句重構(gòu) 執(zhí)行計(jì)劃和優(yōu)化器指示 分析緩慢查詢 重構(gòu)查詢核心 重新構(gòu)建最初的查詢第6章 任務(wù)重構(gòu) SQL的理念 更改代碼結(jié)構(gòu)第7章 重構(gòu)流程和數(shù)據(jù)庫 重組處理過程 撼動(dòng)基礎(chǔ)第8章 實(shí)踐中的重構(gòu) 你能看到數(shù)據(jù)庫嗎 失敗的查詢 速度很快的查詢 并非顯然完全錯(cuò)誤的查詢 結(jié)束語附錄A 腳本及樣例程序附錄B 工具
章節(jié)摘錄
插圖:如果一個(gè)索引不能達(dá)到我們所追求的效果,那么有時(shí)一個(gè)更好的索引卻能提供更好的性能。有個(gè)問題,為什么要在accountid上單獨(dú)建立一個(gè)索引?從本質(zhì)上說,索引是鍵值的一個(gè)已排序列表(在樹中排序),這些鍵值關(guān)聯(lián)著和它們匹配的記錄的物理地址,就像本書后面的索引一樣——它是一個(gè)關(guān)鍵字及相關(guān)頁碼的已排序的列表。如果我們搜索的是兩個(gè)字段的值而索引只有其中的一個(gè)字段,那么我們就不得不讀出所有符合所搜索的鍵值的記錄,然后再丟掉那些在另一個(gè)字段上值不匹配的記錄。如果基于這兩個(gè)字段建立索引,那就能直接得到真正想要的記錄了。我們可以創(chuàng)建一個(gè)基于(accountid,txdate)的索引,因?yàn)榻灰兹掌谑遣樵兊牧硪粋€(gè)條件。創(chuàng)建了這個(gè)基于兩個(gè)字段的復(fù)合索引之后,我們就能確保SQL引擎在索引上能夠進(jìn)行有效的綁定搜索(這叫做范圍掃描)。在我的測(cè)試數(shù)據(jù)中,單字段索引使MySQL的性能提升了3.1倍,而雙字段的索引則使速度提高了3.4倍,現(xiàn)在運(yùn)行這一程序只需要花3.5分鐘。而壞消息是:在Oracle和SQLServer上,即便使用了雙字段索引,也沒有取得比之前單字段索引時(shí)更進(jìn)一步的性能提升(參見表1.4)。與我在現(xiàn)實(shí)生活中遇到過的很多處理過程一樣,這個(gè)例子的明顯特征是嵌套循環(huán)。并且我們還發(fā)現(xiàn):在循環(huán)的深處,返回的每一條記錄都要調(diào)用工具函數(shù)AboveThreshold()。我前面提到過,transactions表包含了200萬條記錄,而且其中1/7的記錄屬于我們要檢查的area。這樣,我們就調(diào)用了AboveThreshold()函數(shù)很多很多次。如果一個(gè)函數(shù)被調(diào)用了極多次,每一個(gè)非常小的單一修改都會(huì)因巨大的杠桿效應(yīng)而獲益頗豐。比如假設(shè)我們把一次調(diào)用的執(zhí)行時(shí)間從0.005秒降到了0.004秒。
媒體關(guān)注與評(píng)論
“有很多講述程序重構(gòu)的書,但一直缺少講述數(shù)據(jù)庫代碼重構(gòu)的書,直到本書出版為止。在StephaneFaroult的這本新書中有很多高級(jí)的SQL技術(shù),我一直在自己的工作中使用這些技術(shù)。我熱情地向大家推薦這本書。” ——MichaelBlaha,咨詢師,OMTAssociatesInc.“終于有了這樣一本書,它強(qiáng)調(diào)TSQL編寫者在數(shù)據(jù)庫總體性能上的作用,以及怎么來改進(jìn)這一情形。對(duì)于任何一位數(shù)據(jù)庫專業(yè)人士來說,只要你想要提升自己的查詢編寫能力,或者想要改進(jìn)別人寫的查詢,那么本書就是你的必讀之書?!薄 狣wayneKing,總裁,KRIDANConsulting“本書裝滿了寶貝。在放下本書之前,你一定會(huì)體驗(yàn)到驚喜。在本書中,F(xiàn)aroult先生慷慨地分享了他的那些豐富的經(jīng)歷和清晰的思維?!薄 猂oyOwens,數(shù)據(jù)庫開發(fā)人員,CBORDGroup,Inc
編輯推薦
《SQL應(yīng)用重構(gòu)》由機(jī)械工業(yè)出版社出版。
圖書封面
圖書標(biāo)簽Tags
無
評(píng)論、評(píng)分、閱讀與下載