MySQL 8查詢性能優(yōu)化 版權(quán)信息
- ISBN:9787302583912
- 條形碼:9787302583912 ; 978-7-302-58391-2
- 裝幀:一般膠版紙
- 冊數(shù):暫無
- 重量:暫無
- 所屬分類:>>
MySQL 8查詢性能優(yōu)化 本書特色
性能不佳的查詢將影響用戶的體驗,導致業(yè)務(wù)收入下降;本書將幫助你在日常工作中更好地識別、分析和改進此類查詢。本書詳述涉及多個步驟的處理過程,包括監(jiān)控查詢執(zhí)行時間、識別需要優(yōu)化的查詢、分析當前的性能表現(xiàn)以及進行優(yōu)化等,還介紹相關(guān)的數(shù)據(jù)源和工具,幫助你更快地提交結(jié)果,降低系統(tǒng)
開銷。 《MySQL 8查詢性能優(yōu)化》描述多種可提升查詢性能的策略,講述如何使用傳統(tǒng)的EXPLAIN命令以及新的EXPLAIN ANALYZE工具來分析查詢、如何使用Visual Explain功能來獲得執(zhí)行計劃的可視化視圖、如何用直方圖獲得關(guān)于“桶”數(shù)據(jù)的分布信息。此外,將介紹鎖以及解決鎖問題的相關(guān)知識;討論MySQL優(yōu)化器的工作原理,包括新的哈希聯(lián)接算法,以及在必要時改變優(yōu)化器行為來縮短查詢的執(zhí)行時間。通過本書,你將掌握**技術(shù),能用合適工具提高用戶滿意度,從公司的計算資源中獲取更大價值。
MySQL 8查詢性能優(yōu)化 內(nèi)容簡介
主要內(nèi)容
● 監(jiān)控性能,找出效果不佳的查詢
● 選取要優(yōu)化的查詢,**限度地提高收益
● 使用EXPLAIN ANALYZE和Visual Explain等工具來分析查詢
● 借助多種策略改進慢查詢
● 正確使用索引和直方圖,創(chuàng)建快速的執(zhí)行計劃
● 了解并分析鎖,從而解決爭用問題,提升系統(tǒng)吞吐量
MySQL 8查詢性能優(yōu)化 目錄
第Ⅰ部分 入門
第1章 MySQL性能優(yōu)化
1.1 通盤考慮
1.2 監(jiān)控
1.3 查詢的生命周期
1.4 本章小結(jié)
第2章 查詢優(yōu)化方法論
2.1 綜述
2.2 核實問題
2.3 確定原因
2.4 確定解決方案
2.5 實施解決方案
2.6 主動工作
2.7 本章小結(jié)
第3章 使用Sysbench進行基準測試
3.1 *佳實踐
3.2 標準TPC基準測試
3.3 通用的基準測試工具
3.4 安裝Sysbench
3.5 執(zhí)行基準測試
3.6 創(chuàng)建自定義基準測試
3.6.1 自定義腳本概述
3.6.2 定義選項
3.6.3 run命令
3.6.4 prepare命令
3.6.5 cleanup命令
3.6.6 注冊命令
3.7 本章小結(jié)
第4章 測試數(shù)據(jù)
4.1 下載示例數(shù)據(jù)庫
4.2 world數(shù)據(jù)庫
4.2.1 方案
4.2.2 安裝
4.3 world_x數(shù)據(jù)庫
4.3.1 方案
4.3.2 安裝
4.4 sakila數(shù)據(jù)庫
4.4.1 方案
4.4.2 安裝
4.5 employees數(shù)據(jù)庫
4.5.1 方案
4.5.2 安裝
4.6 其他數(shù)據(jù)庫
4.7 本章小結(jié)
第Ⅱ部分 信息來源
第5章 performance庫
5.1 術(shù)語
5.2 線程
5.3 instrument
5.4 消費者
5.5 事件
5.5.1 事件類型
5.5.2 事件范圍
5.5.3 事件嵌套
5.5.4 事件屬性
5.6 Actor與對象
5.7 摘要
5.8 表類型
5.9 動態(tài)配置
5.10 本章小結(jié)
第6章 sys庫
6.1 sys庫配置
6.2 格式化函數(shù)
6.3 視圖
6.4 輔助函數(shù)與過程
6.5 本章小結(jié)
第7章 information庫
7.1 何為information庫
7.2 權(quán)限
7.3 視圖
7.3.1 系統(tǒng)信息
7.3.2 方案信息
7.3.3 性能信息
7.3.4 權(quán)限信息
7.4 索引統(tǒng)計數(shù)據(jù)緩存
7.5 本章小結(jié)
第8章 SHOW語句
8.1 與information庫的關(guān)系
8.2 與performance庫的關(guān)系
8.3 引擎狀態(tài)
8.4 復(fù)制與二進制日志
8.4.1 列出二進制日志
8.4.2 查看日志事件
8.4.3 顯示連接的副本
8.5 其他語句
8.6 本章小結(jié)
第9章 慢查詢?nèi)罩?
9.1 配置
9.2 日志事件
9.3 匯總
9.4 本章小結(jié)
第Ⅲ部分 工具
第10章 MySQL Enterprise Monitor
10.1 概述
10.2 安裝
10.2.1 下載
10.2.2 安裝
10.3 啟動和停止Service Manager
10.3.1 在Microsoft Windows中啟動和停止Service Manager
10.3.2 在Linux中啟動和停止Service Manager
10.4 添加MySQL實例
10.5 圖形管理界面
10.5.1 通用導航
10.5.2 建議器
10.5.3 時序圖
10.5.4 查詢分析器
10.6 本章小結(jié)
第11章 MySQL Workbench
11.1 安裝
11.1.1 Microsoft Windows
11.1.2 Enterprise Linux
11.1.3 Debian和Ubuntu
11.2 創(chuàng)建連接
11.3 使用MySQL Workbench
11.3.1 概要
11.3.2 配置
11.3.3 安全設(shè)置
11.3.4 重新格式化查詢
11.4 EER圖
11.5 本章小結(jié)
第12章 MySQL shell
12.1 概要
12.1.1 安裝MySQL shell
12.1.2 調(diào)用MySQL shell
12.1.3 創(chuàng)建連接
12.1.4 語言模式
12.1.5 內(nèi)建幫助
12.1.6 內(nèi)建全局對象
12.2 提示符
12.2.1 內(nèi)置提示符
12.2.2 自定義提示符
12.2.3 Powerline和Awesome字體
12.3 使用外部模塊
12.4 報表基礎(chǔ)架構(gòu)
12.4.1 報表信息和幫助
12.4.2 執(zhí)行報表
12.4.3 添加自己的報表
12.5 插件
12.6 本章小結(jié)
第Ⅳ部分 方案考量與查詢優(yōu)化器
第13章 數(shù)據(jù)類型
13.1 為何是數(shù)據(jù)類型
13.1.1 數(shù)據(jù)驗證
13.1.2 文檔
13.1.3 優(yōu)化存儲
13.1.4 性能
13.1.5 正確排序
13.2 MySQL的數(shù)據(jù)類型
13.2.1 數(shù)值類型
13.2.2 日期和時間類型
13.2.3 字符串與二進制類型
13.2.4 JSON數(shù)據(jù)類型
13.2.5 空間數(shù)據(jù)類型
13.2.6 混合數(shù)據(jù)類型
13.3 性能
13.4 應(yīng)該選擇何種數(shù)據(jù)類型
13.5 本章小結(jié)
第14章 索引
14.1 什么是索引
14.2 索引的概念
14.2.1 鍵與索引
14.2.2 唯#一索引
14.2.3 主鍵
14.2.4 二級索引
14.2.5 簇聚索引
14.2.6 覆蓋索引
14.3 索引的限制
14.4 SQL語法
14.4.1 創(chuàng)建帶有索引的表
14.4.2 添加索引
14.4.3 移除索引
14.5 索引的缺點是什么?
14.5.1 存儲
14.5.2 更新索引
14.5.3 優(yōu)化器
14.6 索引類型
14.6.1 B-tree索引
14.6.2 全文索引
14.6.3 空間索引
14.6.4 多值索引
14.6.5 哈希索引
14.7 索引的特性
14.7.1 函數(shù)索引
14.7.2 前綴索引
14.7.3 不可見索引
14.7.4 降序索引
14.7.5 分區(qū)與索引
14.7.6 自生成索引
14.8 InnoDB與索引
14.8.1 簇聚索引
14.8.2 二級索引
14.8.3 建議
14.8.4 #佳用例
14.9 索引策略
14.9.1 何時添加或者移除索引?
14.9.2 主鍵的選擇
14.9.3 添加二級索引
14.9.4 多列索引
14.9.5 覆蓋索引
14.10 本章小結(jié)
第15章 索引統(tǒng)計信息
15.1 何為索引統(tǒng)計信息?
15.2 InnoDB與索引統(tǒng)計信息
15.2.1 統(tǒng)計信息是如何被收集的?
15.2.2 頁采樣
15.2.3 事務(wù)隔離級別
15.2.4 配置統(tǒng)計信息類型
15.3 持久索引統(tǒng)計信息
15.3.1 配置
15.3.2 索引統(tǒng)計信息表
15.4 臨時索引統(tǒng)計信息
15.5 監(jiān)控
15.5.1 information庫中的STATISTICS視圖
15.5.2 SHOW INDEX 語句
15.5.3 information庫中的INN0DB_TABLESTATS視圖
15.5.4 information庫中的TABLES視圖及SHOW TABLE STATUS語句
15.6 更新統(tǒng)計信息
15.6.1 自動更新
15.6.2 ANALYZE TABLE語句
15.6.3 mysqlcheck程序
15.7 本章小結(jié)
第16章 直方圖
16.1 何為直方圖?
16.2 何時應(yīng)該添加直方圖信息?
16.3 直方圖內(nèi)部信息
16.3.1 bucket
16.3.2 累積頻率
16.3.3 直方圖類型
16.4 直方圖的添加與維護
16.4.1 直方圖的創(chuàng)建與更新
16.4.2 采樣
16.4.3 刪除直方圖
16.5 查看直方圖數(shù)據(jù)
16.6 直方圖報告示例
16.6.1 列出所有直方圖
16.6.2 列出一個直方圖的所有信息
16.6.3 列出一個單值直方圖的桶信息
16.6.4 列出一個等高直方圖的桶信息
16.7 查詢示例
16.8 本章小結(jié)
第17章 查詢優(yōu)化器
17.1 轉(zhuǎn)換
17.2 基于成本的優(yōu)化
17.2.1 基礎(chǔ):單表SELECT操作
17.2.2 表聯(lián)接順序
17.2.3 默認過濾效果
17.2.4 查詢成本
17.3 聯(lián)接算法
17.3.1 嵌套循環(huán)
17.3.2 塊嵌套循環(huán)
17.3.3 哈希聯(lián)接
17.4 聯(lián)接優(yōu)化
17.4.1 索引合并
17.4.2 多范圍讀(MRR)
17.4.3 批量key訪問(BKA)
17.4.4 其他優(yōu)化
17.5 配置優(yōu)化器
17.5.1 引擎成本
17.5.2 服務(wù)器成本
17.5.3 優(yōu)化器開關(guān)
17.5.4 優(yōu)化器提示
17.5.5 索引提示
17.5.6 配置選項
17.6 資源組
17.6.1 獲取資源組相關(guān)信息
17.6.2 管理資源組
17.6.3 分配資源組
17.6.4 性能考量
17.7 本章小結(jié)
第18章 鎖原理與監(jiān)控
18.1 為何會需要鎖?
18.2 鎖訪問級別
18.3 鎖粒度
18.3.1 用戶級別鎖
18.3.2 刷新鎖
18.3.3 元數(shù)據(jù)鎖
18.3.4 顯式表鎖
18.3.5 隱式表鎖
18.3.6 記錄鎖
18.3.7 gap鎖、next-key鎖以及預(yù)測鎖
18.3.8 插入意向鎖
18.3.9 自增鎖
18.3.10 備份鎖
18.3.11 日志鎖
18.4 獲取鎖失敗
18.4.1 元數(shù)據(jù)鎖和備份鎖等待超時
18.4.2 InnoDB鎖等待超時
18.4.3 死鎖
18.5 減少鎖相關(guān)的問題
18.5.1 事務(wù)大小與期限
18.5.2 索引
18.5.3 記錄訪問順序
18.5.4 事務(wù)隔離級別
18.5.5 搶占鎖
18.6 監(jiān)控鎖
18.6.1 performance庫
18.6.2 sys庫
18.6.3 狀態(tài)計數(shù)器與InnoDB指標
18.6.4 InnoDB鎖監(jiān)控與死鎖日志
18.7 本章小結(jié)
第Ⅴ部分 查詢分析
第19章 查找待優(yōu)化的查詢
19.1 performance庫
19.1.1 語句事件表
19.1.2 prepared語句的匯總
19.1.3 表的I/O匯總
19.1.4 文件 I/O匯總信息
19.1.5 錯誤匯總表
19.2 sys庫
19.2.1 語句視圖
19.2.2 表I/O視圖
19.2.3 文件I/O視圖
19.2.4 語句性能分析器
19.3 MySQL Workbench
19.3.1 性能報告
19.3.2 客戶端連接報告
19.4 MySQL Enterprise Monitor
19.4.1 查詢分析器
19.4.2 時間序列圖
19.4.3 即席查詢報告
19.5 慢查詢?nèi)罩?
19.6 本章小結(jié)
第20章 分析查詢
20.1 EXPLAIN用法
20.1.1 顯式查詢的用法
20.1.2 EXPLAIN ANALYZE
20.1.3 連接的用法
20.2 EXPLAIN格式
20.2.1 傳統(tǒng)格式
20.2.2 JSON格式
20.2.3 樹狀格式
20.2.4 Visual Explain
20.3 EXPLAIN輸出
20.3.1 EXPLAIN字段
20.3.2 選擇類型
20.3.3 訪問類型
20.3.4 Extra信息
20.4 EXPLAIN示例
20.4.1 單表,全表掃描
20.4.2 單表,索引訪問
20.4.3 兩張表和覆蓋索引
20.4.4 多列索引
20.4.5 兩張表并帶有子查詢和排序
20.5 優(yōu)化器跟蹤
20.6 performance庫事件分析
20.6.1 檢查存儲過程
20.6.2 分析階段事件
20.6.3 使用sys.ps_trace_thread( )過程進行分析
20.6.4 使用ps_trace_statement_digest( )過程進行分析
20.7 本章小結(jié)
第21章 事務(wù)
21.1 事務(wù)的影響
21.1.1 鎖
21.1.2 undo日志
21.2 INN0DB_TRX
21.3 InnoDB監(jiān)視器
21.4 INN0DB_METRICS和sys.metrics
21.5 performance庫事務(wù)
21.5.1 事務(wù)事件及其語句
21.5.2 事務(wù)匯總表
21.6 本章小結(jié)
第22章 診斷鎖爭用
22.1 刷新鎖
22.1.1 癥狀
22.1.2 原因
22.1.3 構(gòu)建
22.1.4 調(diào)研
22.1.5 解決方案
22.1.6 預(yù)防
22.2 元數(shù)據(jù)鎖和方案鎖
22.2.1 癥狀
22.2.2 原因
22.2.3 構(gòu)建
22.2.4 調(diào)研
22.2.5 解決方案
22.2.6 預(yù)防
22.3 記錄鎖
22.3.1 癥狀
22.3.2 原因
22.3.3 構(gòu)建
22.3.4 調(diào)研
22.3.5 解決方案
22.3.6 預(yù)防
22.4 死鎖
22.4.1 癥狀
22.4.2 原因
22.4.3 構(gòu)建
22.4.4 調(diào)研
22.4.5 解決方案
22.4.6 預(yù)防
22.5 本章小結(jié)
第Ⅵ部分 提升查詢性能
第23章 配置
23.1 #佳實踐
23.2 InnoDB綜述
23.3 InnoDB緩沖池
23.3.1 緩沖池大小
23.3.2 緩沖池實例
23.3.3 轉(zhuǎn)儲緩沖池
23.3.4 舊塊子列表
23.3.5 刷新頁
23.4 重做日志
23.4.1 日志緩沖區(qū)
23.4.2 日志文件
23.5 并行查詢執(zhí)行
23.6 查詢緩沖區(qū)
23.7 內(nèi)部臨時表
23.8 本章小結(jié)
第24章 改變查詢計劃
24.1 測試數(shù)據(jù)
24.2 出現(xiàn)過多全表掃描的癥狀
24.3 錯誤查詢
24.4 未使用索引
24.4.1 不在多列索引的靠左位置
24.4.2 數(shù)據(jù)類型不匹配
24.4.3 函數(shù)依賴
24.5 改善索引的使用情況
24.5.1 添加覆蓋索引
24.5.2 錯誤索引
24.5.3 重寫復(fù)雜索引條件
24.6 重寫復(fù)雜查詢
24.6.1 公共表表達式(CTE)
24.6.2 窗口函數(shù)
24.6.3 使用聯(lián)接來重寫子查詢
24.6.4 將查詢拆分為多個部分
24.7 隊列系統(tǒng):SKIP LOCKED
24.8 多個OR或者IN條件
24.9 本章小結(jié)
第25章 DDL與批量數(shù)據(jù)加載
25.1 方案更改
25.1.1 算法
25.1.2 其他考量
25.1.3 刪除或者截斷表
25.2 數(shù)據(jù)加載的一般性考量
25.3 以主鍵順序插入
25.3.1 自增長主鍵
25.3.2 插入已有數(shù)據(jù)
25.3.3 UUID主鍵
25.4 InnoDB緩沖池與二級索引
25.5 配置
25.6 事務(wù)與加載方式
25.7 MySQL shell并行數(shù)據(jù)加載
25.8 本章小結(jié)
第26章 復(fù)制
26.1 復(fù)制概述
26.2 監(jiān)控
26.2.1 連接表
26.2.2 applier表
26.2.3 日志狀態(tài)
26.2.4 組復(fù)制表
26.3 連接
26.3.1 復(fù)制事件
26.3.2 網(wǎng)絡(luò)
26.3.3 維護源信息
26.3.4 寫入中繼日志
26.4 applier線程
26.4.1 并行applier
26.4.2 主鍵
26.4.3 放寬數(shù)據(jù)安全
26.4.4 復(fù)制過濾器
26.5 將工作負載卸載到副本
26.5.1 讀操作的橫向擴展
26.5.2 任務(wù)分離
26.6 本章小結(jié)
第27章 緩存
27.1 緩存,無處不在
27.2 MySQL中的緩存
27.2.1 緩存表
27.2.2 直方圖統(tǒng)計信息
27.3 Memcached
27.3.1 獨立服務(wù)器模式下的Memcached
27.3.2 MySQL InnoDB Memcached插件
27.4 ProxySQL
27.5 緩存技巧
27.6 本章小結(jié)
展開全部
MySQL 8查詢性能優(yōu)化 作者簡介
自2006年以來,Jesper Wisborg Krogh先后以SQL開發(fā)人員和數(shù)據(jù)庫管理員的身份參與到MySQL數(shù)據(jù)庫工作中,并且作為MySQL技術(shù)支持團隊的一員,工作了8年之久。他曾在MySQL Connect和Oracle OpenWorld上多次發(fā)表演講。除了出版相關(guān)書籍外,他也會定期撰寫一些以MySQL為主題的博客文章,并為Oracle知識庫撰寫了約800份文檔。此外,Jesper Wisborg Krogh也為MySQL中的sys庫,以及MySQL 5.6等相關(guān)的OCP認證考試做出了許多貢獻。
在2006年轉(zhuǎn)向MySQL及軟件開發(fā)之前,Jesper Wisborg Krogh獲得計算化學的博士學位。他現(xiàn)在居住在澳大利亞的悉尼,平時喜歡在戶外散步、旅行以及閱讀等。其研究領(lǐng)域涉及MySQL集群、MySQL Enterprise Backup(MEB)、性能優(yōu)化,以及performance庫和sys庫等。