数字金字塔MySQL存储过程_千金良方——MySQL性能优化金字塔法则
基 礎 篇
第1章 MYSQL初始化安裝、簡單安全加固3
1.1 背景3
1.2 初始化安裝3
1.2.1 下載二進制安裝文件3
1.2.2 創建MYSQL用戶3
1.2.3 創建程序、數據存放目錄4
1.2.4 解壓縮二進制安裝文件并設置目錄權限4
1.2.5 軟鏈接程序路徑,并設置MYSQL命令環境變量5
1.2.6 配置MY.CNF文件參數5
1.2.7 初始化MYSQL6
1.2.8 啟動MYSQL7
1.3 簡單安全加固8
1.3.1 登錄MYSQL8
1.3.2 刪除非ROOT或非LOCALHOST的用戶并修改ROOT密碼9
1.3.3 刪除TEST庫,清理MYSQL.DB表10
1.4 創建用戶、庫、表、數據12
1.4.1 創建管理用戶并授權12
1.4.2 創建庫、表、程序賬號13
1.4.3 插入數據14
1.5 MYSQL參數模板16
第2章 MYSQL常用的兩種升級方法21
2.1 背景21
2.2 MYSQL 5.5.54的安裝21
2.3 升級MYSQL 5.5.54到MYSQL 5.6.3521
2.3.1 使用MYSQL_UPGRADE直接升級數據字典庫21
2.3.2 使用MYSQLDUMP邏輯備份數據30
2.4 升級注意事項38
第3章 MYSQL體系結構41
3.1 快速安裝MYSQL41
3.2 數據目錄結構43
3.3 MYSQL SERVER體系結構46
3.4 MYSQL中的存儲引擎48
3.5 INNODB存儲引擎體系結構48
3.6 INNODB存儲引擎后臺線程52
3.7 MYSQL前臺線程54
第4章 PERFORMANCE_SCHEMA初相識56
4.1 什么是PERFORMANCE_SCHEMA56
4.2 PERFORMANCE_SCHEMA使用快速入門57
4.2.1 檢查當前數據庫版本是否支持57
4.2.2 啟用PERFORMANCE_SCHEMA58
4.2.3 PERFORMANCE_SCHEMA表的分類59
4.2.4 PERFORMANCE_SCHEMA簡單配置與使用62
第5章 PERFORMANCE_SCHEMA配置詳解66
5.1 編譯時配置66
5.2 啟動時配置67
5.2.1 啟動選項67
5.2.2 SYSTEM VARIABLES69
5.3 運行時配置71
5.3.1 PERFORMANCE_TIMERS表71
5.3.2 SETUP_TIMERS表72
5.3.3 SETUP_CONSUMERS表73
5.3.4 SETUP_INSTRUMENTS表76
5.3.5 SETUP_ACTORS表82
5.3.6 SETUP_OBJECTS表85
5.3.7 THREADS表87
第6章 PERFORMANCE_SCHEMA應用示例薈萃93
6.1 利用等待事件排查MYSQL性能問題93
6.2 鎖問題排查97
6.2.1 找出誰持有全局讀鎖97
6.2.2 找出誰持有MDL鎖100
6.2.3 找出誰持有表級鎖104
6.2.4 找出誰持有行級鎖107
6.3 查看最近的SQL語句執行信息112
6.3.1 查看最近的TOP SQL語句112
6.3.2 查看最近執行失敗的SQL語句114
6.4 查看SQL語句執行階段和進度信息117
6.4.1 查看SQL語句執行階段信息117
6.4.2 查看SQL語句執行進度信息120
6.5 查看最近的事務執行信息121
6.6 查看多線程復制報錯詳情123
第7章 SYS系統庫初相識126
7.1 SYS系統庫使用基礎環境126
7.2 SYS系統庫初體驗127
7.3 SYS系統庫的進度報告功能129
第8章 SYS系統庫配置表132
8.1 SYS_CONFIG表132
8.2 SYS_CONFIG_INSERT_SET_USER觸發器136
8.3 SYS_CONFIG_UPDATE_SET_USER觸發器136
第9章 SYS系統庫應用示例薈萃138
9.1 查看慢SQL語句慢在哪里138
9.2 查看是否有事務鎖等待140
9.3 查看是否有MDL鎖等待141
9.4 查看INNODB緩沖池中的熱點數據有哪些143
9.5 查看冗余索引144
9.6 查看未使用的索引145
9.7 查詢表的增、刪、改、查數據量和I/O耗時統計信息145
9.8 查看MYSQL磁盤文件產生的磁盤流量與讀寫比例146
9.9 查看哪些語句使用了全表掃描147
9.10 查看哪些語句使用了文件排序148
9.11 查看哪些語句使用了臨時表149
第10章 INFORMATION_SCHEMA初相識151
10.1 什么是INFORMATION_SCHEMA151
10.2 INFORMATION_SCHEMA組成對象153
10.2.1 SERVER層的統計信息字典表153
10.2.2 SERVER層的表級別對象字典表154
10.2.3 SERVER層的混雜信息字典表155
10.2.4 INNODB層的系統字典表156
10.2.5 INNODB層的鎖、事務、統計信息字典表157
10.2.6 INNODB層的全文索引字典表158
10.2.7 INNODB層的壓縮相關字典表160
第11章 INFORMATION_SCHEMA應用示例薈萃161
11.1 使用SERVER層的字典表查詢相關的元數據信息161
11.1.1 查看數據庫中是否使用了外鍵161
11.1.2 查看INNODB表空間文件信息162
11.1.3 查看索引的統計信息165
11.1.4 查看表的字段相關信息166
11.1.5 查看數據庫中是否使用了存儲程序167
11.1.6 查看數據庫中的分區表信息168
11.1.7 查看數據庫中的觸發器169
11.1.8 查看數據庫中的計劃任務170
11.1.9 查看客戶端會話的狀態信息172
11.2 使用INNODB層的字典表查詢相關的元數據信息173
11.2.1 查看索引列的信息173
11.2.2 查看表的字段相關信息175
11.2.3 查看事務鎖等待信息176
11.2.4 查看INNODB緩沖池中的熱點數據有哪些176
第12章 MYSQL系統庫之權限系統表177
12.1 USER177
12.2 DB179
12.3 TABLES_PRIV180
12.4 COLUMNS_PRIV181
12.5 PROCS_PRIV182
12.6 PROXIES_PRIV182
第13章 MYSQL系統庫之訪問權限控制系統184
13.1 訪問權限控制系統概述184
13.2 MYSQL提供了哪些權限185
13.3 MYSQL賬號命名規則191
13.4 MYSQL賬號訪問控制兩階段192
13.4.1 第一階段(賬號和密碼認證)192
13.4.2 第二階段(權限檢查)196
13.5 權限變更的影響197
13.6 MYSQL常見連接問題198
第14章 MYSQL系統庫之統計信息表200
14.1 統計信息概述200
14.2 統計信息表詳解203
14.2.1 INNODB_TABLE_STATS203
14.2.2 INNODB_INDEX_STATS204
第15章 MYSQL系統庫之復制信息表206
15.1 復制信息表概述206
15.2 復制信息表詳解207
15.2.1 SLAVE_MASTER_INFO207
15.2.2 SLAVE_RELAY_LOG_INFO209
15.2.3 SLAVE_WORKER_INFO211
15.2.4 GTID_EXECUTED215
15.2.5 NDB_BINLOG_INDEX217
第16章 MYSQL系統庫之日志記錄表218
16.1 日志信息概述218
16.2 日志表詳解220
16.2.1 GENERAL_LOG220
16.2.2 SLOW_LOG223
第17章 MYSQL系統庫應用示例薈萃228
17.1 查看用戶不同作用域的權限228
17.1.1 查看全局權限228
17.1.2 查看庫級別權限230
17.1.3 查看表級別權限232
17.1.4 查看字段級別權限234
17.2 查看統計信息236
17.2.1 查看表統計信息236
17.2.2 查看索引統計信息236
17.3 查看SQL日志信息237
第18章 復制技術的演進245
18.1 復制格式概述245
18.2 基于數據安全的復制技術演進246
18.2.1 異步復制246
18.2.2 半同步復制247
18.2.3 增強半同步復制249
18.2.4 組復制250
18.2.5 GTID復制253
18.3 基于復制效率的復制技術演進255
18.3.1 單線程復制255
18.3.2 DATABASE 并行復制256
18.3.3 LOGICAL_CLOCK 并行復制258
18.3.4 WRITESET并行復制260
第19章 事務概念基礎263
19.1 4種事務隔離級別和3種異常現象263
19.1.1 標準的事務隔離級別263
19.1.2 調整事務隔離級別264
19.2 從事務提交談起265
19.2.1 事務管理265
19.2.2 數據庫中的文件266
19.2.3 WAL日志先寫266
19.3 MYSQL中的REDO日志267
19.3.1 REDO日志落盤時間點267
19.3.2 REDO日志格式267
19.3.3 相關參數及概念269
19.3.4 CHECKPOINT概念269
19.3.5 REDO日志的設置271
19.3.6 REDO日志與BINLOG協調工作273
19.4 MVCC介紹274
19.4.1 MVCC原理274
19.4.2 具體代碼276
第20章 INNODB鎖280
20.1 INNODB鎖概述280
20.1.1 INNODB鎖分類280
20.1.2 行鎖280
20.1.3 表鎖281
20.1.4 鎖模式對應的含義282
20.2 加鎖驗證282
20.2.1 REPEATABLE-READ隔離級別+表無顯式主鍵和索引283
20.2.2 REPEATABLE-READ隔離級別+表有顯式主鍵但無索引286
20.2.3 REPEATABLE-READ隔離級別+表無顯式主鍵但有索引288
20.2.4 REPEATABLE-READ隔離級別+表有顯示主鍵和索引291
20.2.5 READ-COMMITTED隔離級別+表無顯式主鍵和索引293
20.2.6 READ-COMMITTED隔離級別+表有顯式主鍵無索引295
20.2.7 READ-COMMITTED隔離級別+表無顯式主鍵有索引295
20.2.8 READ-COMMITTED隔離級別+表有顯式主鍵和索引296
第21章 SQL優化299
21.1 SQL優化基礎概念299
21.2 MYSQL中的JOIN算法303
21.3 MYSQL中的優化特性305
第22章 MYSQL讀寫擴展308
22.1 分布式架構概述308
22.2 分庫分表兩種方式309
22.2.1 中間件方式309
22.2.2 客戶端方式309
22.2.3 客戶端方式與中間件方式不同310
22.2.4 分庫與分表310
22.3 中間件工作方式及原理310
22.4 架構設計及業務場景312
22.4.1 讀寫擴展案例312
22.5 關于中間件的一些限制解釋314
22.5.1 跨庫查詢、復雜的SQL語句支持314
22.5.2 分布式事務314
案 例 篇
第23章 性能測試指標和相關術語317
23.1 測試目標分類317
23.1.1 已知故障信息采集317
23.1.2 預估壓力評測317
23.2 性能測試指標318
23.2.1 數據庫性能通用“切口”318
23.2.2 測試通用術語319
23.2.3 示例320
23.3 本章小結321
第24章 歷史問題診斷和現場故障分析322
24.1 故障分析和驗證322
24.1.1 歷史問題排查322
24.1.2 在線問題分析323
24.2 故障復現排查323
24.3 本章小結325
第25章 性能調優金字塔326
25.1 硬件和系統調優327
25.1.1 硬件優化327
25.1.2 系統優化327
25.2 MYSQL調優328
25.2.1 參數調優328
25.2.2 SQL/索引調優329
25.3 架構調優329
25.4 本章小結329
第26章 SQL語句執行慢真假難辨330
26.1 概述330
26.2 測試環境331
26.3 采集數據包331
26.3.1 采集應用服務器數據包331
26.3.2 采集數據庫服務器數據包332
26.4 解析數據包333
26.4.1 使用WIRESHARK解析數據包333
26.4.2 使用TCPDUMP解析數據包335
26.5 本章小結337
第27章 如何避免三天兩頭換硬盤、內存、主板338
27.1 概述338
27.2 服務器標準化338
27.3 上線前烤機339
27.3.1 STRESS339
27.3.2 FIO341
27.3.3 數據庫烤機341
27.4 本章小結341
第28章 每隔45天的MYSQL性能低谷342
28.1 存儲知識小普及342
28.1.1 MYSQL存儲系統要求342
28.1.2 存儲系統軟件層343
28.1.3 存儲系統硬件層343
28.2 每隔45天的性能抖動344
28.3 影響I/O性能的三種RAID策略348
28.3.1 電池充放電348
28.3.2 巡讀354
28.3.3 一致性檢查356
28.4 本章小結358
第29章 MYSQL連接無法自動釋放359
29.1 環境配置359
29.2 問題現象359
29.3 診斷分析359
29.4 解決方案362
29.5 本章小結362
第30章 查詢MYSQL偶爾比較慢363
30.1 環境配置363
30.2 問題現象363
30.3 診斷分析363
30.4 選擇VIP還是DNS訪問MYSQL364
30.4.1 VIP之殤364
30.4.2 DNS之痛365
30.4.3 VIP切換還是DNS切換365
30.5 CPU節能模式365
30.6 本章小結366
第31章 MYSQL最多只允許214個連接367
31.1 環境配置367
31.2 故障現象367
31.3 故障分析367
31.4 解決方案370
31.5 MYSQL最大連接數為214的源碼解析370
31.6 LINUX資源限制371
31.6.1 資源拆分和組合371
31.6.2 進程資源限制372
31.6.3 MYSQL內部資源限制374
31.7 本章小結374
第32章 MYSQL掛起診斷思路375
32.1 環境配置375
32.2 問題現象375
32.3 診斷分析376
32.4 掛起時先做什么377
32.5 總結377
第33章 硬件和系統調優378
33.1 硬件和系統調優概覽378
33.1.1 I/O:MYSQL 80%的性能瓶頸所在378
33.2 CPU384
33.3 網絡384
33.4 其他385
33.5 總結386
第34章 并發刪除數據造成死鎖387
34.1 現象描述387
34.2 如何閱讀死鎖日志388
34.3 表結構及操作步驟390
34.4 總結390
第35章 刪除不存在的數據造成死鎖391
35.1 現象描述391
35.2 問題分析392
35.3 問題擴展392
35.4 表結構及操作步驟393
35.5 總結393
第36章 插入意向鎖死鎖394
36.1 現象描述394
36.2 問題分析395
36.3 總結397
第37章 分頁查詢優化398
37.1 現象描述398
37.2 優化方案398
第38章 子查詢優化——子查詢轉換為連接400
38.1 現象描述400
38.2 優化方案401
第39章 子查詢優化——使用DELETE刪除數據403
39.1 現象描述403
39.2 優化方案403
工 具 篇
第40章 硬件規格常用查看命令詳解407
40.1 通用命令407
40.1.1 LSHW407
40.1.2 DMIDECODE414
40.1.3 DMESG419
40.2 CPU相關命令420
40.3 磁盤相關命令422
40.3.1 SMARTCTL422
40.3.2 LSSCSI424
40.4 網卡相關命令426
40.4.1 LSPCI426
40.4.2 ETHTOOL428
40.5 HCA卡相關命令430
第41章 系統負載常用查看命令詳解433
41.1 TOP433
41.1.1 命令行選項433
41.1.2 交互式命令選項434
41.1.3 輸出結果解讀434
41.2 DSTAT436
41.2.1 命令行選項436
41.2.2 輸出結果解讀438
41.3 MPSTAT442
41.3.1 命令行選項443
41.3.2 輸出結果解讀443
41.4 SAR444
41.4.1 命令行選項444
41.4.2 輸出結果解讀446
41.5 VMSTAT453
41.5.1 命令行選項453
41.5.2 輸出結果解讀453
41.6 IOSTAT455
41.6.1 命令行選項455
41.6.2 輸出結果解釋456
41.7 FREE458
41.7.1 命令行選項459
41.7.2 輸出結果解讀459
41.8 IOTOP460
41.8.1 命令行選項461
41.8.2 交互式命令選項461
41.8.3 輸出結果解讀461
41.9 IFTOP463
41.9.1 命令行選項463
41.9.2 交互式命令選項463
41.9.3 輸出結果解讀464
41.10 IPERF465
41.10.1 命令行選項466
41.10.2 輸出結果解讀467
第42章 FIO存儲性能壓測469
42.1 安裝FIO469
42.2 測試I/O性能470
42.2.1 隨機寫470
42.2.2 順序寫470
42.2.3 隨機讀471
42.2.4 順序讀471
42.2.5 混合隨機讀寫471
42.2.6 FIO配置文件測試471
42.3 參數和結果詳解472
42.3.1 關鍵參數解釋472
42.3.2 配置文件473
42.3.3 結果解析475
42.4 FIO測試建議476
42.5 課外閱讀476
第43章 HAMMERDB在線事務處理測試477
43.1 安裝和配置HAMMERDB477
43.1.1 下載安裝包477
43.1.2 安裝HAMMERDB477
43.1.3 安裝HAMMERDB GUI依賴包478
43.2 測試481
43.3 課外閱讀492
第44章 SYSBENCH數據庫壓測工具493
44.1 安裝SYSBENCH493
44.1.1 YUM安裝493
44.1.2 RPM包安裝493
44.1.3 編譯安裝494
44.1.4 驗證安裝是否成功494
44.2 測試案例494
44.2.1 造數495
44.2.2 數據庫讀寫測試495
44.2.3 清理496
44.3 SYSBENCH 參數詳解496
44.3.1 SYSBENCH命令語法496
44.3.2 OPTIONS496
44.3.3 TESTNAME500
44.3.4 COMMAND502
44.4 數據庫測試輸出信息詳解502
44.4.1 輸出結果概述503
44.4.2 版本及關鍵測試參數輸出504
44.4.3 中間統計結果輸出504
44.4.4 整體統計結果輸出504
44.5 課外閱讀505
第45章 MYSQLADMIN和INNOTOP工具詳解506
45.1 MYSQLADMIN506
45.1.1 命令行選項506
45.1.2 實戰演示511
45.2 INNOTOP513
45.2.1 安裝INNOTOP513
45.2.2 命令行選項514
45.2.3 交互式選項515
45.2.4 實戰演示516
第46章 利用PROMETHEUS+GRAFANA 搭建炫酷的MYSQL監控平臺524
46.1 安裝PROMETHEUS525
46.1.1 下載程序包525
46.1.2 解壓縮程序包526
46.1.3 啟動PROMETHEUS527
46.2 安裝GRAFANA529
46.2.1 下載程序包529
46.2.2 解壓縮程序包530
46.2.3 啟動GRAFANA530
46.2.4 在GRAFANA中導入GRAFANA-DASHBOARDS531
46.3 監控節點部署534
46.3.1 添加主機監控534
46.3.2 添加MYSQL監控535
46.3.3 監控DASHBOARD切換536
第47章 PERCONA TOOLKIT常用工具詳解538
47.1 PT-QUERY-DIGEST538
47.1.1 命令行選項538
47.1.2 實戰演示550
47.2 PT-IOPROFILE558
47.2.1 命令行選項558
47.2.2 實戰演示559
47.3 PT-INDEX-USAGE560
47.3.1 命令行選項561
47.3.2 實戰演示563
47.4 PT-DUPLICATE-KEY-CHECKER566
47.4.1 命令行選項567
47.4.2 實戰演示568
47.5 PT-MYSQL-SUMMARY/PT-SUMMARY571
47.5.1 PT-MYSQL-SUMMARY571
47.5.2 PT-SUMMARY578
47.6 PT-PMP584
47.6.1 命令行選項585
47.6.2 實戰演示585
47.7 PT-STALK587
47.7.1 命令行選項588
47.7.2 實戰演示591
47.8 PT-SIFT594
47.8.1 命令行選項595
47.8.2 實戰演示595
第48章 MYSQL主流備份工具之MYSQLDUMP詳解598
48.1 簡介598
48.2 原理599
48.3 命令行選項601
48.3.1 連接選項601
48.3.2 文件選項602
48.3.3 DDL選項603
48.3.4 調試選項604
48.3.5 幫助選項604
48.3.6 國際化選項——與字符集相關的選項604
48.3.7 復制選項605
48.3.8 輸出格式化選項607
48.3.9 過濾選項609
48.3.10 性能選項612
48.3.11 事務選項612
48.3.12 組合選項614
48.4 實戰演示614
48.4.1 完全備份與恢復614
48.4.2 增量備份與恢復616
48.4.3 搭建主從復制架構616
48.4.4 克隆從庫618
48.4.5 指定庫表備份與恢復619
48.4.6 純文本備份與恢復621
第49章 MYSQL主流備份工具之XTRABACKUP詳解624
49.1 簡介624
49.2 原理624
49.3 命令行選項633
49.4 實戰演示644
49.4.1 完全備份與恢復644
49.4.2 增量備份與恢復645
49.4.3 基于時間點的恢復649
49.4.4 搭建主從復制架構657
49.4.5 克隆從庫659
第50章 MYSQL主流備份工具之MYDUMPER詳解662
50.1 簡介662
50.2 原理662
50.3 命令行選項664
50.3.1 MYDUMPER664
50.3.2 MYLOADER666
50.4 實戰演示667
50.4.1 安裝MYDUMPER667
50.4.2 備份與恢復669
第51章 MYSQL主流閃回工具詳解675
51.1 閃回工具科普675
51.2 BINLOG2SQL676
51.2.1 安裝和使用要求676
51.2.2 命令行選項677
51.2.3 實戰演示678
51.2.4 使用限制與注意事項690
51.3 MYFLASH690
51.3.1 安裝MYFLASH691
51.3.2 命令行選項691
51.3.3 實戰演示692
總結
以上是生活随笔為你收集整理的数字金字塔MySQL存储过程_千金良方——MySQL性能优化金字塔法则的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: net.sf.ezmorph.Morph
- 下一篇: 自然语言之情感分析(中文)