1. 程式人生 > >《高效能MySQL(第3版)》PDF免費下載

《高效能MySQL(第3版)》PDF免費下載

《高效能MySQL(第3版)》PDF

本書是MySQL 領域的經典之作,擁有廣泛的影響力。第3 版更新了大量的內容,不但涵蓋了最新MySQL5.5版本的新特性,也講述了關於固態盤、高可擴充套件性設計和雲端計算環境下的資料庫相關的新內容,原有的基準測試和效能優化部分也做了大量的擴充套件和補充。全書共分為16章和6 個附錄,內容涵蓋MySQL架構和歷史,基準測試和效能剖析,資料庫軟硬體效能優化,複製、備份和恢復,高可用與高可擴充套件性,以及雲端的MySQL和MySQL相關工具等方面的內容。每一章都是相對獨立的主題,讀者可以有選擇性地單獨閱讀。

本書不但適合資料庫管理員(DBA)閱讀,也適合開發人員參考學習。不管是資料庫新手還是專家,相信都能從本書有所收穫。

連結https://pan.baidu.com/s/1SYUrr-lHJHNahAZ7yKAUsg
提取碼:fly5

免費科學上網工具推薦 https://www.zybuluo.com/buzhimingyue/note/1316517

圖書目錄

推薦序
前言
第1章 MySQL 架構與歷史
1.1 MySQL 邏輯架構
1.1.1 連線管理與安全性
1.1.2 優化與執行
1.2 併發控制
1.2.1 讀寫鎖
1.2.2 鎖粒度
1.3 事務
1.3.1 隔離級別
1.3.2 死鎖
1.3.3 事務日誌
1.3.4 MySQL 中的事務
1.4 多版本併發控制
1.5 MySQL 的儲存引擎
1.5.1 InnoDB 儲存引擎
1.5.2 MyISAM 儲存引擎
1.5.3 MySQL 內建的其他儲存引擎
1.5.4 第三方儲存引擎
1.5.5 選擇合適的引擎
1.5.6 轉換表的引擎
1.6 MySQL 時間線(Timeline)
1.7 MySQL 的開發模式
1.8 總結

第2章 MySQL 基準測試
2.1 為什麼需要基準測試
2.2 基準測試的策略
2.2.1 測試何種指標
2.3 基準測試方法
2.3.1 設計和規劃基準測試
2.3.2 基準測試應該執行多長時間
2.3.3 獲取系統性能和狀態
2.3.4 獲得準確的測試結果
2.3.5 執行基準測試並分析結果
2.3.6 繪圖的重要性
2.4 基準測試工具
2.4.1 整合式測試工具
2.4.2 單元件式測試工具
2.5 基準測試案例
2.5.1 http_load
2.5.2 MySQL 基準測試套件 .
2.5.3 sysbench
2.5.4 資料庫測試套件中的dbt2 TPC-C 測試
2.5.5 Percona 的TPCC-MySQL 測試工具
2.6 總結

第3章 伺服器效能剖析
3.1 效能優化簡介
3.1.1 通過效能剖析進行優化
3.1.2 理解效能剖析
3.2 對應用程式進行效能剖析
3.2.1 測量PHP 應用程式
3.3 剖析MySQL 查詢
3.3.1 剖析伺服器負載
3.3.2 剖析單條查詢
3.3.3 使用效能剖析
3.4 診斷間歇性問題
3.4.1 單條查詢問題還是伺服器問題
3.4.2 捕獲診斷資料
3.4.3 一個診斷案例
3.5 其他剖析工具
3.5.1 使用USER_STATISTICS 表
3.5.2 使用strace
3.6 總結

第4章 Schema 與資料型別優化
4.1 選擇優化的資料型別
4.1.1 整數型別
4.1.2 實數型別
4.1.3 字串型別
4.1.4 日期和時間型別
4.1.5 位資料型別
4.1.6 選擇識別符號(identifier)
4.1.7 特殊型別資料
4.2 MySQL schema 設計中的陷阱
4.3 正規化和反正規化
4.3.1 正規化的優點和缺點
4.3.2 反正規化的優點和缺點 .
4.3.3 混用正規化化和反正規化化
4.4 快取表和彙總表
4.4.1 物化檢視
4.4.2 計數器表
4.5 加快ALTER TABLE 操作的速度
4.5.1 只修改.frm 檔案
4.5.2 快速建立MyISAM 索引
4.6 總結

第5章 建立高效能的索引
5.1 索引基礎
5.1.1 索引的型別
5.2 索引的優點
5.3 高效能的索引策略
5.3.1 獨立的列
5.3.2 字首索引和索引選擇性
5.3.3 多列索引
5.3.4 選擇合適的索引列順序
5.3.5 聚簇索引
5.3.6 覆蓋索引
5.3.7 使用索引掃描來做排序
5.3.8 壓縮(字首壓縮)索引
5.3.9 冗餘和重複索引
5.3.10 未使用的索引
5.3.11 索引和鎖
5.4 索引案例學習
5.4.1 支援多種過濾條件
5.4.2 避免多個範圍條件
5.4.3 優化排序
5.5 維護索引和表
5.5.1 找到並修復損壞的表 .
5.5.2 更新索引統計資訊
5.5.3 減少索引和資料的碎片
5.6 總結

第6章 查詢效能優化
6.1 為什麼查詢速度會慢
6.2 慢查詢基礎:優化資料訪問
6.2.1 是否向伺服器請求了不需要的資料
6.2.2 MySQL 是否在掃描額外的記錄
6.3 重構查詢的方式
6.3.1 一個複雜查詢還是多個簡單查詢
6.3.2 切分查詢
6.3.3 分解關聯查詢
6.4 查詢執行的基礎
6.4.1 MySQL 客戶端/ 伺服器通訊協議
6.4.2 查詢快取
6.4.3 查詢優化處理
6.4.4 查詢執行引擎
6.4.5 返回結果給客戶端
6.5 MySQL 查詢優化器的侷限性
6.5.1 關聯子查詢
6.5.2 UNION 的限制
6.5.3 索引合併優化
6.5.4 等值傳遞
6.5.5 並行執行
6.5.6 雜湊關聯
6.5.7 鬆散索引掃描
6.5.8 最大值和最小值優化 .
6.5.9 在同一個表上查詢和更新
6.6 查詢優化器的提示(hint)
6.7 優化特定型別的查詢
6.7.1 優化COUNT() 查詢
6.7.2 優化關聯查詢
6.7.3 優化子查詢
6.7.4 優化GROUP BY 和DISTINCT
6.7.5 優化LIMIT 分頁
6.7.6 優化SQL_CALC_FOUND_ROWS
6.7.7 優化UNION 查詢
6.7.8 靜態查詢分析
6.7.9 使用使用者自定義變數 .
6.8 案例學習
6.8.1 使用MySQL 構建一個隊列表
6.8.2 計算兩點之間的距離 .
6.8.3 使用使用者自定義函式 .
6.9 總結

第7章 MySQL 高階特性
7.1 分割槽表
7.1.1 分割槽表的原理
7.1.2 分割槽表的型別
7.1.3 如何使用分割槽表
7.1.4 什麼情況下會出問題 .
7.1.5 查詢優化
7.1.6 合併表
7.2 檢視
7.2.1 可更新檢視
7.2.2 檢視對效能的影響
7.2.3 檢視的限制
7.3 外來鍵約束
7.4 在MySQL 內部儲存程式碼
7.4.1 儲存過程和函式
7.4.2 觸發器
7.4.3 事件
7.4.4 在儲存程式中保留註釋
7.5 遊標
7.6 繫結變數
7.6.1 繫結變數的優化
7.6.2 SQL 介面的繫結變數
7.6.3 繫結變數的限制
7.7 使用者自定義函式
7.8 外掛
7.9 字符集和校對
7.9.1 MySQL 如何使用字符集
7.9.2 選擇字符集和校對規則
7.9.3 字符集和校對規則如何影響查詢
7.10 全文索引
7.10.1 自然語言的全文索引
7.10.2 布林全文索引
7.10.3 MySQL5.1 中全文索引的變化
7.10.4 全文索引的限制和替代方案
7.10.5 全文索引的配置和優化
7.11 分散式(XA)事務
7.11.1 內部XA 事務
7.11.2 外部XA 事務
7.12 查詢快取
7.12.1 MySQL 如何判斷快取命中
7.12.2 查詢快取如何使用記憶體
7.12.3 什麼情況下查詢快取能發揮作用
7.12.4 如何配置和維護查詢快取
7.12.5 InnoDB 和查詢快取 .
7.12.6 通用查詢快取優化
7.12.7 查詢快取的替代方案
7.13 總結

第8章 優化伺服器設定
8.1 MySQL 配置的工作原理
8.1.1 語法、作用域和動態性
8.1.2 設定變數的副作用
8.1.3 入門
8.1.4 通過基準測試迭代優化
8.2 什麼不該做
8.3 建立MySQL 配置檔案
8.3.1 檢查MySQL 伺服器狀態變數
8.4 配置記憶體使用
8.4.1 MySQL 可以使用多少記憶體?
8.4.2 每個連線需要的記憶體 .
8.4.3 為作業系統保留記憶體 .
8.4.4 為快取分配記憶體
8.4.5 InnoDB 緩衝池(Buffer Pool)
8.4.6 MyISAM 鍵快取(Key Caches)
8.4.7 執行緒快取
8.4.8 表快取(Table Cache)
8.4.9 InnoDB 資料字典(Data Dictionary)
8.5 配置MySQL 的I/O 行為
8.5.1 InnoDB I/O 配置
8.5.2 MyISAM 的I/O 配置 .
8.6 配置MySQL 併發 .
8.6.1 InnoDB 併發配置
8.6.2 MyISAM 併發配置
8.7 基於工作負載的配置
8.7.1 優化BLOB 和TEXT 的場景
8.7.2 優化排序(Filesorts).
8.8 完成基本配置
8.9 安全和穩定的設定
8.10 高階InnoDB 設定
8.11 總結

第9章 作業系統和硬體優化
9.1 什麼限制了MySQL 的效能
9.2 如何為MySQL 選擇CPU
9.2.1 哪個更好:更快的CPU 還是更多的CPU
9.2.2 CPU 架構
9.2.3 擴充套件到多個CPU 和核心
9.3 平衡記憶體和磁碟資源
9.3.1 隨機I/O 和順序I/O
9.3.2 快取,讀和寫
9.3.3 工作集是什麼
9.3.4 找到有效的記憶體/ 磁碟比例
9.3.5 選擇硬碟
9.4 固態儲存
9.4.1 快閃記憶體概述
9.4.2 快閃記憶體技術
9.4.3 快閃記憶體的基準測試
9.4.4 固態硬碟驅動器(SSD)
9.4.5 PCIe 儲存裝置
9.4.6 其他型別的固態儲存 .
9.4.7 什麼時候應該使用快閃記憶體
9.4.8 使用Flashcache
9.4.9 優化固態儲存上的MySQL
9.5 為備庫選擇硬體
9.6 RAID 效能優化
9.6.1 RAID 的故障轉移、恢復和映象
9.6.2 平衡硬體RAID 和軟體RAID
9.6.3 RAID 配置和快取
9.7 SAN 和NAS
9.7.1 SAN 基準測試
9.7.2 使用基於NFS 或SMB 的SAN
9.7.3 MySQL 在SAN 上的效能
9.7.4 應該用SAN 嗎
9.8 使用多磁碟卷
9.9 網路配置
9.10 選擇作業系統
9.11 選擇檔案系統
9.12 選擇磁碟佇列排程策略
9.13 執行緒
9.14 記憶體交換區
9.15 作業系統狀態
9.15.1 如何閱讀vmstat 的輸出
9.15.2 如何閱讀iostat 的輸出
9.15.3 其他有用的工具
9.15.4 CPU 密集型的機器
9.15.5 I/O 密集型的機器
9.15.6 發生記憶體交換的機器
9.15.7 空閒的機器
9.16 總結

第10章 複製
10.1 複製概述
10.1.1 複製解決的問題
10.1.2 複製如何工作
10.2 配置複製
10.2.1 建立複製賬號
10.2.2 配置主庫和備庫
10.2.3 啟動複製
10.2.4 從另一個伺服器開始複製
10.2.5 推薦的複製配置
10.3 複製的原理
10.3.1 基於語句的複製
10.3.2 基於行的複製
10.3.3 基於行或基於語句:哪種更優
10.3.4 複製檔案
10.3.5 傳送複製事件到其他備庫
10.3.6 複製過濾器
10.4 複製拓撲
10.4.1 一主庫多備庫
10.4.2 主動- 主動模式下的主- 主複製
10.4.3 主動- 被動模式下的主- 主複製
10.4.4 擁有備庫的主- 主結構
10.4.5 環形複製
10.4.6 主庫、分發主庫以及備庫
10.4.7 樹或金字塔形
10.4.8 定製的複製方案
10.5 複製和容量規劃
10.5.1 為什麼複製無法擴充套件寫操作
10.5.2 備庫什麼時候開始延遲
10.5.3 規劃冗餘容量
10.6 複製管理和維護
10.6.1 監控複製
10.6.2 測量備庫延遲
10.6.3 確定主備是否一致
10.6.4 從主庫重新同步備庫
10.6.5 改變主庫
10.6.6 在一個主- 主配置中交換角色
10.7 複製的問題和解決方案
10.7.1 資料損壞或丟失的錯誤
10.7.2 使用非事務型表
10.7.3 混合事務型和非事務型表
10.7.4 不確定語句
10.7.5 主庫和備庫使用不同的儲存引擎
10.7.6 備庫發生資料改變
10.7.7 不唯一的伺服器ID .
10.7.8 未定義的伺服器ID .
10.7.9 對未複製資料的依賴性
10.7.10 丟失的臨時表
10.7.11 不復制所有的更新 .
10.7.12 InnoDB 加鎖讀引起的鎖爭用
10.7.13 在主- 主複製結構中寫入兩臺主庫
10.7.14 過大的複製延遲
10.7.15 來自主庫的過大的包
10.7.16 受限制的複製頻寬 .
10.7.17 磁碟空間不足
10.7.18 複製的侷限性
10.8 複製有多快
10.9 MySQL 複製的高階特性
10.10 其他複製技術
10.11 總結

第11章 可擴充套件的MySQL
11.1 什麼是可擴充套件性
11.1.1 正式的可擴充套件性定義
11.2 擴充套件MySQL
11.2.1 規劃可擴充套件性
11.2.2 為擴充套件贏得時間
11.2.3 向上擴充套件
11.2.4 向外擴充套件
11.2.5 通過多例項擴充套件
11.2.6 通過叢集擴充套件
11.2.7 向內擴充套件
11.3 負載均衡
11.3.1 直接連線
11.3.2 引入中介軟體
11.3.3 一主多備間的負載均衡
11.4 總結

第12章 高可用性
12.1 什麼是高可用性
12.2 導致宕機的原因
12.3 如何實現高可用性
12.3.1 提升平均失效時間(MTBF)
12.3.2 降低平均恢復時間(MTTR)
12.4 避免單點失效
12.4.1 共享儲存或磁碟複製
12.4.2 MySQL 同步複製
12.4.3 基於複製的冗餘
12.5 故障轉移和故障恢復
12.5.1 提升備庫或切換角色
12.5.2 虛擬IP 地址或IP 接管
12.5.3 中介軟體解決方案
12.5.4 在應用中處理故障轉移
12.6 總結

第13章 雲端的MySQL
13.1 雲的優點、缺點和相關誤解
13.2 MySQL 在雲端的經濟價值
13.3 雲中的MySQL 的可擴充套件性和高可用性
13.4 四種基礎資源
13.5 MySQL 在雲主機上的效能
13.5.1 在雲端的MySQL 基準測試
13.6 MySQL 資料庫即服務(DBaaS)
13.6.1 Amazon RDS
13.6.2 其他DBaaS 解決方案
13.7 總結

第14章 應用層優化
14.1 常見問題
14.2 Web 伺服器問題
14.2.1 尋找最優併發度
14.3 快取
14.3.1 應用層以下的快取
14.3.2 應用層快取
14.3.3 快取控制策略
14.3.4 快取物件分層
14.3.5 預生成內容
14.3.6 作為基礎元件的快取
14.3.7 使用HandlerSocket 和memcached
14.4 拓展MySQL
14.5 MySQL 的替代品
14.6 總結

第15章 備份與恢復
15.1 為什麼要備份
15.2 定義恢復需求
15.3 設計MySQL 備份方案
15.3.1 線上備份還是離線備份
15.3.2 邏輯備份還是物理備份
15.3.3 備份什麼
15.3.4 儲存引擎和一致性
15.4 管理和備份二進位制日誌
15.4.1 二進位制日誌格式
15.4.2 安全地清除老的二進位制日誌
15.5 備份資料
15.5.1 生成邏輯備份
15.5.2 檔案系統快照
15.6 從備份中恢復
15.6.1 恢復物理備份
15.6.2 還原邏輯備份
15.6.3 基於時間點的恢復
15.6.4 更高階的恢復技術
15.6.5 InnoDB 崩潰恢復
15.7 備份和恢復工具
15.7.1 MySQL Enterprise Backup
15.7.2 Percona XtraBackup .
15.7.3 mylvmbackup
15.7.4 Zmanda Recovery Manager
15.7.5 mydumper
15.7.6 mysqldump.
15.8 備份指令碼化
15.9 總結

第16章 MySQL 使用者工具
16.1 介面工具
16.2 命令列工具集
16.3 SQL 實用集
16.4 監測工具
16.4.1 開源的監控工具
16.4.2 商業監控系統
16.4.3 Innotop 的命令列監控
16.5 總結

附錄A MySQL 分支與變種
附錄B MySQL 伺服器狀態
附錄C 大檔案傳輸
附錄D EXPLAIN
附錄E 鎖的除錯
附錄F 在MySQL 上使用Sphinx
索引