Effective MySQL之SQL語句最優化
來源:程序員人生 發布時間:2014-12-13 09:16:31 閱讀次數:2997次
推薦本SQL優化的書《Effective MySQL之SQL語句最優化》。
主要講授:如何去分析SQL的性能、索引的原理、如何創建適合的索引、如何去分析線上系統的性能瓶頸。
另外還介紹了幾個輔助工具:
mysqldumpslow 來分析慢查詢日志;
Google開源的mysql-slow-query-log-parser 分析慢查詢日志;
利用程序中使用MySQL Proxy來搜集SQL語句、QEP、查詢履行時間;
開源Maatkit檢查數據庫中的重復索引;
Google的MySQL補釘,引入SHOW INDEX_STATISTICS 用來分析索引;
MySQL補釘microsecond-mysql-client可以對SQL進行奧妙級別的監控;
開源sqlstats插件,統計SQL語句;
電子版下載地址:http://download.csdn.net/detail/bbirdsky/8207119
書不厚也就200頁,以下是此書的目錄:
第1章 DBA5分鐘速成 1
1.1 辨認性能問題 2
1.1.1 尋覓運行緩慢的SQL語句 2
1.1.2 確認低效查詢 3
1.2 優化查詢 6
1.2.1 不應當做的事情 6
1.2.2 確認優化 7
1.2.3 正確的方式 7
1.2.4 備選的解決方案 9
1.2 本章小結 9
第2章 基本的分析命令 11
2.1 EXPLAIN命令 12
2.1.1 EXPLAIN PARTITIONS命令 14
2.1.2 EXPLAIN EXTENDED命令 15
2.2 SHOW CREATE TABLE命令 16
2.3 SHOW INDEXES命令 18
2.4 SHOW TABLE STATUS命令 19
2.5 SHOW STATUS命令 22
2.6 SHOW VARIABLES命令 25
2.7 INFORMATION_SCHEMA 26
2.8 本章小結 27
第3章 深入理解MySQL的索引 29
3.1 示例表 30
3.2 MySQL索援用法 31
3.2.1 數據完全性 32
3.2.2 優化數據訪問 33
3.2.3 表連接 35
3.2.4 結果排序 35
3.2.5 聚合操作 35
3.3 關于存儲引擎 36
3.4 索引專業術語 37
3.5 MySQL索引類型 38
3.5.1 索引數據結構理論 39
3.5.2 MySQL實現 43
3.6 MySQL分區 54
3.7 本章小結 55
第4章 創建MySQL索引 57
4.1 本章范例中用到的表 58
4.2 已有的索引 59
4.3 單列索引 61
4.3.1 創建單列索引的語法 61
4.3.2 利用索引限制查詢讀取的行數 62
4.3.3 使用索引連接表 64
4.3.4 理解索引的基數 66
4.3.5 使用索引進行模式匹配 69
4.3.6 選擇唯1的行 71
4.3.7 結果排序 73
4.4 多列索引 75
4.4.1 肯定使用何種索引 75
4.4.2 多列索引的語法 79
4.4.3 創建更好的索引 79
4.4.4 多個列上的索引 82
4.4.5 合并WHERE和ORDER BY語句 83
4.4.6 MySQL優化器的特性 85
4.4.7 查詢提示 88
4.4.8 復雜查詢 92
4.5 添加索引釀成的影響 93
4.5.1 DML影響 93
4.5.2 DDL影響 96
4.5.3 磁盤空間影響 97
4.6 MySQL的限制和不足 100
4.6.1 基于開消的優化器 100
4.6.2 指定QEP 100
4.6.3 索引的統計信息 100
4.6.4 基于函數的索引 101
4.6.5 1個表上的多個索引 101
4.7 本章小結 101
第5章 創建更好的MySQL索引 103
5.1 更好的索引 104
5.1.1 覆蓋索引 104
5.1.2 存儲引擎的含義 109
5.1.3 局部索引 110
5.2 本章小結 114
第6章 MySQL配置選項 117
6.1 內存相干的系統變量 118
6.1.1 key_buffer_size 120
6.1.2 命名碼緩沖區 121
6.1.3 innodb_buffer_pool_size 122
6.1.4 innodb_additional_mem_pool_size 124
6.1.5 query_cache_size 125
6.1.6 max_heap_table_size 126
6.1.7 tmp_table_size 127
6.1.8 join_buffer_size 129
6.1.9 sort_buffer_size 129
6.1.10 read_buffer_size 130
6.1.11 read_rnd_buffer_size 130
6.2 有關基礎工具的變量 130
6.2.1 slow_query_log 131
6.2.2 slow_query_log_file 131
6.2.3 general_log 131
6.2.4 general_log_file 131
6.2.5 long_query_time 132
6.2.6 log_output 132
6.2.7 profiling 132
6.3 其他優化變量 133
6.3.1 optimizer_switch 133
6.3.2 default_storage_engine 133
6.3.3 max_allowed_packet 134
6.3.4 sql_mode 134
6.3.5 innodb_strict_mode 134
6.4 其他變量 134
6.5 本章小結 135
第7章 SQL的生命周期 137
7.1 截取SQL語句 138
7.1.1 全面查詢日志 139
7.1.2 慢查詢日志 140
7.1.3 2進制日志 142
7.1.4 進程列表 143
7.1.5 引擎狀態 144
7.1.6 MySQL連接器 145
7.1.7 利用程序代碼 146
7.1.8 INFORMATION_SCHEMA 148
7.1.9 PERFORMANCE_SCHEMA 148
7.1.10 SQL語句統計插件 148
7.1.11 MySQL Proxy 149
7.1.12 TCP/IP 149
7.2 辨認有問題的語句 149
7.2.1 慢查詢日志分析 152
7.2.2 TCP/IP分析 154
7.3 確認語句履行 156
7.3.1 環境 156
7.3.2 時間統計 157
7.4 語句分析 158
7.5 語句優化 159
7.6 結果驗證 159
7.7 本章小結 160
第8章 性能優化之隱藏秘籍 161
8.1 索引管理優化 162
8.1.1 整合DDL語句 162
8.1.2 去除重復索引 163
8.1.3 刪除不用的索引 164
8.1.4 監控無效的索引 165
8.2 索引列的改進 165
8.2.1 數據類型 165
8.2.2 列的類型 168
8.3 其他SQL優化 170
8.3.1 減少SQL語句 171
8.3.2 簡化SQL語句 178
8.3.3 使用MySQL的復制功能 180
8.4 本章小結 181
第9章 MySQL EXPLAIN命令詳解 183
9.1 語法 184
9.2 各列詳解 185
9.2.1 key 187
9.2.2 rows 187
9.2.3 possible_keys 190
9.2.4 key_len 190
9.2.5 table 192
9.2.6 select_type 193
9.2.7 partitions 194
9.2.8 Extra 195
9.2.9 id 197
9.2.10 ref 197
9.2.11 filtered 197
9.2.12 type 198
9.3 解釋EXPLAIN輸出結果 198
9.4 本章小結 201
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
------分隔線----------------------------
------分隔線----------------------------