資料庫解剖學:從內部深解MySQL運作原理 ,

作者:小孩子4919

出版社:深智數位

ISBN:9789865501990

$66.75

產品號碼: 155697 貨號: 9789865501990 分類: , 標籤: , , , ,
  會用MySQL不代表你懂,用的熟不代表用的好,用的好不代表用的巧,從根了解MySQL,每一個指令都了然於胸,每一個步驟都輕輕鬆鬆!
 
  使用MySQL的你是否有以下困擾?
  ●為什麼這個SQL敘述執行得這麼慢?
  ●為什麼明明建立了索引但查詢計畫顯示沒用?
  ●為什麼IN查詢中的參數一多就不使用索引了?
  ●為什麼資料顯示成了亂碼?
 
  每個DBA和後端開發人員在與MySQL打交道時,多少都會遇到許多問題。而索引結構、MVCC、隔離級別的實現、鎖的使用等知識,也是想要進階MySQL必須面對的最佳化問題。
 
  本書針對各種各樣MySQL的問題提出了相應的解答方案。用非主流,非學術派、非理論派的方法說明,但內容絕不打馬虎眼涵蓋了使用MySQL工作中常見的一些核心概念。
 
  ★內容精要
  本書對MySQL的底層運行原理進行了介紹,內容涵蓋了使用MySQL在工作中常見的一些核心概念。
 
  第1部分介紹了MySQL入門的一些知識,比如MySQL的伺服器程式和用戶端程式有哪些、MySQL的啟動選項和系統變數,以及使用的字元集等。
 
  第2部分是本書後續章節的基礎,介紹了MySQL的一些基礎知識,比如記錄、頁面、索引、表空間的結構和用法等。
 
  第3部分則是經常遇到的查詢優化問題,介紹了單表查詢、連接查詢的執行原理,MySQL基於成本和規則的最佳化具體指什麼,並詳細分析了Explain語句的執行結果。
 
  第4部分則是與MySQL中的事務和鎖相關,介紹了事務概念的來源,MySQL是如何實現事務的,包括redo日誌、undo日誌、MVCC、各種鎖的細節等。
 
  ★適合讀者
  無論是身居MySQL專家身份的技術人員,還是技術有待進一步提升的DBA,甚至是剛投身於資料庫行業的新手,本書都是徹底瞭解MySQL運行原理的優秀圖書。

目錄

01 裝作自己是個小白–初識MySQL
1.1 MySQL 的用戶端/ 伺服器架構
1.2 MySQL 的安裝
1.3 啟動MySQL 伺服器程式
1.4 啟動MySQL 用戶端程式
1.5 用戶端與伺服器連接的過程
1.6 伺服器處理用戶端請求
1.7 常用儲存引擎
1.8 關於儲存引擎的一些操作
1.9 複習

02 MySQL 的調控按鈕–啟動選項和系統變數
2.1 啟動選項和設定檔
2.2 系統變數
2.3 狀態變數
2.4 複習

03 字元集和比較規則
3.1 字元集和比較規則簡介
3.2 MySQL 中支援的字元集和比較規則
3.3 字元集和比較規則的應用
3.4 複習

04 從一筆記錄說起– InnoDB記錄儲存結構
4.1 準備工作
4.2 InnoDB 頁簡介
4.3 InnoDB 行格式
4.4 複習

05 盛放記錄的大盒子–InnoDB 資料頁結構
5.1 不同類型的頁簡介
5.2 資料頁結構快覽
5.3 記錄在頁中的儲存
5.4 Page Directory(頁目錄)
5.5 Page Header(頁面表頭) 
5.6 File Header(檔案表頭)
5.7 File Trailer(檔案結尾)
5.8 複習 

06 快速查詢的秘笈–B+ 樹索引
6.1 沒有索引時進行尋找
6.2 索引
6.3 複習

07 B+ 樹索引的使用
7.1 B+ 樹索引示意圖的簡化
7.2 索引的代價
7.3 應用B+ 樹索引
7.4 回表的代價
7.5 更進一步地創建和使用索引
7.6 複習

08 資料的家– MySQL 的資料目錄
8.1 資料庫和檔案系統的關係
8.2 MySQL 資料目錄
8.3 資料目錄的結構
8.4 檔案系統對資料庫的影響
8.5 MySQL 系統資料庫簡介
8.6 複習

09 存放頁面的大池子–InnoDB 的表格空間
9.1 回憶一些舊知識
9.2 獨立表格空間結構
9.3 系統表格空間
9.4 複習

10 條條大路通羅馬–單表存取方法
10.1 存取方法的概念
10.2 const
10.3 ref
10.4 ref_or_null
10.5 range
10.6 index
10.7 all
10.8 注意事項

11 兩個表的親密接觸–連接的原理
11.1 連接簡介
11.2 連接的原理
11.3 複習

12 誰最便宜就選誰–基於成本的最佳化
12.1 什麼是成本
12.2 單表查詢的成本
12.3 連接查詢的成本
12.4 調節成本常數
12.5 複習

13 兵馬未動,糧草先行–InnoDB 統計資料是如何收集的
13.1 統計資料的儲存方式
13.2 基於磁碟的永久性統計資料
13.3 基於記憶體的非永久性統計資料 
13.4 innodb_stats_method 的使用
13.5 複習

14 基於規則的最佳化(內含子查詢最佳化二三事)
14.1 條件化簡
14.2 外連接消除
14.3 子查詢最佳化
14.4 複習

15 查詢最佳化的百科全書–EXPLAIN 詳解
15.1 執行計畫輸出中各列詳解
15.2 JSON 格式的執行計畫
15.3 Extented EXPLAIN
15.4 複習

16 神兵利器– optimizer trace的神奇功效
16.1 optimizer trace 簡介
16.2 透過optimizer trace 分析查詢最佳化工具的具體工作過程

17 調節磁碟和CPU 的矛盾–InnoDB 的Buffer Pool
17.1 快取的重要性
17.2 InnoDB 的Buffer Pool 
17.3 複習 

18 從貓爺借錢說起– 交易簡介
18.1 交易的起源 
18.2 交易的概念 
18.3 MySQL 中交易的語法
18.4 複習 

19 說過的話就一定要做到–redo 記錄檔
19.1 事先說明 
19.2 redo 記錄檔是什麼 
19.3 redo 記錄檔格式 
19.4 Mini-Transaction
19.5 redo 記錄檔的寫入過程 
19.6 redo 記錄檔 
19.7 log sequence number
19.8 checkpoint 
19.9 使用者執行緒批次從flush鏈結串列中刷出髒頁
19.10 查看系統中的各種lsn 值 
19.11 innodb_flush_log_at_trx_
19.12 崩潰恢復
19.13 遺漏的問題:LOG_BLOCK_HDR_NO 是如何計算的
19.14 複習

20 後悔了怎麼辦– undo記錄檔
20.1 交易復原的需求
20.2 交易id 
20.3 undo 記錄檔的格式
20.4 通用鏈結串列結構
20.5 FIL_PAGE_UNDO_LOG頁面
20.6 Undo 頁面鏈結串列
20.7 undo 記錄檔具體寫入過程
20.8 重用Undo 頁面
20.9 回覆段
20.10 回覆段相關設定
20.11 undo 記錄檔在崩潰恢復時的作用 
20.12 複習 

21 一筆記錄的多副面孔–交易隔離等級和MVCC
21.1 事前準備 
21.2 交易隔離等級 
21.3 MVCC 原理 
21.4 關於purge
21.5 複習 

22 工作面試老大難– 鎖
22.1 解決併發交易帶來問題的兩種基本方式
22.2 多粒度鎖 
22.3 MySQL 中的行鎖和表鎖 
22.4 敘述加鎖分析 
22.5 查看交易加鎖情況
22.6 鎖死
22.7 複習 

A 參考資料

作者介紹

作者簡介
 
小孩子4919
 
  前線上教育公司「跟誰學」後端工程師,公眾號「我們都是小青蛙」作者,喜歡研究原始程式碼,覺得把複雜的問題講清楚是一件很厲害的事情。
出版地

台灣

出版日期

06/20/2021

印刷

單色印刷

版別

初版

裝訂

平裝

語系

繁體中文

頁數

672