數據庫系統需求分析報告 MySQL數據庫需求分析案例



文章插圖
數據庫系統需求分析報告 MySQL數據庫需求分析案例

文章插圖
前言
和其他數據庫系統相比,MySQL有點與眾不同,它的架構可以在多種不同場景中應用并發揮好的作用,但同時也會帶來一點選擇上的困難 。MySQL并不完美,卻足夠靈活,能夠適應高要求的環境,例如Web類應用 。同時,MySQL既可以嵌入到應用程序中,也可以支持數據倉庫、內容索引和部署軟件、高可用的冗余系統、在線事務處理系統(OLTP)等各種應用類型 。
成為一名架構師幾乎是所有程序員的夢想,然而在這大數據時代,少了MySQL數據庫的架構系統,也是不會有前途的~~~
今天,小編就帶來一篇高性能MySQL的秘籍,希望能幫到大家更好地學習 。
【數據庫系統需求分析報告 MySQL數據庫需求分析案例】全書共分為16章和6個附錄,內容涵蓋MySQL架構和歷史,基準測試和性能剖析,數據庫軟硬件性能優化,復制、備份和恢復、高可用與高可擴展性,以及云端的MySQL和MySQL相關工具等方面的內容 。
第一部分:概述
第一章:MySQL的架構和歷史
MySQL邏輯架構并發控制事務多版本并發控制MySQL的存儲引擎MySQL時間線(Timeline)MySQL的開發模式
第1章是非?;A的一章,在更深入地學習之前建議先熟悉一下這部分內容 。在有效地使用MySQL之前應當理解它是如何組織的 。本章解釋了 MySQL的架構及其存儲引擎的關鍵設計 。如果讀者還不太熟悉關于數據庫和事務的基礎知識,本章也可以帶來一點幫助 。如果之前已經對其他關系數據庫如Oracle比較熟悉,本章也可以幫助讀者了解MySQL的入門知識 。本章還包括了一點MySQL的歷史背景:MySQL ffi著時間的演進、最近的公司所有權更替,以及我們認為比較重要的內容 。
第二部分:打造堅實的基礎
第二章:MySQL基準測試
為什么需要基準測試基準測試的策略基準測試方法基準測試工具基準測試案例
第2章討論了基準測試的基礎,例如服務器可以處理的工作負載的類型、處理特定任務的速度等 ?;鶞蕼y試是一項至關重要的技能,可用手評估服務器在不同負莪下的表現,但也要明白在什么情況下基準測試不能發揮作用 。
第三章:服務器性能剖析
性能優化簡介對應用程序進行性能剖析剖析MySQL查詢診斷間歇性問題其他剖析工具
第3章介紹了我們常用于故障診斷和服務器性能問題分析的一種面向響應時間的方法 。該方法已經被證明可以解決我們曾碰到過的一些極為竦手的問題.當然也可以選擇修改我們所使用的方法(實際上我們的方法也是從Cary Millsap的方法修改而來的),但無論如何,至少不能沒有方法胡亂猜測 。
第四章:Schema與數據類型優化
選擇優化的數據類型MySQL schema設計中的陷阱范式和反范式緩存表和匯總表加快ALTER TABLE操作的速度
第4章涵蓋了不同數據類型的細節差別以及表設計的原則 。良好的schema設計原則是普遍適用的,但MySQL有它自己的實現細節要注意 。概括來說,盡可能保持任何東西小而簡單總是好的 。MySQL喜歡簡單,需要使用數據庫的人應該也同樣會喜歡簡單的原則 。
第五章:創建高性能的索引
索引基礎索引的優點高性能的索引策略索案例學習維護索引和表
第5章則展開討論了索引,這是數據庫的物理設計 。對于索引的深入理解和利用是高效使用MySQL的基礎,相信這一章會經常需要回頭翻看 。通過本章可以看到,索引是一個非常復雜的話題! MySQL和存儲引擎訪問數據的方式,加上索引的特性,使得索引成為一個影響數據訪問的有力而靈活的工作(無論數據是在磁盤中還是在內存中) 。
第六章:查詢性能優化
為什么查詢速度會慢慢查詢基礎:優化數據訪問重構查詢的方式查詢執行的基礎MySQL查詢優化器的局限性查詢優化器的提示(hint)優化特定類型的查詢案例學習
第6章則包含了分析MySQL的查詢是如何執行的,以及如何利用查詢優化器的話題 。該章也包含了大量常見類型查詢的例子,演示了MySQL是如何做好工作的,以及如何改寫查詢以利用MySQL的特性 。
第七章:MySQL高級特性
分區表視圖外鍵約束在MySQL內部存儲代碼游標綁定變量用戶自定義函數插件字符集和校對全文素引分布式(XA)事務查詢緩存
第7章則在MySQL基礎知識之外介紹了MySQL的高級特性是如何工作的 。這章的內容包括分區、存儲引擎、觸發器,以及字符集 。MySQL中這些特性的實現可能不同于其他數據庫,可能之前讀者并不清楚這些不同,因此理解它們對于性能可能會帶來新的收益 。
第三部分:配置應用程序
第八章:優化服務器設置
MySQL配置的工作原理什么不該做創建MySQL配置文件配置內存使用配置MySQL的I/O行為配置MySQL并發基于工作負載的配置完成基本配置安全和穩定的設置高級InnoDB設置
第8章介紹了如何配置MySQL,以便更好地利用硬件,達到更好的可靠性和魯棒性 。在閱讀完這一章節之后,你應該有了一個比默認設置好得多的服務器配置 。服務器應該更快更穩定了,并且除非運行出現了罕見的狀況,都應該沒有必要再去做優化配置的工作了 。
第九章:操作系統和硬件優化
什么限制了MySQL的性能如何為MySQL選擇CPU平衡內存和磁盤資源固態存儲為備庫選擇硬件RAID性能優化SAN和NAS使用多磁盤卷網絡配置選擇操作系統選擇文件系統選擇磁盤隊列調度策略線程內存交換區操作系統狀態
第9章解釋了如何讓操作系統和硬件工作得更好 。另外也深入討論了固態硬盤,為高可擴展性應用發揮更好的性能提供了硬件配置的建議 。為MySQL選擇和配置硬件,以及根據硬件配置MySQL,并不是什么神秘的藝術 。通常,對于大部分目標需要的都是相同的技巧和知識 。當然,也需要知道一些MySQL特有的特點 。
第四部分:作為基礎設施組件的MySQL
第十章:復制
復制概述配置復制復制的原理復制拓撲復制和容量規劃復制管理和維護復制的問題和解決方案復制有多快MySQL復制的高級特性其他復制技術
第10章討論了MySQL的殺手級特性:能夠設置多個服務器從一臺主服務器同步數據 。不幸的是,復制可能也是MySQL給很多用戶帶來困擾的一個特性 。但實際上不應該發生這樣的情況,本章將告訴你如何讓復制運行得更好 。
第十一章:可擴展的MySQL
什么是可擴展性擴展MySQL負裁均衡
第11章討論了什么是可擴展性(這和性能不是一回事),應用和系統為什么會無法擴展,該怎么改善擴展性 。如果能夠正確地處理,MySQL的可擴展性是足以應付任何需求的 。
第十二章:高可用性
什么是高可用性導致宕機的原因如何實現高可用性避免單點失效故障轉移和故障恢復
第12章講述的是和可擴展性相關但又完全不同的主題:如何保障MySQL穩定而正確地持續運行 ??梢酝ㄟ^減少宕機來獲得高可用性,這需要從以下兩個方面來思考:增加兩次故障之間的正常運行時間(MTBF),或者減少從故障中恢復的時間(MTTR) 。
第十三章:云端的MySQL
云的優點、缺點和相關誤解MySQL在云端的經濟價值云中的MySQL的可擴展性和高可用性四種基礎資源MySQL在云主機上的性能MySQL數據庫即服務(DBaaS)
第13章將告訴你當MySQL在云計算環境中運行時會有什么不同的事情發生 。在云端使用MySQL至少有兩種主流的方法:在云服務器上安裝MySQL,或者使用DBaaS服務 。MySQL能夠在云主機.上運行得很好,但云環境中的限制常常會導致更早需要進行數據拆分 。并且盡管云服務器看起來和你的物理硬件很相似,但可能性能和服務質量要更低 。
第十四章:應用層優化
常見問題Web服務器問題緩存拓展MySQLMySQL的替代品
第14章解釋了什么是全方位的優化(ul-stack optimization),就是從前端到后端的整體優化,從用戶體驗開始直到數據庫 。即使是世界上設計最好、最具可擴展性的架構,如果停電會導致徹底崩潰,無法抵御惡意攻擊,解決不了應用的bug和程序員的錯誤,以及其他一些災難場景,那就不是什么好的架構 。
第十五章:備份與恢復
為什么要備份定義恢復需求設計MySQL備份方案管理和備份二進制日志備份數據從備份中恢復備份和恢復工具備份腳本化
第15章討論了MySQL數據庫各種備份與恢復的場景 。這些策略可以幫助讀者減少在各種不可抗的硬件失效時的宕機時間,保證在各種災難下的數據最終可恢復 。
第十六章:MySQL用戶工具
接口工具命令行工具集SQL實用集監測工具
第16章探索了一些可以幫助用戶更有效地管理和監控MySQL服務器的工具,有些是開源的,也有些是商業的 。好的工具對管理MySQL至關重要 。推薦使用一些已經可用、廣泛測試過、流行的工具 。
書簽介紹
后記
最后,希望關于MySQL內部原理的知識能夠幫助大家解決本篇沒有覆蓋到的一些情況 。更希望朋友們能培養發現新問題的洞察力,能學習和實踐合理的方式來設計、維護和診斷基于MySQL的系統 。