Effective MySQL之SQL语句最优化

当前位置:首页 > 计算机网络 > 数据库 > Effective MySQL之SQL语句最优化

出版社:清华大学出版社
出版日期:2013-1
ISBN:9787302304296
作者:(美) 布拉德福(Bradford,R. )
页数:201页

章节摘录

版权页:   4.5.2 DDL影响 随着表大小的不断增长,对性能的影响也不断加大。例如,在主表上添加索引平均需要20~30秒。 mysql>ALTER TABLE album ADD INDEX ml(album_type_id,country_id);Query OK,553875 rows affected(21.05 sec) 在以往版本中,ALTER语句的开销是阻塞其他语句,就像创建一个新版本的表那样。在这期间可以SELECT数据,但根据标准的升级法则,任何DML操作都会导致所有语句被阻塞。当表的大小有1G或者100G,这个阻塞时间可能会非常长。但比较近期的版本在包括MySQL产品方面和创新的解决方案方面都有了很多改进。 添加索引带来的影响并不总是一样,也会有些例外情况。InnoDB提供了快速创建索引的特性,从MySQL 5.1版本开始就可以在InnoDB的插件中使用了,并且在MySQL 5.5或更高版本中已经成为默认设置了。 其他搜索引擎也可以以不同方式来实现执行锁定的快速索引的创建,Tokutek就是其中的一个。 对磁盘空间的影响也是一个重要的考虑因素,尤其是当你在InnoDB中使用默认的公共表空间配置的时候。MySQL会为你的表创建一份副本。如果表的大小有200GB,那么在执行ALTERTABLE时你需要至少200GB额外的磁盘空间。使用InnoDB时,在执行期间这些额外的磁盘空间会被添加到公共表空间中。这部分磁盘空间在命令完成后不会被文件系统回收,而是当InnoDB需要额外磁盘空间时在内部被重复利用。尽管你可以调整策略让每个表用单独的表空间,但对于写操作密集的系统,这也是有影响的。 技巧 有一些技巧可以让阻塞操作减少到最低限度。你可以选择使用一个高可用性的容错度高的主表复制技术来支持在线变更表结构。比如近期Shlomi Noach介绍的oak-online-alter-table工具。 4.5.3磁盘空间影响 使用第2章介绍的INFORMATION SCHEMA.TABLES查询可以查看本章使用的album表的大小。

内容概要

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_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 选择唯一的行
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 一个表上的多个索引
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 二进制日志
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

编辑推荐

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

作者简介

《Effective MySQL之SQL语句最优化》是由MySQL专家Ronald Bradford撰著,书
中提供了很多可以用于改进数据库和应用程序性能的最佳实践技巧,并对这些技巧
做了详细的解释。本书希望能够通过一步步详细介绍SQL优化的方法,帮助读者分
析和调优有问题的SQL语句。
主要内容
● 找出收集和诊断问题必备的分析命令
● 创建MySQL索引来改进查询性能
● 掌握MySQL的查询执行计划
● 找出影响查询执行和性能的关键配置变量
● 用SQL语句优化的生命周期来识别、确
认、分析然后优化SQL语句,并检查优
化的结果
● 学习使用不为常人所知的一些性能技巧
来改进索引效率并简化SQL语句

图书封面


 Effective MySQL之SQL语句最优化下载 更多精彩书评



发布书评

 
 


精彩书评 (总计2条)

  •     摘自 "程序员们,看到这个评论,就别买这本书了,真的。"评论的评论;@无名:这个作者的effective系列的三本书,我都阅读了,收获挺多.里面的确提了很多东西或一些技巧,有些是略带过的,但我觉得这个没什么关系,关键是他让我知道那些东西存在可用,然后就可以google选择学习了. 这些书让我的思路打开,这个是我觉得好的原因. 其实explain的章节不应该孤立来看,书中其它章节是有好几个例子使用explain进行分析的.那些分析其实都告诉怎么使用explain.;我支持@无名的观点,对@Gaara的观点持有保留意见;这本书适合初学者看;一本书如果可以带领你入门也很不错;就像 mysql 必知必会 sql必知必会 ; 虽然薄,虽然有些解释不是很清楚,有些内容也不全需要自己做笔记增加内容,但是作为一本经常当做索引查看的新手书,对于新手来说是很不错的mysql的官方文档大而全,不是所有新人都能快速读懂,抓住重点看;<高性能mysql>太厚了,而且很多是给dba用的,对开发新手而言重点不够突出;
  •     其实买之前很期待这本书,打开后果然很受伤。之前读了《高性能mysql》,现在来看这本书,烂的真是惨目人睹(好吧,我激动了,我愤青了。。。)花了两个晚上看我了这本书,说说这本书的特点吧:1.字大行稀,无用代码占用了很大一部分,还有重复的代码。2.内容浅显,浅尝辄止,话说到一般就不说了,让读者去看参考资料...有些话不通或者让人费解,可能是翻译者的问题。3.标题党,书名和每章节的标题很大气,霸气,(秘籍啊,DBA速成啊...)总之,赶紧这本书很山寨,哎 explain 用了一章来讲,还没有<高性能msql>一个附录讲得好,讲得丰富。鸡肋啊...

精彩短评 (总计45条)

  •     内容框架还行,就是实操介绍的不过详细
  •     MySQL优化入门。
  •     最近想提高自己的mysql只是,就买 了这本,挺不错的。
  •     书比想象的小。
  •     看了一下,就像是一本手册。。。
  •     对MySQL的索引进行了深入的说明。
  •     发货速度太慢了,11号下的单,17号才拿到手
  •     优化必看
  •     经典书籍,值得收藏,没找到影音版的
  •     书也太小了吧,很薄,唯一好处是,携带方便
  •     原作者书内容很好。本想买个翻译版本看着痛快点,但翻译很垃圾,很多语句不通顺,译者缺乏责任心。一些数据库通用词汇,被直面翻译(主键译成主码等等),看着很别扭。怀疑译者根本就不是搞这行的。排版问题多,很多例子都是错行的,很容易造成误解。个别配图也是错误的(例如41页那个)
  •     书一般般
  •     这本书很好看,很不错,
  •     Effective MySQL之SQL语句最优化,mysql,优化方面的好书。
  •     差不多都是讲索引的,但是讲解的也不是很好。
  •     入门的水平,刚学的可以看看!
  •     犹豫了半天,还是给了1星。
  •     感觉有点浅显了,不过还是不错的
  •     虽然工作一直在用,看了这本书也学到些东西。
  •     什么东西都一带而过,给你个连接,介绍不详细!
  •     比较基础。还是推荐看《高性能mysql》
  •     书不是太厚,不是那种大部头的。几天时间就看完了,感觉还不错,只是讲的不是太深
  •     实用~~~~~~
  •     写得比较全面 但比较浅
  •     这本书主要讲述mysql的查询语句的优化方式,不过书中大部分是讲索引的优化内容。
  •     不过网上有免费章节,个人喜欢收藏才买,6-8的调优网上的文章一找一大堆
  •     Effective MySQL之SQL语句最优化
  •     本来内容就不太多,大多关于索引和explain命令。译者的翻译还奇差无比,不单只英文不太行,看得出来中文都有问题,很多句子根本就是病句。
  •     这本书主要讲sql语句的优化,怎样写才能更高效不冗余
  •     简单实用的mysql性能调优的技巧!
  •     真的真的,真的没必要买。
  •     第9章应该接在第2章之后看。非DBA,浏览一遍本书特别是第2,9,3,4,5,8章不论是对优化相关知识的掌握还是对面试都有好处。另外本书使用的MySQL版本多数情况下是MySQL5.1,也有少数地方提到MySQL5.5(现在MySQL8.0都出了,MyISAM彻底要死了
  •     这是什么翻译??本书起码有4颗星的质量,结果给这个外行翻译乱搞,马上掉到1颗星!!请译者出来!!!不会就别翻译?别误导新人,好吗??有点基础的看起来都困难了,新人来看的话,完全是误导! 我买来就是想进阶下,结果看这翻译都想骂人了!!请译者出来!!!请译者出来!!!请译者出来!!!
  •     仔细看到了第五章,主要了解了一些MySQL优化的分析命令和索引知识,讲解的一般,翻译也一般,后面几章草草的翻阅了一下。
  •     这本书挺好的,很薄的小册子,我看完一遍之后去面试,说的面试官一愣一愣的
  •     此书介绍的范围是挺广的,有些重点都没很详细的介绍,对于看技术书籍的人都会有中这样的疑惑的心态:为什么要这样,如果不这样.....,而看书本就是为了解决自己产生的疑惑,毕竟是基础内容,初学者倒是挺好的选择。
  •     书不错,不错不错。。。
  •     正在看感觉还行,不错
  •     短小且精悍,不错,一起买了好几本,同事用
  •     书名是sql语句的优化,但是讲的却是索引。另外讲的太浅,实用性不强。。也就值这个价。。技术书籍贵还是有道理的。。。
  •     是翻译过来的书,公司要求买的,我看了一下值得买!
  •     看了一下目录,都是说索引,太不全面了。
  •     书很小,可以装在包里坐车的时候看
  •     拿到书就翻开看了,整体还不错,就是例子选择感觉不是很好!
  •     内容泛泛而谈,一提而过,章节最后给出mysql手册的链接就让自己去看了
 

外国儿童文学,篆刻,百科,生物科学,科普,初中通用,育儿亲子,美容护肤PDF图书下载,。 零度图书网 

零度图书网 @ 2024