注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)數(shù)據(jù)庫MySQL 8查詢性能優(yōu)化

MySQL 8查詢性能優(yōu)化

MySQL 8查詢性能優(yōu)化

定 價(jià):¥158.00

作 者: 杰斯帕·威斯堡·克羅 著,史躍東,楊欣,殷海英 譯
出版社: 清華大學(xué)出版社
叢編項(xiàng):
標(biāo) 簽: 暫缺

ISBN: 9787302583912 出版時(shí)間: 2021-08-01 包裝: 平裝
開本: 其他 頁數(shù): 字?jǐn)?shù):  

內(nèi)容簡介

  主要內(nèi)容● 監(jiān)控性能,找出效果不佳的查詢● 選取要優(yōu)化的查詢,**限度地提高收益● 使用EXPLAIN ANALYZE和Visual Explain等工具來分析查詢● 借助多種策略改進(jìn)慢查詢● 正確使用索引和直方圖,創(chuàng)建快速的執(zhí)行計(jì)劃● 了解并分析鎖,從而解決爭用問題,提升系統(tǒng)吞吐量

作者簡介

  自2006年以來,Jesper Wisborg Krogh先后以SQL開發(fā)人員和數(shù)據(jù)庫管理員的身份參與到MySQL數(shù)據(jù)庫工作中,并且作為MySQL技術(shù)支持團(tuán)隊(duì)的一員,工作了8年之久。他曾在MySQL Connect和Oracle OpenWorld上多次發(fā)表演講。除了出版相關(guān)書籍外,他也會(huì)定期撰寫一些以MySQL為主題的博客文章,并為Oracle知識(shí)庫撰寫了約800份文檔。此外,Jesper Wisborg Krogh也為MySQL中的sys庫,以及MySQL 5.6等相關(guān)的OCP認(rèn)證考試做出了許多貢獻(xiàn)。在2006年轉(zhuǎn)向MySQL及軟件開發(fā)之前,Jesper Wisborg Krogh獲得計(jì)算化學(xué)的博士學(xué)位。他現(xiàn)在居住在澳大利亞的悉尼,平時(shí)喜歡在戶外散步、旅行以及閱讀等。其研究領(lǐng)域涉及MySQL集群、MySQL Enterprise Backup(MEB)、性能優(yōu)化,以及performance庫和sys庫等。

圖書目錄

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

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號