资源名称:Effective MySQL之SQL语句最优化

内容简介:

《EffectiveMySQL之SQL语句最优化》提供了很多可以用于改进数据库和应用程序性能的最佳实践技巧,并对这些技巧做了详细的解释。《EffectiveMySQL之SQL语句最优化》希望能够通过一步步详细介绍SQL优化的方法,帮助读者分析和调优有问题的SQL语句。

作者简介:

Ronald Bradford是一位在关系型数据库领域拥有20多年丰富经验的专家。他拥有深厚的专业背景以及10年以上Ingres和Oracle系统的工作知识,在过去12年中他致力于MySQL——世界上最流行的开源数据库的发展。他曾在2009年被提名为MySQL社区成员和2010年的Oracle ACE Director,其咨询领域的专家背景以及多次在国际会议上的发言也为他赢得了广泛的国际知名度。他还是Planet MySQL(2010)最受欢迎的个人MySQL技术博客作者,并且是清华大学出版社引进并出版的《PHP+MySQL专家编程》一书的作者之一。

MySQL在被Oracle公司收购之后成为主要的数据库解决方案,并获得了更多社区推广的机会。Ronald是世界范围的Oracle用户组中最受欢迎的MySQL的受邀发言人,该用户组的范围遍及北美、南美、欧洲以及亚太地区。

资源目录:

第1章 DBA五分钟速成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_SCHEMA26

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 选择唯一的行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 指定QEP100

4.6.3 索引的统计信息100

4.6.4 基于函数的索引101

4.6.5 一个表上的多个索引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_size120

6.1.2 命名码缓冲区121

6.1.3 innodb_buffer_pool_size122

6.1.4 innodb_additional_mem_pool_size124

6.1.5 query_cache_size125

6.1.6 max_heap_table_size126

6.1.7 tmp_table_size127

6.1.8 join_buffer_size129

6.1.9 sort_buffer_size129

6.1.10 read_buffer_size130

6.1.11 read_rnd_buffer_size130

6.2 有关基础工具的变量130

6.2.1 slow_query_log131

6.2.2 slow_query_log_file131

6.2.3 general_log131

6.2.4 general_log_file131

6.2.5 long_query_time132

6.2.6 log_output132

6.2.7 profiling132

6.3 其他优化变量133

6.3.1 optimizer_switch133

6.3.2 default_storage_engine133

6.3.3 max_allowed_packet134

6.3.4 sql_mode134

6.3.5 innodb_strict_mode134

6.4 其他变量134

6.5 本章小结135

第7章 SQL的生命周期137

7.1 截取SQL语句138

7.1.1 全面查询日志139

7.1.2 慢查询日志140

7.1.3 二进制日志142

7.1.4 进程列表143

7.1.5 引擎状态144

7.1.6 MySQL连接器145

7.1.7 应用程序代码146

7.1.8 INFORMATION_SCHEMA148

7.1.9 PERFORMANCE_SCHEMA148

7.1.10 SQL语句统计插件148

7.1.11 MySQL Proxy149

7.1.12 TCP/IP149

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 key187

9.2.2 rows187

9.2.3 possible_keys190

9.2.4 key_len190

9.2.5 table192

9.2.6 select_type193

9.2.7 partitions194

9.2.8 Extra195

9.2.9 id197

9.2.10 ref197

9.2.11 filtered197

9.2.12 type198

9.3 解释EXPLAIN输出结果198

9.4 本章小结201