MySQL性能調優(yōu)與架構設計

出版時間:2009年6月  出版社:電子工業(yè)出版社  作者:簡朝陽  頁數(shù):392  
Tag標簽:無  

前言

  我的DBA之路  第一次了解有數(shù)據(jù)庫這么一個軟件是在2000年下半年,我在某本書(太久遠不太記得書名了)中的一篇文章里面了解到有一種叫做數(shù)據(jù)庫的神奇軟件,可以幫助我們快速地實現(xiàn)大量數(shù)據(jù)的過濾和統(tǒng)計。然后我跑到圖書館苦苦尋覓與數(shù)據(jù)庫相關的書籍,最先進入我視線的是一本白色封皮講述Oracle的“大磚塊”,我拿在手上大概翻了一下,實在太沉重,放棄之,繼續(xù)尋找。最終找到一本關于 Foxpro 的書,看到也是關于數(shù)據(jù)庫的,而且較之前講 Oracle 的“大磚塊”薄了很多,于是非常興奮地借回去開始研究?! ?002年,我進入南京工業(yè)大學學習,由于有一點計算機基礎和基本的C語言編程知識,大一就進入了校大學生科學技術協(xié)會的電腦部,參與開發(fā)維護一個為校內(nèi)學生服務的小網(wǎng)站Foru(現(xiàn)在已經(jīng)不存在了)。在那里,我第一次接觸到Java 編程語言和MySQL 數(shù)據(jù)庫,如果沒有記錯的話,當時的 MySQL是3.2.*版。雖然當時已經(jīng)開始學習如何通過 Java 程序進行 MySQL 數(shù)據(jù)庫開發(fā),但主要精力還是放在了 Java 語言的學習上,對 MySQL 并沒有太深入的研究?! ?003年下半年,我進入學校一個非常有名的完全由學生自發(fā)組織的計算機愛好者組織:Mars Studio。Mars Studio的指導老師最初是由學校網(wǎng)絡中心的崔北亮老師擔任,主要任務是開發(fā)維護一個面向校內(nèi)學生的娛樂休閑網(wǎng)站“工大在線”,包括視頻和音樂的在線播放及下載服務,還有一個 BBS論壇(現(xiàn)在的玄武雅閣)等,以及為學校各個部門開發(fā)一些小網(wǎng)站。參與這些項目也算是勤工儉學,可以賺點生活費。當時的“工大在線”除了玄武雅閣論壇使用 Java + MySQL 之外,所有內(nèi)容都是基于ASP + Micosoft SQL Server 2000開發(fā)的。所以那時候還學會了使用Java和APS編寫網(wǎng)站應用,學會了MySQL的簡單維護,了解到數(shù)據(jù)庫中原來還有索引這么神奇的東西,同時也對Microsoft SQL Server有了一點了解。在Mars Studio一直待到大四搬離當時的校區(qū),回到市中心的新模范馬路本部。在Mars Studio的日子,是我進入現(xiàn)在公司(阿里巴巴)之前計算機水平提升最快的時候,也正是那時候給我現(xiàn)在的工作打下了比較扎實的基礎。在那段時間里,我跟著Sailing一起學 Java,跟著“笨小孩”學 ASP + MS SQL Server,跟著崔北亮老師學Windows下的Web服務搭建,跟著尹晨姐學 Solaris 基本管理……  2005年底,我開始接觸商業(yè)數(shù)據(jù)庫中絕對的王者:Oracle。深埋心底的對數(shù)據(jù)庫的強烈興趣再一次被勾起。從那時候開始,我基本已經(jīng)將自己的職業(yè)發(fā)展方向鎖定為 DBA 了。我非常幸運,一畢業(yè)就如愿以償?shù)貜氖铝薉BA 的工作,而且是在國內(nèi)頂級的 DBA 團隊:阿里巴巴 DBA Team。隨后的兩年多時間里工作一直與Oracle 相關,主要從事項目開發(fā)中的數(shù)據(jù)庫相關支持及調優(yōu)。在做Oracle相關工作的前一年多里,我對MySQL數(shù)據(jù)庫并沒有深入的研究,基本處于關注狀態(tài)?! ?007年底開始將研究重點轉向MySQL數(shù)據(jù)庫。主要包括MySQL 5.0和之前版本之間差異的研究,MySQL數(shù)據(jù)庫調優(yōu)及利用 MySQL 數(shù)據(jù)庫搭建企業(yè)級高可用可擴展的分布式數(shù)據(jù)庫集群系統(tǒng)?! ≡诎⒗锇桶蛷氖碌腛racle相關的工作讓我對企業(yè)級數(shù)據(jù)庫高可用架構方面有了較深的認識,同時也積累了大量的主機(PC Server 和小型機)和存儲的使用經(jīng)驗。同時也深深體會到了在如今這樣一個互聯(lián)網(wǎng)信息高度膨脹的環(huán)境中,集中式數(shù)據(jù)庫在很多應用場景中所遇到的擴展局限已經(jīng)越來越明顯。而且,商業(yè)軟件和中高端硬件設備高昂的價格也給很多互聯(lián)網(wǎng)公司帶來了較大的壓力。正是這兩個主要因素,造就了開源數(shù)據(jù)庫中的王者:MySQL 越來越受到大家的青睞。  這本書講了什么  本書中的大部分內(nèi)容主要面向有一定的 MySQL 基礎或至少有一定SQL語言基礎的讀者朋友。全書包括基礎、性能優(yōu)化和架構設計三篇內(nèi)容?! 』A篇介紹了MySQL軟件的基礎知識、架構組成、存儲引擎、安全管理及基本的備份恢復知識。主要希望讀者朋友能夠在整體上對MySQL數(shù)據(jù)庫有一個較深的認識,方便大家在性能調優(yōu)及架構設計方面更容易作出決策?! ⌒阅軆?yōu)化篇內(nèi)容從影響 MySQL 數(shù)據(jù)庫應用系統(tǒng)性能的因素開始,針對性地對各個影響因素進行調優(yōu)分析。如 MySQL Schema 設計的技巧,Query 語句的性能優(yōu)化方式方法及MySQL Server中SQL層和存儲引擎層的優(yōu)化思路??紤]到任何數(shù)據(jù)庫系統(tǒng)中,鎖定機制都對性能有很大影響,所以還分析了 MySQL 數(shù)據(jù)庫中主要存儲引擎的鎖定機制?! 〖軜嬙O計篇則主要以設計一個高可用可擴展的分布式企業(yè)級數(shù)據(jù)庫集群環(huán)境為目標,分析介紹了通過 MySQL 實現(xiàn)這一目標的多種架構方式。主要包括可擴展和高可用兩部分內(nèi)容,可擴展部分包括設計原則、Replication 的利用、數(shù)據(jù)切分、如何使用 Cache 和 Search,以及 NDB Cluster等內(nèi)容。高可用則主要包括 Dual Master、DRBD、NDB Cluster,以及系統(tǒng)監(jiān)控等方面?! ≡撊绾伍喿x本書  或許很多讀者朋友都有這種體會:要想真正學會并掌握一門技術,就一定要有自己思考并實踐的過程。所以本書中的大部分內(nèi)容主要是提供一個分析思路和解決問題的思路,而沒有太多的具體操作記錄,主要以引導讀者朋友思考、體會和實踐為目的,本書不是一本技巧集合或操作手冊類的書籍?! ∽鳛橐粋€MySQL使用者的讀者朋友在閱讀本書的時候,最好能夠有一個自己可以實踐的MySQL測試環(huán)境,可以通過自己動手實踐來加深認識,真正理解?! 《鴮τ谀切┕芾韺踊蚴羌夹g決策者來說,可能并沒有太多時間進行大量的測試和實踐,對于這樣的讀者來說,學習到解決問題的思路也就夠了。  致謝  在這本書的編寫過程中,得到了家人、朋友和同事的支持與幫助,所以在這里我衷心地感謝大家。感謝家人對我的支持與鼓勵,感謝馮大輝、陳吉平、馮春培、翟振興、葉金榮、吳詩展幾位朋友為本書作序推薦,以及在我寫書過程中給予幫助。感謝我所在的 DBA Team中的陳棟、張瑞、童家旺、王濤、羅春、陳立、鄭勇斌、趙圣強、范鑫、鄭隱、唐成、梅慶、周黎艷、廖鑫和金官丁,大家在工作中給了我大量的支持與幫助。感謝兄弟公司 DBA Team 中的所有 DBA 兄弟們對我的幫助與支持,尤其是周光輝和鐘赟對本書的重要建議。此外還要感謝各位網(wǎng)友在這本書編寫過程中給我提出了大量非常有價值的意見和建議,主要包括吳詩展(百度)、葉金榮(搜狐)、吳捷(第九城市)、張宴(金山)、王坤(琥珀網(wǎng))、田熠慶(土豆網(wǎng))、姚尚朗及其他我還不知道姓名的網(wǎng)友?! ≡诒緯木帉戇^程中,博文視點的各位編輯一直都在給予我各種幫助和支持,特別是周筠老師、徐定翔、楊繡國和楊小勤等幾位編輯,在此特予感謝!  最后感謝曾經(jīng)在 Mars Studio 中的崔北亮、唐一丁、蔡永航、曾軍、陳剛、羅修杰、陳征、李杰、陳永偉、徐小慧和劉夢歡及其他所有同學,是你們的幫助與支持讓我得到了更快的成長。

內(nèi)容概要

  《MySQL性能調優(yōu)與架構設計》以 MySQL 數(shù)據(jù)庫的基礎及維護為切入點,重點介紹了 MySQL 數(shù)據(jù)庫應用系統(tǒng)的性能調優(yōu),以及高可用可擴展的架構設計?! ∪珪卜?篇,基礎篇介紹了MySQL軟件的基礎知識、架構組成、存儲引擎、安全管理及基本的備份恢復知識。性能優(yōu)化篇從影響 MySQL 數(shù)據(jù)庫應用系統(tǒng)性能的因素開始,針對性地對各個影響因素進行調優(yōu)分析。如 MySQL Schema 設計的技巧,Query 語句的性能優(yōu)化方式方法及MySQL Server中SQL層和存儲引擎層的優(yōu)化思路。同時還分析了 MySQL 數(shù)據(jù)庫中主要存儲引擎的鎖定機制。架構設計篇則主要以設計一個高可用可擴展的分布式企業(yè)級數(shù)據(jù)庫集群環(huán)境為目標,分析介紹了通過 MySQL 實現(xiàn)這一目標的多種架構方式。主要包括可擴展和高可用兩部分內(nèi)容,可擴展部分包括設計原則、Replication 的利用、數(shù)據(jù)切分、如何使用 Cache 和 Search,以及 NDB Cluster等內(nèi)容。高可用則主要包括 Dual Master、DRBD、NDB Cluster,以及系統(tǒng)監(jiān)控等方面?! ”緯饕嫦蛴幸欢ǖ?MySQL 基礎或至少有一定SQL語言基礎的讀者朋友。

作者簡介

  簡朝陽,畢業(yè)于南京工業(yè)大學管理科學與工程學院,管理學學士。擅長MySQL & Oracle數(shù)據(jù)庫應用系統(tǒng)的性能調優(yōu)與高可用可擴展架構設計,有一定的Java 和C語言基礎。目前就職于阿里巴巴(中國)網(wǎng)絡技術有限公司,曾參與過公司多個核心數(shù)據(jù)庫應用系統(tǒng)的設計與實施,目前主要負責 MySQL 數(shù)據(jù)庫應用系統(tǒng)的架構設計與相關維護工作?;钴S于 iMySQLer 數(shù)據(jù)庫論壇 和 MySQL 郵件組,歡迎大家以 Open 的心態(tài)一起分享MySQL數(shù)據(jù)庫方面的經(jīng)驗心得。

書籍目錄

"第1篇 基礎篇 1第1章 MySQL基本介紹 31.0 引言 41.1 MySQL Server簡介 41.2 MySQL與其他數(shù)據(jù)庫的簡單比較 61.3 MySQL 的主要適用場景 81.4 小結 9第2章 MySQL架構組成 112.0 引言 122.1 MySQL物理文件組成 122.2 MySQL Server系統(tǒng)架構 162.3 MySQL 自帶工具使用介紹 222.4 小結 26第3章 MySQL存儲引擎簡介 273.0 引言 283.1 MySQL存儲引擎概述 283.2 MyISAM存儲引擎簡介 293.3 InnoDB存儲引擎簡介 303.4 NDB Cluster 存儲引擎簡介 323.5 其他存儲引擎介紹 343.6 小結 37第4章 MySQL安全管理 394.0 引言 404.1 數(shù)據(jù)庫系統(tǒng)安全相關因素 404.2 MySQL 權限系統(tǒng)介紹 434.3 MySQL 訪問授權策略 544.4 安全設置注意事項 554.5 小結 57第5章 MySQL備份與恢復 595.0 引言 605.1 數(shù)據(jù)庫備份使用場景 605.2 邏輯備份與恢復測試 615.3 物理備份與恢復測試 685.4 備份策略的設計思路 755.5 小結 76第2篇 性能優(yōu)化篇 77第6章 影響MySQL Server性能的相關因素 796.0 引言 806.1 商業(yè)需求對性能的影響 806.2 系統(tǒng)架構及實現(xiàn)對性能的影響 836.3 Query語句對系統(tǒng)性能的影響 896.4 Schema設計對系統(tǒng)的性能影響 966.5 硬件環(huán)境對系統(tǒng)性能的影響 996.6 小結 102第7章 MySQL數(shù)據(jù)庫鎖定機制 1037.0 引言 1047.1 MySQL鎖定機制簡介 1047.2 各種鎖定機制分析 1067.3 合理利用鎖機制優(yōu)化MySQL 1177.4 小結 120第8章 MySQL數(shù)據(jù)庫Query的優(yōu)化 1218.0 引言 1228.1 理解MySQL的Query Optimizer 1228.2 Query 語句優(yōu)化基本思路和原則 1238.3 充分利用 Explain 和 Profiling 1308.4 合理設計并利用索引 1368.5 Join的實現(xiàn)原理及優(yōu)化思路 1498.6 ORDER BY、GROUP BY和DISTINCT的優(yōu)化 1558.7 小結 167第9章 MySQL數(shù)據(jù)庫Schema 設計的性能優(yōu)化 1699.0 引言 1709.1 高效的模型設計 1709.2 合適的數(shù)據(jù)類型 1769.3 規(guī)范的對象命名 1809.4 小結 181第10章 MySQL Server性能優(yōu)化 18310.0 引言 18410.1 MySQL安裝優(yōu)化 18410.2 MySQL日志設置優(yōu)化 18810.3 Query Cache 優(yōu)化 19210.4 MySQL Server 其他常用優(yōu)化 19610.5 小結 202第11章 常用存儲引擎優(yōu)化 20311.0 引言 20411.1 MyISAM存儲引擎優(yōu)化 20411.2 InnoDB 存儲引擎優(yōu)化 21111.3 小結 227第3篇 架構設計篇 229第12章 MySQL可擴展設計的基本原則 23112.0 引言 23212.1 什么是可擴展性 23212.2 事務相關性最小化原則 23412.3 數(shù)據(jù)一致性原則 23512.4 高可用及數(shù)據(jù)安全原則 23712.5 小結 237第13章 可擴展性設計之 MySQL Replication 23913.0 引言 24013.1 Replication 對可擴展性設計的意義 24013.2 Replication 機制的實現(xiàn)原理 24113.3 Replication常用架構 24413.4 Replication 搭建實現(xiàn) 24913.5 小結 255第14章 可擴展性設計之數(shù)據(jù)切分 25714.0 引言 25814.1 何謂數(shù)據(jù)切分 25814.2 數(shù)據(jù)的垂直切分 25914.3 數(shù)據(jù)的水平切分 26114.4 垂直與水平聯(lián)合切分的使用 26314.5 數(shù)據(jù)切分及整合方案 26514.6 數(shù)據(jù)切分與整合中可能存在的問題 27114.7 小結 273第15章 可擴展性設計之Cache與Search的利用 27515.0 引言 27615.1 可擴展設計的數(shù)據(jù)庫之外延伸 27615.2 合理利用第三方Cache解決方案 27715.3 自行實現(xiàn)Cache服務 28415.4 利用Search實現(xiàn)高效的全文檢索 28515.5 利用分布式并行計算實現(xiàn)大數(shù)據(jù)量的高性能運算 28715.6 小結 288第16章 MySQL Cluster 28916.0 引言 29016.1 MySQL Cluster介紹 29016.2 MySQL Cluster環(huán)境搭建 29216.3 MySQL Cluster配置詳細介紹(config.ini) 29816.4 MySQL Cluster基本管理與維護 30416.5 基本優(yōu)化思路 30716.6 小結 308第17章 高可用設計思路及方案 30917.0 引言 31017.1 利用 Replication 來實現(xiàn)高可用架構 31017.2 利用MySQL Cluster實現(xiàn)整體高可用 31617.3 利用DRBD保證數(shù)據(jù)的高安全可靠 32017.4 其他高可用設計方案 32317.5 各種高可用方案的利弊比較 32617.6 小結 327第18章 高可用設計之MySQL監(jiān)控 32918.0 引言 33018.1 監(jiān)控系統(tǒng)設計 33018.2 健康狀態(tài)監(jiān)控 33218.3 性能狀態(tài)監(jiān)控 33518.4 常用開源監(jiān)控軟件 34218.5 小結 344附錄A 實驗測試Schema創(chuàng)建腳本 345附錄B MySQL部分系統(tǒng)參數(shù)說明及設置建議 349附錄C MySQL部分狀態(tài)說明 373索引 389"

章節(jié)摘錄

  第2章 MySQL架構組成  2.0 引言  麻雀雖小,五臟俱全。MySQL雖然以簡單著稱,但其內(nèi)部結構并不簡單。本章從MySQL物理組成、邏輯組成,以及相關工具幾個角度來介紹MySQL的整體架構,希望能夠讓讀者對MySQL有一個更全面深入的了解?! ?.1 MySQL物理文件組成  2.1.1 日志文件  1.錯誤日志:Error Log  錯誤日志記錄了MyQL Server運行過程中所有較為嚴重的警告和錯誤信息,以及MySQLServer每次啟動和關閉的詳細信息。在默認情況下,系統(tǒng)記錄錯誤日志的功能是關閉的,錯誤信息被輸出到標準錯誤輸出(stderr),如果要開啟系統(tǒng)記錄錯誤日志的功能,須要在啟動時開啟-log-error選項。錯誤日志默認存放在數(shù)據(jù)目錄下,以hostname.err命名。但是可以使用命令:-log-error[=file_name]修改其存放目錄和文件名。  為了方便維護,有時候會希望將錯誤日志中的內(nèi)容做備份并重新開始記錄,這時候就可以利用MySQL的FLUSH LOGS命令來告訴MySQL備份舊日志文件并生成新的日志文件。備份文件名以“.old”結尾。

編輯推薦

  支付寶架構師馮大輝、淘寶首席DBA陳吉平、阿里巴巴首席DBA馮春培、網(wǎng)易高級DBA翟振興、搜狐高級DBA葉金榮、百度高級DBA吳詩展等6位數(shù)據(jù)庫專家作序推薦  初級DBA到LAMP架構設計師必備利器  剖析高性能高可用MySQL調優(yōu)方法  探索低成本數(shù)據(jù)庫系統(tǒng)構建之道

圖書封面

圖書標簽Tags

評論、評分、閱讀與下載


    MySQL性能調優(yōu)與架構設計 PDF格式下載


用戶評論 (總計7條)

 
 

  •   618搞活動搶的,很實惠,吼吼~~
  •   其中講的專業(yè)性的東東,還行。
  •   趁優(yōu)惠大量購書
  •   提高數(shù)據(jù)庫設計
  •   很適合剛入門的學習
  •   好書一本,誰看誰知道
  •   感覺內(nèi)容很多 沒有浪費
 

250萬本中文圖書簡介、評論、評分,PDF格式免費下載。 第一圖書網(wǎng) 手機版

京ICP備13047387號-7