MySQL性能調(diào)優(yōu)與架構(gòu)設(shè)計(jì)

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

前言

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

內(nèi)容概要

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

作者簡介

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

書籍目錄

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

章節(jié)摘錄

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

編輯推薦

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

圖書封面

圖書標(biāo)簽Tags

評論、評分、閱讀與下載


    MySQL性能調(diào)優(yōu)與架構(gòu)設(shè)計(jì) PDF格式下載


用戶評論 (總計(jì)7條)

 
 

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

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

京ICP備13047387號-7