出版時間:2010年1月 出版社:電子工業(yè)出版社 作者:Baron Schwartz,Peter Zaitsev,Vadim Tkachenko,Jeremy D.Zawodny,Arjen Lent,Derek J.Ballin 頁數(shù):560 譯者:王小東,李軍,康建勛
Tag標簽:無
前言
對于這本書,我們在頭腦里有好幾個目標。其中的大多數(shù)源于我們一直想要有一本在書架上尋找卻總是找不到的神話般完美的MySQL書,其他幾個目標來自于想把我們的經(jīng)驗分享給那些把MySQL用在他們環(huán)境中的用戶。我們不想讓這本書只是一本SQL入門書,不想讓這本書的書名隨意使用一些時限詞語來開始或結(jié)尾(例如“……只需30天”,“7天內(nèi)提高……”),也不想說服讀者什么。最主要的,我們希望這本書能幫助你把技能提高一個層次,用MySQL構(gòu)建出快速、可用的系統(tǒng)——它能解答類似這樣的問題:“我怎么才能搭建起一個MySQL服務(wù)器集群,它能處理數(shù)以百萬計的請求,哪怕有幾臺服務(wù)器宕機時,它仍然能正常提供服務(wù)?”我們編寫本書的著眼點不僅在于迎合 MySQL應(yīng)用開發(fā)人員的需求,還在于滿足MySQL管理員的嚴格要求,管理員需要不管開發(fā)人員和用戶怎么折騰,服務(wù)器都能掛在線上正常運行。如前所述,我們假定你已經(jīng)具備了一些MySQL的相關(guān)經(jīng)驗,比較理想的就是你已經(jīng)讀過一本MySQL方面的入門書。我們同樣也假定你具備一些常用的系統(tǒng)管理、網(wǎng)絡(luò)和 Unix風格操作系統(tǒng)等方面的經(jīng)驗。經(jīng)過修訂、擴充后的第二版對于第一版里的所有主題都作了更深入的講解,并增加了一些新的主題。這也部分地反映了自本書首次出版之后,MySQL世界發(fā)生的一些變化:MySQL現(xiàn)在已經(jīng)成為軟件中更大更復(fù)雜的一部分。如同其重要性一樣,它的普及度也提高了:MySQL社區(qū)變得更加龐大,更多的大企業(yè)把MySQL應(yīng)用到他們的關(guān)鍵業(yè)務(wù)系統(tǒng)中。自本書第一版發(fā)布以后,MySQL已被廣泛認同可作為企業(yè)級應(yīng)用。人們也越來越多地把MySQL用在互聯(lián)網(wǎng)應(yīng)用上,這些應(yīng)用若發(fā)生故障和其他問題都無法被掩飾過去,也不能被容忍。作為我們努力的結(jié)果,第二版的內(nèi)容著重點跟第一版略有不同。我們會像強調(diào)性能一樣,強調(diào)可用性和準確性,這部分由于我們自己也把MySQL用在那些運作著巨大金額的業(yè)務(wù)系統(tǒng)里。我們對Web應(yīng)用也有著切身體驗,MySQL在這方面正變得越來越普及。第二版里會談?wù)摰皆贛ySQL周邊擴展的世界,而這個世界在第一版編寫時還不存在。 我認識 Peter、Vadim和Arjen已經(jīng)有很長一段時間,見證了他們長久以來在自己項目上使用MySQL和為各類高標準客戶調(diào)優(yōu)MySQL服務(wù)器的歷史。另一方面,Baron為增強MySQL的功能編寫了許多客戶端軟件。作者們的專業(yè)背景清晰地反映在了徹底重寫《High Performance MySQL: Optimizations, Replication,Backups,and More》第二版的工作里。這本書不只告訴你如何優(yōu)化工作,從而能比以前更好地使用MySQL,作者們還做了大量額外的工作,親自編制執(zhí)行基準測試,并將結(jié)果發(fā)布出來以佐證他們的觀點。這些信息讓讀者可以借此獲悉許多很有價值的MySQL內(nèi)部工作機制——這在其他書中是難以得到的;同樣,這些信息也能幫助讀者避開那些在將來會引發(fā)糟糕性能的錯誤。我不但要向剛剛接觸MySQL服務(wù)器,正準備編寫第一個MySQL應(yīng)用的初學者推薦這本書,還要向富有經(jīng)驗的用戶推薦這本書,他們已經(jīng)對基于MySQL的應(yīng)用作過一些調(diào)優(yōu)的工作,現(xiàn)在正需要在這個方向上再前進“一小步”。-Michael Widenius2008年3月 在進入MySQL世界之前,先照例介紹一下MySQL的歷史(況且本書里也沒提到這些)。真正以MySQL為名的數(shù)據(jù)庫是從1994年開始開發(fā)的,并于1995年第一次呈現(xiàn)在小范圍的用戶面前,它的開發(fā)者剛好不是美國人,而是兩個瑞典人Michael Widenius 和 David Axmark。那時的MySQL還非常簡陋,除了在一個表上做一些Insert、Update、Delete和Select操作,恐怕沒有更多的功能給用戶使用。這種情況直到2001年左右發(fā)布3.23版的時候,才有了顯著的進步——它支持大多數(shù)的基本SQL操作了,而且還集成了我們現(xiàn)在熟識的 MyISAM和InnoDB存儲引擎。然后又是幾年不斷完善的過程,到了2004年10月,這個夯實基礎(chǔ)的過程到達了頂峰——4.1這個經(jīng)典版本發(fā)布了。次年10月,又一里程碑式的MySQL版本發(fā)布了,在新出的MySQL 5.0 里加入了游標、存儲過程、觸發(fā)器、視圖和事務(wù)的支持,準備進入中高端應(yīng)用領(lǐng)域。在5.0之后的版本里,MySQL明確地表現(xiàn)出邁向高性能數(shù)據(jù)庫的發(fā)展步伐。到今天,MySQL已經(jīng)上升到了600多萬的裝機量,著名的WordPress、phpBB都以MySQL為后臺數(shù)據(jù)庫,很多大型的WWW應(yīng)用例如Wikipedia、Google和Facebook,也都采用了MySQL作為它們的數(shù)據(jù)存儲系統(tǒng)。反觀國內(nèi),鑒于心照不宣的原因,MySQL的普及程度還不如SQL Server。就我這些年來的所見所聞而言,一直作為MySQL黃金搭檔的PHP都常常使用別的數(shù)據(jù)庫,更別提其他開發(fā)語言了。好在那些上規(guī)模企業(yè),尤其是外資企業(yè)里,多數(shù)明智的IT負責人在項目前期都會提議使用MySQL,原因之一是它是免費的,一般不會產(chǎn)生授權(quán)費用問題,原因之二是它足夠用了,不是嗎?你想要的增、刪、改、聯(lián)接(Joint)、嵌套查詢它都有;你想要的視圖、存儲過程、觸發(fā)器、事務(wù)它也有;如果你要集群,它也能提供。但是,使用MySQL是一回事,用好MySQL又是另外一回事。市面上更多的是關(guān)于MySQL開發(fā)的書籍,這些書籍的很多篇幅都花費在SQL語句的學習上。若要獲得關(guān)于MySQL性能提高方面的資料,我們只能在網(wǎng)上的各個論壇或博客上披沙揀金了,而本書則系統(tǒng)性地從各個方面講述一個高性能MySQL應(yīng)用應(yīng)該怎么來做。作者們都是這方面的行家里手,所以內(nèi)容也是全面、充實,無論是架構(gòu)師設(shè)計師、程序開發(fā)人員,還是系統(tǒng)管理員都能找到感興趣的方面。在閱讀正文前,最好能夠先讀一下作者精心編寫的前言部分,通過它把握整本書內(nèi)容的構(gòu)成方式和相互關(guān)聯(lián),之后,帶有目的性地閱讀本書會更富有成效。本書由李軍、王小東、康建勛三人合作翻譯完成,其中,康建勛翻譯第1章和第2章前31頁;王小東翻譯第2章的后17頁,以及第3章至第8章;李軍翻譯了序言、前言、第 9章至第14章、所有附錄,以及作者介紹、封面、封底等內(nèi)容,并撰寫了內(nèi)容簡介。翻譯的過程也是譯者與編輯、審閱人員之間交互的過程,在這個過程里,編輯徐定翔老師,審閱人金照林老師、柳安意老師給予了我們很大的幫助。如果說譯者是生產(chǎn)毛坯的工匠,那么他們就是把毛坯打磨成精品呈現(xiàn)給讀者的人,在此十分感謝他們!同樣地,我們也要感謝家人和朋友。我們把那些本來應(yīng)該陪伴家人出游,或者參加朋友聚會的時間,都“自私”地用在翻譯本書上了。他們都比較寬容,一句“到時要請客哦”就原諒了我們,謝謝他們的支持!最后,得向讀者們說聲抱歉,由于術(shù)業(yè)專攻不同、識見淺深有別之故,譯文中難免會有詰屈聱牙、詞不達意甚至疏誤之處,還請讀者不吝指正。譯者2009年12月
內(nèi)容概要
《高性能MySQL(第2版)》榮獲2009年Jolt圖書大獎,是不可多得的分享MySQL實用經(jīng)驗的圖書。它不但可以幫助MySQL初學者提高使用技巧,更為有經(jīng)驗的MySQL DBA指出了開發(fā)高性能MySQL應(yīng)用的途徑?!陡咝阅躆ySQL(第2版)》包含14章和4個附錄,內(nèi)容覆蓋MySQL系統(tǒng)架構(gòu)、設(shè)計應(yīng)用技巧、SQL語句優(yōu)化、服務(wù)器性能調(diào)優(yōu)、系統(tǒng)配置管理和安全設(shè)置、監(jiān)控分析,以及復(fù)制、擴展和備份/還原等主題,每一章的內(nèi)容自成體系,適合各領(lǐng)域技術(shù)人員作選擇性的閱讀。
書籍目錄
序 I前言 III第1章:MySQL架構(gòu) 11.1 MySQL的邏輯架構(gòu) 11.2 并發(fā)控制 31.3 事務(wù) 61.4 多版本并發(fā)控制 121.5 MySQL的存儲引擎 14第2章:尋找瓶頸:基準測試(Benchmarking)與性能分析(Profiling) 322.1 為什么要進行基準測試 332.2 基準測試策略 332.3 基準測試工具 422.4 基準測試樣例 442.5 性能分析(Profiling) 542.6 分析操作系統(tǒng) 76第3章:架構(gòu)優(yōu)化和索引 803.1 選擇優(yōu)化的數(shù)據(jù)類型 803.2 索引基礎(chǔ)知識 953.3 高性能索引策略 1063.4 索引實例研究 1313.5 索引和表維護 1363.6 正則化和非正則化 1393.7 加速ALTER TABLE 1453.8 對存儲引擎的說明 149第4章:查詢性能優(yōu)化 1524.1 基本原則:優(yōu)化數(shù)據(jù)訪問 1524.2 重構(gòu)查詢的方式 1574.3 查詢執(zhí)行基礎(chǔ)知識 1604.4 MySQL查詢優(yōu)化器的限制 1794.5 優(yōu)化特定類型的查詢 1884.6 查詢優(yōu)化提示 1954.7 用戶定義變量 198第5章:MySQL高級特性 2045.1 MySQL查詢緩存 2045.2 在MySQL中存儲代碼 2175.3 游標 2245.4 準備語句 2255.5 用戶自定義函數(shù) 2305.6 視圖 2315.7 字符集和排序規(guī)則 2375.8 全文搜索 2445.9 外鍵約束 2525.10 合并表和分區(qū) 2535.11 分布式(XA)事務(wù) 262第6章:優(yōu)化服務(wù)器設(shè)置 2656.1 配置基礎(chǔ)知識 2666.2 通用調(diào)優(yōu)原則 2716.3 MySQL I/O調(diào)優(yōu) 2816.4 MySQL并發(fā)調(diào)優(yōu) 2956.5 基于工作負載調(diào)優(yōu) 2986.6 每聯(lián)接(Per-Connection)設(shè)置調(diào)優(yōu) 304第7章:操作系統(tǒng)和硬件優(yōu)化 3057.1 什么限制了MySQL的性能 3067.2 如何為MySQL選擇CPU 3067.3 平衡內(nèi)存和磁盤資源 3097.4 為從服務(wù)器選擇硬件 3177.5 RAID性能優(yōu)化 3177.6 存儲區(qū)域網(wǎng)絡(luò)和網(wǎng)絡(luò)附加存儲 3257.7 使用多個磁盤卷 3267.8 網(wǎng)絡(luò)配置 3287.9 選擇操作系統(tǒng) 3307.10 選擇文件系統(tǒng) 3317.11 線程處理 3347.12 交換 3347.13 操作系統(tǒng)狀態(tài) 336第8章:復(fù)制 3438.1 復(fù)制概述 3438.2 創(chuàng)建復(fù)制 3478.3 揭示復(fù)制的真相 3558.4 復(fù)制拓撲 3628.5 復(fù)制和容量規(guī)劃 3768.6 復(fù)制管理和維護 3788.7 復(fù)制問題和解決方案 3888.8 復(fù)制有多快 4058.9 MySQL復(fù)制的未來 407第9章:伸縮性與高可用性 4099.1 術(shù)語 4109.2 MySQL的伸縮性 4129.3 負載平衡 4369.4 高可用性 447第10章:應(yīng)用層面的優(yōu)化 45710.1 應(yīng)用程序性能概述 45710.2 Web服務(wù)器的議題 46010.3 緩存 46310.4 擴展MySQL 47010.5 可替代的MySQL 471第11章:備份與還原 47211.1 概況 47311.2 要權(quán)衡的事項 47711.3 管理和備份二進制日志 48611.4 數(shù)據(jù)備份 48811.5 從備份中還原 49911.6 備份和還原的速度 51011.7 備份工具 51111.8 腳本化備份 518第12章:安全 52112.1 術(shù)語 52112.2 賬號的基本知識 52212.3 操作系統(tǒng)安全 54112.4 網(wǎng)絡(luò)安全 54212.5 數(shù)據(jù)加密 55012.6 在Chroot環(huán)境里使用MySQL 554第13章:MySQL服務(wù)器的狀態(tài) 55713.1 系統(tǒng)變量 55713.2 SHOW STATUS 55813.3 SHOW INNODB STATUS 56513.4 SHOW PROCESSLIST 57813.5 SHOW MUTEX STATUS 57913.6 復(fù)制的狀態(tài) 58013.7 INFORMATION_SCHEMA 581第14章:用于高性能MySQL的工具 58314.1 帶界面的工具 58314.2 監(jiān)控工具 58514.3 分析工具 59514.4 MySQL的輔助工具 59814.5 更多的信息來源 601附錄A:大文件傳輸 603附錄B:使用EXPLAIN 607附錄C:在MySQL里使用Sphinx 623附錄D:鎖的調(diào)試 650索引 659
圖書封面
圖書標簽Tags
無
評論、評分、閱讀與下載