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

来源:https://www.cnblogs.com/haws/archive/2018/11/11/mysql.html
-Advertisement-
Play Games

本書是MySQL 領域的經典之作,擁有廣泛的影響力。第3 版更新了大量的內容,不但涵蓋了最新MySQL5.5版本的新特性,也講述了關於固態盤、高可擴展性設計和雲計算環境下的資料庫相關的新內容,原有的基準測試和性能優化部分也做了大量的擴展和補充。全書共分為16章和6 個附錄,內容涵蓋MySQL架構和歷... ...


《高性能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
索引

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • [TOC] 算術運算符     在任何一門形式的語言中均會存在算術運算的情況,Shell常見的運算符如下所示: | 運算符 | 含義 | | | | | + \ / % | 加 減 乘 除 求餘 | | \ \ | 冪運算 | | ++ | 自增 自減 | | && & 124; ...
  • Linux 學習-電腦基礎 一、描述電腦的組成及其功能。 電腦系統是由硬體(Hardware)和軟體(Software )兩部分組成。 硬體: 從硬體基本結構上來講,電腦是由運算器、控制器、存儲器、輸入設備、輸出設備五大部分組成的,每一部分分別按要求執行特定的基本功能。 1、運算器(算數邏輯 ...
  • 關閉觸摸 關閉觸摸和按鍵 打開 ...
  • 一、為什麼要用到 make 命令和 makefile 文件 在 Linux 下編寫一個程式,每次編譯都需要在命令行一行一行的敲命令。如果是一個很小的程式還好說,命令不怎的複雜,編譯速度也挺快,但是對於大型程式來說,這樣無疑很麻煩,且不說可能會敲錯命令,有時候僅僅改動了一個小地方,卻需要將整個程式全部 ...
  • 伺服器win2008server R2 x64 部署.net core到IIS 解決ASP .NET Core HTTP Error 502.5 – Process Failure 問題等 1、發佈網站 ;2、安裝 vc_redist.x64 (Visual C++ Redistributable ...
  • 昨晚嘗試安裝下MongoDB結果折騰一個多小時沒弄好(汗),按網上教程來註冊了服務,但是服務無法啟動。 今早又看了下才找到原因。 網上的教程都是比較老的版本了(3.x),我用的4.0.4版本,無需自己創建data和log文件夾,配置文件也是安裝程式自己配置好的,更不用在cmd下創建服務。全都由程式一 ...
  • 外部類與內部類之間的訪問 內部類相當於外部類的一個成員,和其它成員處於同一個級別,因此可以在內部類中直接訪問外部類的各個成員(包括私有屬性)。 需要註意的是在外部類中要想訪問內部類的各個成員(這裡也包括內部類的私有屬性)就必須先實例化內部類,然後才能訪問。對於為什麼能訪問內部類的私有屬性,是因為即使 ...
  • 因為大數據前景好,薪資高,很多人想通過參加學習大數據,然後進入大數據行業發展。但是因為大數據的門檻較高,對於學習人員有一定的要求,那麼學習大數據需要什麼基礎知識呢? 首先我們瞭解下對於大數據學習者本身的學歷水平的要求 目前大多數的機構,對於大數據學習者要求必須是大專學歷以上,而且大專學歷還要求是計算 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...