MySQL故障排除與效能調校完全攻略(上)

MySQL故障排除與效能調校完全攻略(上) pdf epub mobi txt 电子书 下载 2025

李春
圖書標籤:
  • MySQL
  • 數據庫
  • 故障排除
  • 性能調優
  • SQL
  • 運維
  • 開發
  • 服務器
  • 技術
  • 書籍
想要找书就要到 灣灣書站
立刻按 ctrl+D收藏本页
你会得到大惊喜!!

圖書描述

  本書一共分為3篇:基礎篇(上)、案例篇和工具篇(下)。

  基礎篇:
  從理論基礎和基本原理層麵介紹瞭 MySQL 的安裝與設定、升級和架構,information_schema、sys_schema、performance_schema 和 mysql_schema,MySQL複製、MySQL 交易、SQL 語句最佳化及架構設計基礎知識。

  案例篇:
  從硬體和係統、MySQL 架構等方麵提齣瞭效能最佳化的十幾個案例,包括:效能測試的基本最佳化概念和最需要關注的效能指標解釋、對 SQL 語句執行慢的基本定位、避免 x86 可用性的一般性方法、節能模式會怎樣影響效能、I/O 儲存作為資料庫最重要的依賴是如何影響資料庫效能的、主備複製不一緻可能有哪些原因、字元集不一緻會造成哪些效能問題、在實際場景中鎖的爭用是怎樣的。

  工具篇:
  介紹瞭在 MySQL 效能最佳化過程中需要用到的各種工具,包括:dmidecode、top、dstat 等硬體和係統排查工具;FIO、sysbench、HammerDB 等壓力測試工具;mysqldump、XtraBackup 等備份工具;Percona、innotop、Prometheus 等監控工具。

  --------------------------------------------------------------------------------

  效能問題:
  本書解決 MySQL 資料庫效能問題,某種程度來說,MySQL 資料庫效能最佳化問題是一個平行處理的問題,歸根究柢是鎖和資源爭用的問題。

  其實效能最佳化要做的就是下列事情:
  •瞭解基本原理。找到事情的因果關係和依賴關係,儘量讓不相關的事情能平行進行。
  •要事第一。找到目前最重要、最需要最佳化的地方,投入時間和精力,不斷去改進與最佳化。
  •切中要害。找到耗費時間最長的地方,想盡辦法縮短其時間。

  機械思維和大數據思維:
  本書的效能最佳化方法論還是工業革命時代的機械思維,簡而言之,就是尋找因果關係,大膽假設,小心求證。現在已經是資訊時代,理應瞭解什麼是資訊理論,解決問題需要利用大數據思維!

  讀者對象:
  (1)MySQL 初學者。
  (2)專門從事 MySQL 工作1~3年的開發人員和運維人員。
  (3)資深的 MySQL DBA。

SQL Server 深入解析與實戰優化 聚焦微軟企業級數據庫平颱,構建高可用、高性能的數據處理架構 本書概述 本書是為係統架構師、數據庫管理員(DBA)以及需要深入理解和優化 SQL Server 數據庫的開發人員量身打造的權威指南。在當今企業級應用對數據一緻性、處理速度和係統可靠性提齣嚴苛要求的背景下,SQL Server 作為全球範圍內廣泛部署的關係型數據庫管理係統,其穩定運行和卓越性能直接關係到業務的成敗。本書摒棄瞭基礎的 SQL 語法教學,直接切入 SQL Server 的核心機製、高級配置、性能瓶頸診斷及應對策略,旨在幫助讀者從“使用者”蛻變為“駕馭者”。 全書內容圍繞 SQL Server 2019 及較新版本(涵蓋 2017/2022)的企業部署需求展開,內容涵蓋瞭從操作係統層麵對 SQL Server 的影響,到數據庫內部存儲引擎的精微之處,再到復雜的查詢優化和高可用性(HA)/災難恢復(DR)方案的實施與調優。我們深入探討瞭 SQL Server 的內存管理、I/O 子係統優化、鎖與事務隔離機製的實際影響,以及如何利用最新的 In-Memory OLTP 和智能查詢處理(Intelligent Query Processing, IQP)特性來榨取係統最大潛能。 第一部分:SQL Server 架構與基礎配置深度剖析 本部分將讀者帶入 SQL Server 係統的核心,理解其工作原理是高效優化的前提。 1.1 存儲引擎與文件係統交互 深入解析 SQL Server 的頁(Page)結構、區(Extent)管理和堆(Heap)/聚集索引(Clustered Index)的物理存儲布局。我們將詳細剖析數據文件(.mdf, .ndf)、事務日誌文件(.ldf)的特性及其在不同 RAID 級彆和存儲介質(如 SSD, NVMe)上的最佳實踐配置。重點討論事務日誌的寫入機製、檢查點(Checkpoint)進程的工作原理,以及如何通過調整恢復模式和日誌截斷策略來平衡性能與恢復需求。 1.2 內存管理藝術:緩衝池與工作區 內存是 SQL Server 性能的生命綫。本章詳細講解 Buffer Pool(緩衝池)的內部結構,包括數據頁、非數據頁(如 Latch 結構)的緩存機製。我們將探討內存授權(Granting Memory)、內存壓力(Memory Pressure)的識彆,以及 Max Server Memory 配置的科學依據,避免過度分配導緻操作係統資源枯竭。同時,深入研究 TempDB 的設計陷阱,包括鎖爭用(Latch Contention)問題,以及如何通過增加數據文件數量、調整文件大小和設置適當的混閤模型來優化 TempDB 的性能。 1.3 實例級配置與兼容性考量 係統級彆的配置選項(如 `max degree of parallelism (MAXDOP)`、`cost threshold for parallelism`、`AWE`、`Locked Pages in Memory`)對整體負載的影響是復雜的。本章提供瞭一套係統的評估流程,指導 DBA 如何根據硬件配置和工作負載類型(OLTP vs. Data Warehouse)設定這些關鍵參數。此外,探討瞭數據庫兼容級彆(Compatibility Level)的選擇,以及新版本特性(如 Lazy Writer, Ghost Cleanup 優化)的引入對舊代碼的影響評估。 第二部分:性能診斷與查詢優化實戰 本部分是全書的核心,聚焦於如何識彆性能瓶頸並提供可執行的優化方案。 2.1 性能監控體係的構建 超越性能監視器(PerfMon)的錶麵指標,我們教授如何高效利用動態管理視圖(DMVs)和動態管理函數(DMFs)構建實時的、定製化的性能儀錶闆。重點講解 `sys.dm_os_wait_stats` 的解讀,這是診斷等待類型的金標準。我們將深入解析主要的等待類型,如 `PAGEIOLATCH_XX` (I/O 等待)、`LCK_M_XX` (鎖等待)、`SOS_SCHEDULER_YIELD` (CPU 調度等待),並提供針對每種等待類型的係統化排查步驟。 2.2 事務、鎖與阻塞:深入隔離級彆 詳細剖析 SQL Server 的鎖粒度(行、頁、錶級鎖)和鎖類型(共享、獨占、意嚮鎖)。本章著重分析不同事務隔離級彆(Read Uncommitted 到 Snapshot/Read Committed Snapshot Isolation)對並發性和數據一緻性的權衡。我們將演示如何使用 `sp_who2` 和高級追蹤標記(Trace Flags)來實時追蹤和解決深度阻塞鏈,區分真正的應用死鎖與臨時性資源爭用。 2.3 查詢執行計劃的逆嚮工程 執行計劃是理解查詢性能問題的窗口。本書提供瞭一套結構化的執行計劃分析方法論。不再僅僅關注索引缺失警告,而是深入分析操作符(Operators)的成本分配,如 Key Lookup/RID Lookup 的高昂代價、並行度設置不當導緻的“鋸齒狀”執行計劃、以及參數嗅探(Parameter Sniffing)的成因與緩解措施。重點講解如何利用“包含列(Included Columns)”和“覆蓋索引(Covering Indexes)”來消除昂貴的 I/O 操作。 2.4 索引策略的精細化管理 索引不再是“建瞭就完事”的對象。本章探討瞭適應現代工作負載的索引策略:稀疏索引(Sparse Columns)、列式存儲索引(Columnstore Indexes)的適用場景(尤其在混閤事務/分析處理 HTP/MPP 環境中),以及索引碎片整理(Defragmentation)的真正價值(基於混閤程度與掃描成本的權衡)。演示如何利用 `sys.dm_db_index_usage_stats` 動態評估未使用的索引並安全地移除它們,以減少維護開銷。 第三部分:高可用性、災難恢復與前沿技術 本部分關注企業級數據持久性保障和利用新技術提升係統彈性。 3.1 SQL Server 高可用性(HA)解決方案詳解 全麵對比和評估 SQL Server 的主流 HA 技術:故障轉移群集實例(FCI)、Always On 故障轉移集群(Availability Groups, AGs)以及數據守護(Log Shipping)。重點解析 AGs 的同步與異步模式差異、網絡配置對延遲的影響,以及如何通過配置讀取意圖路由(Read-Intent Routing)來卸載報錶負載。我們將提供詳細的故障轉移演練腳本和故障恢復時間目標(RTO)的評估方法。 3.2 事務日誌與恢復模型的高級應用 深入理解 FULL 和 BULK-LOGGED 恢復模式在性能和恢復粒度上的差異。講解如何利用事務日誌備份鏈來執行時間點恢復(Point-in-Time Recovery, PITR),並提供在大型數據庫環境下優化日誌備份頻率和大小的策略。 3.3 智能查詢處理(IQP)與 In-Memory OLTP 探索 SQL Server 2019 引入的 IQP 特性,如交叉批處理修正(Cross-Batch Correction)和內存授予反饋(Memory Grant Feedback),這些特性如何無需代碼修改即可提升現有應用的性能。同時,詳細介紹內存優化錶(Memory-Optimized Tables)和原生編譯存儲過程(Natively Compiled Stored Procedures)的部署要求、數據持久性選項(DURABILITY)選擇,以及它們在處理高吞吐量交易時的性能優勢與局限性。 結語 掌握 SQL Server 的深層運行機製,是確保企業數據資産安全與高效運行的關鍵。本書緻力於提供一套全麵的工具箱和思維框架,幫助讀者係統性地診斷復雜問題、主動預防性能衰退,並將 SQL Server 實例的潛力完全釋放。 目標讀者: 經驗豐富的 DBA、資深後端工程師、數據庫架構師。 預備知識: 熟悉 T-SQL 編寫,具備一定係統管理經驗。

著者信息

作者簡介

李春


  原阿裏巴巴 MySQL DBA 團隊技術 Leader,全程參與阿裏資料庫架構從 Oracle 遷移到 MySQL 的過程,參與分散式中介軟體 Cobar 設計。現為沃趣科技聯閤創始人&首席架構師,負責 MySQL、基礎軟體及部分關鍵組件的技術選型、風險評估等。

羅小波

  沃趣科技高級資料庫工程師,主要負責 MySQL 產品的資料庫支撐與售後二線支撐。曾參與版本發布係統、輕量級監控係統、運維管理平颱、資料庫管理平颱的設計與編寫,熟悉 MySQL 體係結構,Innodb 存儲引擎,喜好專研開源技術,多次在公開場閤做過線下線上資料庫專題分享,發錶過多篇與資料庫相關的研究文章。

董紅禹

  沃趣科技 MySQL DBA,為多傢大型企業進行過故障解決、架構設計、效能最佳化,例如中信證券、浙江農信、陝西農信、郵儲銀行等。規劃並實施瞭浙江農信互聯網核心金融平颱。
 

圖書目錄

基礎篇

第 1 章 MySQL 初始化安裝、簡單安全加固
1.1 背景
1.2 初始化安裝
1.2.1 下載二進位安裝檔
1.2.2 建立 mysql 使用者
1.2.3 建立程式、資料存放目錄
1.2.4 解壓縮二進位檔案並設定目錄權限
1.2.5 軟連結程式路徑,並設定 MySQL 命令環境變數
1.2.6 設定 my.cnf 檔案參數
1.2.7 初始化 MySQL
1.2.8 啟動 MySQL
1.3 簡單安全加固
1.3.1 登錄 MySQL
1.3.2 刪除非 root 或非 localhost 的使用者,並修改 root 密碼
1.3.3 刪除 test 資料庫,清理 mysql.db 資料錶
1.4 建立使用者、資料庫、資料錶與資料
1.4.1 建立管理者與授權
1.4.2 建立資料庫、資料錶、程式帳號
1.4.3 插入資料
1.5 MySQL 參數範本

第 2 章 MySQL 常用的兩種升級方法
2.1 背景
2.2 MySQL 5.5.54 的安裝
2.3 升級 MySQL 5.5.54 到 MySQL 5.6.35
2.3.1 使用 mysql_upgrade 直接升級資料字典庫
2.3.2 使用 mysqldump 邏輯備份資料
2.4 升級注意事項

第 3 章 MySQL 架構
3.1 快速安裝 MySQL
3.2 資料目錄結構
3.3 MySQL Server 架構
3.4 MySQL 中的儲存引擎
3.5 InnoDB 儲存引擎架構
3.6 InnoDB 儲存引擎後颱執行緒
3.7 MySQL 前颱執行緒

第 4 章 performance_schema 初相識
4.1 什麼是 performance_schema
4.2 performance_schema 快速使用入門
4.2.1 檢查目前資料庫版本是否支援
4.2.2 啟用 performance_schema
4.2.3 performance_schema 資料錶的分類
4.2.4 performance_schema 簡單設定與使用

第 5 章 performance_schema 組態詳解
5.1 編譯時組態
5.2 啟動時組態
5.2.1 啟動選項
5.2.2 system variables
5.3 執行時期組態
5.3.1 performance_timers 資料錶
5.3.2 setup_consumers 資料錶
5.3.3 setup_instruments 資料錶
5.3.4 setup_actors 資料錶
5.3.5 setup_objects 資料錶
5.3.6 threads 資料錶

第 6 章 performance_schema 應用範例薈萃
6.1 利用等待事件排查 MySQL 效能問題
6.2 鎖問題排查
6.2.1 找齣誰持有全域讀鎖
6.2.2 找齣誰持有 MDL 鎖
6.2.3 找齣誰持有錶級鎖
6.2.4 找齣誰持有列級鎖
6.3 查看最近的 SQL 語句執行資訊
6.3.1 查看最近的 TOP SQL 語句
6.3.2 查看最近執行失敗的 SQL 語句
6.4 查看 SQL 語句執行階段和進度資訊
6.4.1 查看 SQL 語句執行階段資訊
6.4.2 查看 SQL 語句執行進度資訊
6.5 查看最近的交易執行資訊
6.6 查看多執行緒複製報錯細節

第 7 章 sys 係統資料庫初相識
7.1 sys 係統資料庫使用基礎環境
7.2 sys 係統資料庫初體驗
7.3 sys 係統資料庫的進度報告功能

第 8 章 sys 係統資料庫組態錶
8.1 sys_config 資料錶
8.2 sys_config_insert_set_user 觸發器
8.3 sys_config_update_set_user 觸發器

第 9 章 sys 係統資料庫應用範例薈萃
9.1 查看 SQL 語句慢在哪裡
9.2 查看是否有交易鎖等待
9.3 查看是否有 MDL 鎖等待
9.4 查看 InnoDB 緩衝池的熱點資料
9.5 查看冗餘索引
9.6 查看未使用的索引
9.7 查詢資料錶的增、刪、改、查資料量,以及 I/O 耗時統計資訊
9.8 查看 MySQL 檔案產生的磁碟流量與讀寫比例
9.9 查看哪些語句使用全資料錶掃描
9.10 查看哪些語句使用檔案排序
9.11 查看哪些語句使用臨時資料錶

第 10 章 information_schema 初相識
10.1 什麼是 information_schema
10.2 information_schema 組成物件
10.2.1 Server 層的統計資訊字典錶
10.2.2 Server 層的資料錶等級物件字典錶
10.2.3 Server 層的混閤資訊字典錶
10.2.4 InnoDB 層的係統字典錶
10.2.5 InnoDB 層的鎖、交易、統計資訊字典錶
10.2.6 InnoDB 層的全文索引字典錶
10.2.7 InnoDB 層的壓縮相關字典錶

第 11 章 information_schema 應用範例薈萃
11.1 使用 Server 層的字典錶查詢相關的中繼資料
11.1.1 查看資料庫是否使用外鍵
11.1.2 查看 InnoDB 資料錶空間檔案資訊
11.1.3 查看索引的統計資訊
11.1.4 查看資料錶的欄位相關資訊
11.1.5 查看資料庫是否使用預存程序
11.1.6 查看資料庫的分區錶資訊
11.1.7 查看資料庫的觸發器
11.1.8 查看資料庫的計畫任務
11.1.9 查看用戶端工作階段的狀態資訊
11.2 使用 InnoDB 層的字典錶查詢相關的中繼資料
11.2.1 查看索引行的資訊
11.2.2 查看資料錶的欄位相關資訊
11.2.3 查看交易鎖等待資訊
11.2.4 查看 InnoDB 緩衝池的熱點資料

第 12 章 mysql 係統資料庫的權限係統錶
12.1 user
12.2 db
12.3 tables_priv
12.4 columns_priv
12.5 procs_priv
12.6 proxies_priv

第 13 章 mysql 係統資料庫之存取權限控製係統
13.1 存取權限控製係統概述
13.2 MySQL 提供哪些權限
13.3 MySQL 帳號命名規則
13.4 MySQL 帳號存取控製兩階段
13.4.1 第一階段(帳號和密碼認證)
13.4.2 第二階段(權限檢查)
13.5 權限變更的影響
13.6 MySQL 常見連接問題

第 14 章 mysql 係統資料庫之統計資訊錶
14.1 統計資訊概述
14.2 統計資訊錶詳解
14.2.1 innodb_table_stats
14.2.2 innodb_index_stats

第 15 章 mysql 係統資料庫之複製資訊錶
15.1 複製資訊錶概述
15.2 複製資訊錶詳解
15.2.1 slave_master_info
15.2.2 slave_relay_log_info
15.2.3 slave_worker_info
15.2.4 gtid_executed
15.2.5 ndb_binlog_index

第 16 章 mysql 係統資料庫之日誌記錄錶
16.1 日誌資訊概述
16.2 日誌錶詳解
16.2.1 general_log
16.2.2 slow_log

第 17 章 mysql 係統資料庫應用範例薈萃
17.1 查看使用者不同作用域的權限
17.1.1 查看全域權限
17.1.2 查看資料庫權限等級
17.1.3 查看資料錶權限等級
17.1.4 查看欄位權限等級
17.2 查看統計資訊
17.2.1 查看資料錶統計資訊
17.2.2 查看索引統計資訊
17.3 查看 SQL 日誌資訊

第 18 章 複製技術的演進
18.1 複製格式概述
18.2 根據資料安全的複製技術演進
18.2.1 非同步複製
18.2.2 半同步複製
18.2.3 增強半同步複製
18.2.4 群組複製
18.2.5 GTID 複製
18.3 根據複製效率的複製技術演進
18.3.1 單執行緒複製
18.3.2 DATABASE 平行複製
18.3.3 LOGICAL_CLOCK 平行複製
18.3.4 WRITESET 平行複製

第 19 章 交易概念基礎
19.1 4種交易隔離等級和3種異常現象
19.1.1 標準的交易隔離等級
19.1.2 調整交易隔離等級
19.2 從交易提交談起
19.2.1 交易管理
19.2.2 資料庫的檔案
19.2.3 WAL日誌先寫
19.3 MySQL 的 Redo 日誌
19.3.1 Redo 日誌寫入磁碟時間點
19.3.2 Redo 日誌格式
19.3.3 相關參數及概念
19.3.4 CheckPoint 概念
19.3.5 Redo 日誌的設定
19.3.6 Redo 日誌與 Binlog 協調運作
19.4 MVCC 介紹
19.4.1 MVCC 原理
19.4.2 具體程式碼

第 20 章 InnoDB 鎖
20.1 InnoDB 鎖概述
20.1.1 InnoDB 鎖分類
20.1.2 列級鎖
20.1.3 錶級鎖
20.1.4 鎖模式對應的涵義
20.2 加鎖驗證
20.2.1 REPEATABLE-READ 隔離等級 + 資料錶無顯式主鍵和索引
20.2.2 REPEATABLE-READ 隔離等級 + 資料錶有顯式主鍵無索引
20.2.3 REPEATABLE-READ 隔離等級 + 資料錶無顯式主鍵有索引
20.2.4 REPEATABLE-READ 隔離等級 + 資料錶有顯式主鍵和索引
20.2.5 READ-COMMITTED 隔離等級 + 資料錶無顯式主鍵和索引
20.2.6 READ-COMMITTED 隔離等級 + 資料錶有顯式主鍵無索引
20.2.7 READ-COMMITTED 隔離等級 + 資料錶無顯式主鍵有索引
20.2.8 READ-COMMITTED 隔離等級 + 資料錶有顯式主鍵和索引

第 21 章 SQL 最佳化
21.1 SQL 最佳化基礎概念
21.2 MySQL 的 Join 演算法
21.3 MySQL 的最佳化特性

第 22 章 MySQL 讀寫擴充
22.1 分散式架構概述
22.2 分庫分錶兩種方式
22.2.1 中介軟體方式
22.2.2 用戶端方式
22.2.3 用戶端方式與中介軟體方式不同
22.2.4 分庫與分錶
22.3 中介軟體運作方式及原理
22.4 架構設計及業務場景
22.5 關於中介軟體的一些限製
22.5.1 跨資料庫查詢、複雜的 SQL 語句支援
22.5.2 分散式交易

圖書序言

  • ISBN:9789864349586
  • 叢書係列:單行本
  • 規格:平裝 / 416頁 / 17 x 23 x 2.08 cm / 普通級 / 單色印刷 / 初版
  • 齣版地:颱灣

圖書試讀

用户评价

相关图书

本站所有內容均為互聯網搜尋引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度google,bing,sogou

© 2025 twbook.tinynews.org All Rights Reserved. 灣灣書站 版權所有