-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

MySQL 8查詢性能優化

( 簡體 字)
作者:[澳] 杰斯帕·威斯堡·克羅(Jesper Wisborg Krogh) 著 史躍東 楊欣 殷海英 譯類別:1. -> 資料庫 -> MySQL
譯者:
出版社:清華大學出版社MySQL 8查詢性能優化 3dWoo書號: 55186
詢問書籍請說出此書號!

缺書
NT售價: 790

出版日:8/1/2021
頁數:559
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787302583912
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

MySQL性能優化是一個非常大的主題,人們通常需要花費數年時間才能掌握。《MySQL 8查詢性能優化》的篇幅就證明了這一點,即使只專注與查詢相關的優化主題,篇幅顯然就不小了。一般而言,沒有什么簡單方法可以輕松地提升性能,恰恰相反,要找到相關的解決方法,你不僅需要了解MySQL內部各部分之間的關系,還需要了解相關技術棧其他部分的內容。如果你覺得單單在性能優化方面就很難入門,那么第一步你就跨不過去。但是,請不要對性能優化感到失望,與其他技巧一樣,也可以通過實踐逐步成為性能優化高手。
撰寫《MySQL 8查詢性能優化》的目的在于,使你能在MySQL性能優化方面登堂入室,從而熟練掌握如何提升在MySQL實例上運行的那些查詢的性能。如前所述,這沒有什么簡單秘方,最佳辦法就是學習并了解性能優化過程中涉及的各個組件。這也是《MySQL 8查詢性能優化》的主要內容,當然,我們也提供了如何找到相關信息,以及如何執行一些常見任務的示例。另外,《MySQL 8查詢性能優化》的內容僅限于對MySQL本身的探討,因此關于操作系統、文件系統以及硬件級別的內容,就相對有限了。
眾所周知,MySQL以對各種存儲引擎的支持而聞名。但除了對內部臨時表相關的探討外,《MySQL 8查詢性能優化》只介紹InnoDB存儲引擎。而對于MySQL的版本,則只考慮MySQL 8。也就是說,《MySQL 8查詢性能優化》中的大部分討論內容雖然也適用于舊版本的MySQL,但通常也只是為了說明MySQL 8中的新特性與舊版本的不同之處罷了。
《MySQL 8查詢性能優化》面向的讀者
《MySQL 8查詢性能優化》是為那些具有豐富的MySQL數據庫使用經驗,并希望將知識擴展到查詢性能優化領域的開發人員和數據庫管理員而編寫的。當然,在閱讀《MySQL 8查詢性能優化》之前,你不需要具備性能優化的相關經驗。
在撰寫《MySQL 8查詢性能優化》的過程中,作者嘗試添加了盡可能多的示例代碼及其輸出結果。當然,有些示例很短,有些則很長。但無論哪種情況,作者都希望讀者能夠跟上并重現這些示例的結果。同時請記住,由于實際環境的差異(當然,這種差異和索引統計信息一樣明確),示例結果可能會取決于在示例之前,相關的表和數據的獲取方式。換句話說,即使讀者完成了所有工作,得到的結果仍然可能與《MySQL 8查詢性能優化》中的結果不同。尤其是涉及索引統計信息以及與計時等相關的數字時。
讀者可掃封底的二維碼,下載《MySQL 8查詢性能優化》的示例代碼。
《MySQL 8查詢性能優化》結構
《MySQL 8查詢性能優化》分為6部分,共計27章。在撰寫《MySQL 8查詢性能優化》時,作者試圖讓每章的內容都保持相對獨立,以便讀者將《MySQL 8查詢性能優化》用作參考書。當然,這樣做的缺點之一是有時會重復出現某些內容。例如第18章介紹了鎖的理論方面的一些知識,以及如何對鎖進行監控;而第22章則提供鎖爭用的一些示例。因此,第22章很自然會借鑒第18章中的部分信息,因此出現了一些內容上的重復。這是一個有意識的行為,作者希望各位讀者在閱讀《MySQL 8查詢性能優化》的過程中可以減少翻頁的次數,盡快找到所需內容。
在閱讀過程中,《MySQL 8查詢性能優化》的6部分將引導你逐步完成性能優化主題的相關探討。我們先從一些基本的背景知識開始,然后給出面向問題的解決方案。第Ⅰ部分將探討相關的方法論、基準以及測試數據。第Ⅱ部分重點介紹各種信息來源,如performance庫等。第Ⅲ部分介紹《MySQL 8查詢性能優化》將用到的各種工具,如MySQL shell。第Ⅳ部分則提供后面兩部分將用到的理論知識。第Ⅴ部分側重分析查詢、事務以及鎖。第Ⅵ部分則探討如何通過配置、查詢優化、復制以及緩存等技術來提升性能。某些情況下,有些內容的編排可能較特殊,例如,所有關于復制的內容都包含在單獨一章中(即第26章)。
第Ⅰ部分 入門
第Ⅰ部分介紹MySQL查詢性能優化的相關概念,包括一些高級注意事項等。其中一些并非MySQL所獨有(不過也是在MySQL上下文中進行探討的)。第Ⅰ部分包含4章。
第1章“MySQL性能優化”——該章涵蓋MySQL性能優化的一些高級概念,例如考慮整個堆棧和查詢生命周期的重要性等。
第2章“查詢優化方法論”——以有效方式解決性能問題至關重要。該章介紹有效工作的方法論,并強調積極工作的重要性。
第3章“使用Sysbench進行基準測試”——通常,我們需要使用基準測試來檢驗更改效果。該章將簡要介紹基準測試,并專門探討Sysbench工具,也包括如何創建自定義基準測試等內容。
第4章 “測試數據”——列出《MySQL 8查詢性能優化》主要使用的一些標準測試數據庫。
第Ⅱ部分 信息來源
MySQL會通過一些信息來源提供有關性能的信息。在該部分,將介紹performance庫、sys庫、information庫以及SHOW語句。雖然在該部分中使用這些信息來源的例子相對較少,但在《MySQL 8查詢性能優化》其他部分,則廣泛使用了這四個信息來源。如果你對這些信息來源還不太熟悉,我們強烈建議你詳細閱讀該部分中的各個章節。此外,該部分還包含慢查詢日志的相關內容。第Ⅱ部分共包含5章。
第5章“performance庫”——顧名思義,MySQL中與性能相關的信息的主要來源是performance庫。該章介紹相關的術語、基本概念、組織方式以及配置信息。
第6章“sys庫”——通過存儲過程和函數中的預定義視圖和工具,sys庫提供了各種報告信息。該章對sys庫各種可用的特性進行了概述。
第7章“information庫”——如果想獲得關于MySQL和數據庫的元數據信息,就需要查看information庫。該庫還包含用于性能優化的重要信息,例如關于索引、索引統計以及直方圖等信息。該章將概述sys庫中可用的視圖。
第8章“SHOW 語句”——這是獲取信息的最古老方法,可通過它獲得從執行查詢到庫的各級別信息。該章將SHOW語句與information庫和performance庫相關聯,并在某種程度上更詳細地介紹SHOW語句。而SHOW語句的某些內容,在information庫和performance庫中是沒有對應內容的。
第9章“慢查詢日志”——查找慢查詢的傳統方法,就是將其記錄到慢查詢日志中。該章將介紹如何配置慢查詢日志,如何讀取日志事件,以及如何使用mysqldump這一實用工具對事件進行聚合等。
第Ⅲ部分 工具
MySQL提供一些在執行日常任務以及特定任務時非常有用的工具。該部分涵蓋與監控和簡單查詢執行相關的三種工具。《MySQL 8查詢性能優化》將Oracle專用的MySQL監控解決方案作為監控示例。即使你當前正在使用其他監控解決方案,也建議你研究一下這個示例。因為這些不同的解決方案之間往往有一些重疊之處。此外,《MySQL 8查詢性能優化》其余部分也廣泛使用了這三種工具。該部分包含3章。
第10章“MySQL Enterprise Monitor”——監控是保證數據庫穩定運行且性能良好的最重要內容之一。該章將介紹MySQL Enterprise Monitor(MEM),并說明如何安裝試用版本,以及如何進行導航和使用圖形化用戶界面等。
第11章“MySQL Workbench”——MySQL通過MySQL Workbench為用戶提供圖形化界面。該章將介紹如何安裝和使用這一工具。在《MySQL 8查詢性能優化》中,MySQL Workbench對創建查詢執行計劃的可視化圖形(稱為Visual Explain,可視化解釋)至關重要。
第12章“MySQL shell”——Oracle為MySQL推出的最新工具之一就是MySQL shell。它是第二代的命令行客戶端,支持在SQL、Python以及JavaScript模式下執行代碼。該章將使你快速了解這一工具,并介紹該工具對外部代碼模塊的支持,分析該工具的報告基礎結構,以及如何創建自定義模塊、報告和插件等。
第Ⅳ部分 方案考量與查詢優化器
在該部分中,介紹內容的節奏稍有改變。重點從與方案、查詢優化器和鎖相關的主題,逐步轉移到性能優化的主題上。該部分包含6章。
第13章“數據類型”——在關系數據庫中,每列都有各自的數據類型。數據類型定義了各列能夠存儲的值,兩個值進行比較時所遵循的規則,以及數據的存儲方式等。該章介紹MySQL中可用的各種數據類型,并提供應該使用何種數據類型的指導信息。
第14章“索引”——索引用于查找數據。而良好的索引可以極大地提升查詢的性能。該章介紹索引的概念、關于索引的注意事項、索引類型以及索引的特性等。此外,介紹了InnoDB如何使用索引,以及應該使用何種索引策略等。
第15章“索引統計信息”——當優化器需要確定索引的有用程度以及與索引值上的條件相匹配的行數時,就需要關于索引中的數據的相關信息,即索引統計信息。該章介紹索引統計信息在MySQL中的工作方式,以及如何對其進行配置、監控和更新。
第16章“直方圖”——如果希望優化器知道給定列中值出現的頻率,則需要創建直方圖。這是MySQL 8中新添加的特性。該章將介紹如何使用直方圖,其內部結構如何,以及如何查詢直方圖的元數據和統計信息等。
第17章“查詢優化器”——在執行查詢時,優化器會決定查詢的執行方式。該章將介紹優化器要完成的任務、使用的聯接算法、聯接優化、優化器相關配置以及資源組等內容。
第18章“鎖原理與監控”——最容易給人帶來挫敗感的問題之一就是鎖爭用。該章首先說明數據庫為何需要鎖、鎖的訪問級別以及鎖的類型(粒度);然后介紹在無法獲得鎖時,如何減少鎖爭用,以及可在何處找到鎖相關的信息。
第Ⅴ部分 查詢分析
有了第Ⅳ部分的信息,現在就可對查詢進行分析了。這包括如何查找查詢,從而進行下一步的分析,然后使用EXPLAIN或performance庫分析等。當你有兩個或者兩個以上的查詢來爭用相同的鎖時,還需要考慮事務是如何工作的,并對鎖爭用問題進行調查。該部分包含4章。
第19章“查找待優化的查詢”——無論是將其作為日常運維的一部分,還是在緊急狀況下,你都需要查找那些需要分析和優化的查詢。該章將介紹如何使用performance庫、sys庫、MySQL Workbench、監控解決方案以及慢查詢日志等工具來查找那些值得研究的查詢。
第20章“分析查詢”——有了候選查詢后,就需要分析為何執行速度慢或給系統造成如此大的影響。這里用到的主要工具是EXPLAIN,該命令可提供有關優化器選擇的查詢計劃的相關信息。如何使用EXPLAIN生成和理解查詢(包括示例)計劃是該章的重點。也可使用優化器跟蹤程序來獲取有關優化器如何選擇某一查詢的更多信息。分析查詢的另一種方法是使用performance庫和sys庫將查詢分解為較小的部分。
第21章“事務”——InnoDB將所有執行操作視作事務,并且事務是一個極為重要的概念。正確使用事務可以確保原子性、一致性和隔離性。但是,事務也可能導致嚴重的性能和鎖爭用問題。該章探討事務為何成為問題,以及如何分析事務。
第22章“診斷鎖爭用”——該章介紹了四種鎖爭用的場景(刷新鎖、元數據鎖、記錄鎖以及死鎖),并探討這四種鎖的癥狀、形成原因、重建場景的方式、調查、解決方案以及預防方式等。
第Ⅵ部分 提升查詢性能
現在,你已經找到有問題的查詢,并對其進行分析,包括事務情況,以了解表現不佳的原因。但是,你應該如何改善查詢呢?該部分介紹其他章節未涵蓋的重要配置選項,以及如何改變查詢計劃、改變方案等,同時包含批量加載、復制以及緩存等相關知識。該部分包含5章。
第23章“配置”——MySQL在執行查詢時需要系統資源。該章將介紹配置這些資源的最佳實踐,以及其他討論中未曾介紹的一些重要配置選項。同時對InnoDB中的數據生命周期做了概述,將其作為探討InnoDB配置的背景知識。
第24章“改變查詢計劃”——盡管優化器通常在找到最佳查詢執行計劃方面表現不錯,但你依然需要不時為其提供幫助。例如,可能是因為沒有索引,或現有索引無法使用等,導致全表掃描的出現。你可能還想提高索引的使用率,或者可能需要重寫某個復雜條件甚至整個查詢等。該章將仔細介紹這些內容,同時說明了如何使用SKIP LOCKED子句來實現隊列系統。
第25章“DDL與批量數據加載”——在執行方案更改,或將大數據集加載到系統中時, MySQL需要完成大量工作。該章將探討如何提升這類任務的性能,包括使用MySQL shell的并行數據加載特性等。該章也包含關于數據加載注意事項的內容,這通常也適用于數據修改操作。此外,我們也顯示了順序插入和隨機插入之間的不同之處。在完成此探討后,我們就知道選擇主鍵對性能來說意味著什么。
第26章“復制”——在實例之間進行數據復制是MySQL的一項頗為流行的特性。從性能的角度看,復制包含兩方面的內容:首先,你需要確保復制操作性能良好,此外,可通過復制來提升系統性能。該章探討這兩方面的內容,介紹用于監控復制的performance庫表。
第27章“緩存”——提升查詢性能的終極方法是根本不執行查詢,或至少避免執行某部分查詢。該章將探討如何使用緩存表來降低查詢的復雜性,以及如何使用Memcached、MySQL InnoDB Memcached插件和ProxySQL來避免查詢的完全執行。
下載示例代碼和彩色圖片
《MySQL 8查詢性能優化》正文中,有些地方會提到圖中標記、箭頭或區域的顏色。《MySQL 8查詢性能優化》是黑白印刷,無法顯示彩色。讀者可在實際界面中查看確切的顏色。另外,可掃描封底二維碼,下載示例代碼和彩色圖片。
內容簡介:

● 監控性能,找出效果不佳的查詢
● 選取要優化的查詢,**限度地提高收益
● 使用EXPLAIN ANALYZE和Visual Explain等工具來分析查詢
● 借助多種策略改進慢查詢
● 正確使用索引和直方圖,創建快速的執行計劃
● 了解并分析鎖,從而解決爭用問題,提升系統吞吐量
目錄:

第Ⅰ部分入門
第1章MySQL性能優化2
1.1通盤考慮2
1.2監控3
1.3查詢的生命周期4
1.4本章小結5
第2章查詢優化方法論6
2.1綜述6
2.2核實問題7
2.3確定原因8
2.4確定解決方案8
2.5實施解決方案8
2.6主動工作10
2.7本章小結11
第3章使用Sysbench進行基準測試12
3.1最佳實踐12
3.2標準TPC基準測試14
3.3通用的基準測試工具14
3.4安裝Sysbench15
3.5執行基準測試20
3.6創建自定義基準測試25
3.6.1自定義腳本概述25
3.6.2定義選項27
3.6.3run命令27
3.6.4prepare命令29
3.6.5cleanup命令31
3.6.6注冊命令31
3.7本章小結32
第4章測試數據34
4.1下載示例數據庫34
4.2world數據庫35
4.2.1方案35
4.2.2安裝36
4.3world_x數據庫36
4.3.1方案36
4.3.2安裝36
4.4sakila數據庫37
4.4.1方案37
4.4.2安裝40
4.5employees數據庫41
4.5.1方案41
4.5.2安裝43
4.6其他數據庫44
4.7本章小結44
第Ⅱ部分信息來源
第5章performance庫46
5.1術語46
5.2線程47
5.3instrument50
5.4消費者51
5.5事件53
5.5.1事件類型53
5.5.2事件范圍53
5.5.3事件嵌套54
5.5.4事件屬性55
5.6Actor與對象56
5.7摘要56
5.8表類型57
5.9動態配置58
5.10本章小結59
第6章sys庫61
6.1sys庫配置62
6.2格式化函數64
6.3視圖65
6.4輔助函數與過程66
6.5本章小結67
第7章information庫68
7.1何為information庫68
7.2權限69
7.3視圖69
7.3.1系統信息69
7.3.2方案信息70
7.3.3性能信息74
7.3.4權限信息77
7.4索引統計數據緩存78
7.5本章小結79
第8章SHOW語句80
8.1與information庫的關系81
8.2與performance庫的關系82
8.3引擎狀態83
8.4復制與二進制日志84
8.4.1列出二進制日志84
8.4.2查看日志事件84
8.4.3顯示連接的副本87
8.5其他語句88
8.6本章小結90
第9章慢查詢日志92
9.1配置93
9.2日志事件95
9.3匯總96
9.4本章小結98
第Ⅲ部分工具
第10章MySQLEnterpriseMonitor100
10.1概述100
10.2安裝102
10.2.1下載102
10.2.2安裝104
10.3啟動和停止ServiceManager109
10.3.1在MicrosoftWindows中啟動和停止ServiceManager109
10.3.2在Linux中啟動和停止ServiceManager110
10.4添加MySQL實例111
10.5圖形管理界面113
10.5.1通用導航113
10.5.2建議器114
10.5.3時序圖116
10.5.4查詢分析器117
10.6本章小結118
第11章MySQLWorkbench119
11.1安裝120
11.1.1MicrosoftWindows120
11.1.2EnterpriseLinux7124
11.1.3Debian和Ubuntu127
11.2創建連接129
11.3使用MySQLWorkbench130
11.3.1概要130
11.3.2配置131
11.3.3安全設置133
11.3.4重新格式化查詢133
11.4EER圖134
11.5本章小結135
第12章MySQLshell136
12.1概要136
12.1.1安裝MySQLshell137
12.1.2調用MySQLshell137
12.1.3創建連接137
12.1.4語言模式139
12.1.5內建幫助140
12.1.6內建全局對象141
12.2提示符141
12.2.1內置提示符141
12.2.2自定義提示符143
12.2.3Powerline和Awesome字體145
12.3使用外部模塊146
12.4報表基礎架構148
12.4.1報表信息和幫助148
12.4.2執行報表149
12.4.3添加自己的報表151
12.5插件155
12.6本章小結161
第Ⅳ部分方案考量與查詢優化器
第13章數據類型164
13.1為何是數據類型164
13.1.1數據驗證165
13.1.2文檔166
13.1.3優化存儲166
13.1.4性能167
13.1.5正確排序167
13.2MySQL的數據類型167
13.2.1數值類型168
13.2.2日期和時間類型169
13.2.3字符串與二進制類型169
13.2.4JSON數據類型171
13.2.5空間數據類型172
13.2.6混合數據類型173
13.3性能174
13.4應該選擇何種數據類型174
13.5本章小結176
第14章索引177
14.1什么是索引177
14.2索引的概念178
14.2.1鍵與索引178
14.2.2唯一索引178
14.2.3主鍵179
14.2.4二級索引180
14.2.5簇聚索引180
14.2.6覆蓋索引180
14.3索引的限制181
14.4SQL語法181
14.4.1創建帶有索引的表182
14.4.2添加索引182
14.4.3移除索引183
14.5索引的缺點是什么?184
14.5.1存儲184
14.5.2更新索引185
14.5.3優化器185
14.6索引類型186
14.6.1B-tree索引186
14.6.2全文索引188
14.6.3空間索引189
14.6.4多值索引190
14.6.5哈希索引193
14.7索引的特性195
14.7.1函數索引196
14.7.2前綴索引196
14.7.3不可見索引197
14.7.4降序索引198
14.7.5分區與索引198
14.7.6自生成索引200
14.8InnoDB與索引200
14.8.1簇聚索引201
14.8.2二級索引201
14.8.3建議201
14.8.4最佳用例201
14.9索引策略202
14.9.1何時添加或者移除索引?202
14.9.2主鍵的選擇203
14.9.3添加二級索引203
14.9.4多列索引204
14.9.5覆蓋索引205
14.10本章小結205
第15章索引統計信息206
15.1何為索引統計信息?206
15.2InnoDB與索引統計信息207
15.2.1統計信息是如何被收集的?207
15.2.2頁采樣208
15.2.3事務隔離級別209
15.2.4配置統計信息類型209
15.3持久索引統計信息209
15.3.1配置210
15.3.2索引統計信息表211
15.4臨時索引統計信息214
15.5監控215
15.5.1information庫中的STATISTICS視圖215
15.5.2SHOWINDEX語句217
15.5.3information庫中的INNODB_TABLESTATS視圖219
15.5.4information庫中的TABLES視圖及SHOWTABLESTATUS語句220
15.6更新統計信息223
15.6.1自動更新223
15.6.2ANALYZETABLE語句224
15.6.3mysqlcheck程序225
15.7本章小結227
第16章直方圖229
16.1何為直方圖?229
16.2何時應該添加直方圖信息?230
16.3直方圖內部信息231
16.3.1bucket231
16.3.2累積頻率232
16.3.3直方圖類型234
16.4直方圖的添加與維護236
16.4.1直方圖的創建與更新236
16.4.2采樣237
16.4.3刪除直方圖238
16.5查看直方圖數據238
16.6直方圖報告示例239
16.6.1列出所有直方圖240
16.6.2列出一個直方圖的所有信息240
16.6.3列出一個單值直方圖的桶信息241
16.6.4列出一個等高直方圖的桶信息243
16.7查詢示例244
16.8本章小結247
第17章查詢優化器248
17.1轉換249
17.2基于成本的優化249
17.2.1基礎:單表SELECT操作250
17.2.2表聯接順序251
17.2.3默認過濾效果251
17.2.4查詢成本252
17.3聯接算法254
17.3.1嵌套循環254
17.3.2塊嵌套循環257
17.3.3哈希聯接260
17.4聯接優化263
17.4.1索引合并263
17.4.2多范圍讀(MRR)269
17.4.3批量key訪問(BKA)270
17.4.4其他優化271
17.5配置優化器274
17.5.1引擎成本275
17.5.2服務器成本275
17.5.3優化器開關277
17.5.4優化器提示278
17.5.5索引提示281
17.5.6配置選項282
17.6資源組282
17.6.1獲取資源組相關信息283
17.6.2管理資源組283
17.6.3分配資源組285
17.6.4性能考量286
17.7本章小結287
第18章鎖原理與監控288
18.1為何會需要鎖?288
18.2鎖訪問級別289
18.3鎖粒度289
18.3.1用戶級別鎖289
18.3.2刷新鎖291
18.3.3元數據鎖292
18.3.4顯式表鎖295
18.3.5隱式表鎖295
18.3.6記錄鎖297
18.3.7gap鎖、next-key鎖以及預測鎖299
18.3.8插入意向鎖300
18.3.9自增鎖302
18.3.10備份鎖302
18.3.11日志鎖304
18.4獲取鎖失敗304
18.4.1元數據鎖和備份鎖等待超時305
18.4.2InnoDB鎖等待超時305
18.4.3死鎖306
18.5減少鎖相關的問題309
18.5.1事務大小與期限309
18.5.2索引309
18.5.3記錄訪問順序310
18.5.4事務隔離級別310
18.5.5搶占鎖312
18.6監控鎖313
18.6.1performance庫313
18.6.2sys庫314
18.6.3狀態計數器與InnoDB指標314
18.6.4InnoDB鎖監控與死鎖日志315
18.7本章小結318
第Ⅴ部分查詢分析
第19章查找待優化的查詢320
19.1performance庫321
19.1.1語句事件表321
19.1.2prepared語句的匯總325
19.1.3表的I/O匯總327
19.1.4文件I/O匯總信息332
19.1.5錯誤匯總表334
19.2sys庫335
19.2.1語句視圖335
19.2.2表I/O視圖337
19.2.3文件I/O視圖338
19.2.4語句性能分析器340
19.3MySQLWorkbench343
19.3.1性能報告344
19.3.2客戶端連接報告346
19.4MySQLEnterpriseMonitor346
19.4.1查詢分析器346
19.4.2時間序列圖349
19.4.3即席查詢報告350
19.5慢查詢日志352
19.6本章小結352
第20章分析查詢354
20.1EXPLAIN用法355
20.1.1顯式查詢的用法355
20.1.2EXPLAINANALYZE355
20.1.3連接的用法356
20.2EXPLAIN格式357
20.2.1傳統格式358
20.2.2JSON格式359
20.2.3樹狀格式362
20.2.4VisualExplain364
20.3EXPLAIN輸出368
20.3.1EXPLAIN字段368
20.3.2選擇類型371
20.3.3訪問類型372
20.3.4Extra信息376
20.4EXPLAIN示例377
20.4.1單表,全表掃描378
20.4.2單表,索引訪問379
20.4.3兩張表和覆蓋索引380
20.4.4多列索引381
20.4.5兩張表并帶有子查詢和排序382
20.5優化器跟蹤384
20.6performance庫事件分析387
20.6.1檢查存儲過程387
20.6.2分析階段事件391
20.6.3使用sys.ps_trace_thread()過程進行分析393
20.6.4使用ps_trace_statement_digest()過程進行分析396
20.7本章小結400
第21章事務401
21.1事務的影響401
21.1.1鎖402
21.1.2undo日志402
21.2INNODB_TRX403
21.3InnoDB監視器406
21.4INNODB_METRICS和sys.metrics407
21.5performance庫事務410
21.5.1事務事件及其語句410
21.5.2事務匯總表416
21.6本章小結417
第22章診斷鎖爭用418
22.1刷新鎖419
22.1.1癥狀419
22.1.2原因419
22.1.3構建420
22.1.4調研420
22.1.5解決方案423
22.1.6預防423
22.2元數據鎖和方案鎖424
22.2.1癥狀424
22.2.2原因424
22.2.3構建424
22.2.4調研425
22.2.5解決方案431
22.2.6預防431
22.3記錄鎖432
22.3.1癥狀432
22.3.2原因434
22.3.3構建435
22.3.4調研435
22.3.5解決方案436
22.3.6預防437
22.4死鎖437
22.4.1癥狀437
22.4.2原因438
22.4.3構建438
22.4.4調研439
22.4.5解決方案444
22.4.6預防444
22.5本章小結445
第Ⅵ部分提升查詢性能
第23章配置448
23.1最佳實踐448
23.2InnoDB綜述451
23.3InnoDB緩沖池452
23.3.1緩沖池大小453
23.3.2緩沖池實例455
23.3.3轉儲緩沖池455
23.3.4舊塊子列表455
23.3.5刷新頁457
23.4重做日志458
23.4.1日志緩沖區459
23.4.2日志文件459
23.5并行查詢執行461
23.6查詢緩沖區462
23.7內部臨時表463
23.8本章小結465
第24章改變查詢計劃466
24.1測試數據466
24.2出現過多全表掃描的癥狀467
24.3錯誤查詢468
24.4未使用索引470
24.4.1不在多列索引的靠左位置471
24.4.2數據類型不匹配473
24.4.3函數依賴476
24.5改善索引的使用情況478
24.5.1添加覆蓋索引479
24.5.2錯誤索引480
24.5.3重寫復雜索引條件487
24.6重寫復雜查詢488
24.6.1公共表表達式(CTE)489
24.6.2窗口函數493
24.6.3使用聯接來重寫子查詢494
24.6.4將查詢拆分為多個部分495
24.7隊列系統:SKIPLOCKED496
24.8多個OR或者IN條件498
24.9本章小結502
第25章DDL與批量數據加載504
25.1方案更改505
25.1.1算法505
25.1.2其他考量506
25.1.3刪除或者截斷表506
25.2數據加載的一般性考量507
25.3以主鍵順序插入516
25.3.1自增長主鍵516
25.3.2插入已有數據517
25.3.3UUID主鍵518
25.4InnoDB緩沖池與二級索引519
25.5配置521
25.6事務與加載方式522
25.7MySQLshell并行數據加載522
25.8本章小結524
第26章復制526
26.1復制概述527
26.2監控528
26.2.1連接表529
26.2.2applier表531
26.2.3日志狀態533
26.2.4組復制表534
26.3連接534
26.3.1復制事件534
26.3.2網絡535
26.3.3維護源信息536
26.3.4寫入中繼日志536
26.4applier線程536
26.4.1并行applier537
26.4.2主鍵538
26.4.3放寬數據安全538
26.4.4復制過濾器539
26.5將工作負載卸載到副本540
26.5.1讀操作的橫向擴展540
26.5.2任務分離540
26.6本章小結541
第27章緩存542
27.1緩存,無處不在542
27.2MySQL中的緩存543
27.2.1緩存表543
27.2.2直方圖統計信息545
27.3Memcached546
27.3.1獨立服務器模式下的Memcached547
27.3.2MySQLInnoDBMemcached插件549
27.4ProxySQL552
27.5緩存技巧558
27.6本章小結559
序: