高性能MySQL(第3版)

高性能MySQL(第3版)
作 者: 施瓦茨扎伊采夫特卡琴科
出版社: 电子工业出版社
丛编项:
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: 数据库 计算机与互联网
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

暂缺《高性能MySQL(第3版)》作者简介

内容简介

《高性能MySQL(第3版)》是MySQL领域的经典之作,拥有广泛的影响力。第3版更新了大量的内容,不但涵盖了最新MySQL5.5版本的新特性,也讲述了关于固态盘、高可扩展性设计和云计算环境下的数据库相关的新内容,原有的基准测试和性能优化部分也做了大量的扩展和补充。《高性能MySQL(第3版)》共分为16章和6个附录,内容涵盖MySQL架构和历史,基准测试和性能剖析,数据库软硬件性能优化,复制、备份和恢复,高可用与高可扩展性,以及云端的MySQL和MySQL相关工具等方面的内容。每一章都是相对独立的主题,读者可以有选择性地单独阅读。《高性能MySQL(第3版)》不但适合数据库管理员(DBA)阅读,也适合开发人员参考学习。不管是数据库新手还是专家,相信都能从《高性能MySQL(第3版)》有所收获。

图书目录

推荐序.......................................................................

xxiii

前言............................................................................xxv

第1

MySQL

架构与历史

............................................

MySQL

逻辑架构............................................................................................1

1.1.1

连接管理与安全性.................................................................................2

1.1.2

优化与执行............................................................................................3

并发控制.........................................................................................................3

1.2.1

读写锁...................................................................................................4

1.2.2

锁粒度...................................................................................................4

事务.................................................................................................................6

1.3.1

隔离级别...............................................................................................8

1.3.2

死锁.......................................................................................................9

1.3.3

事务日志.............................................................................................10

1.3.4

MySQL

中的事务................................................................................10

多版本并发控制

............................................................................................12

MySQL

的存储引擎......................................................................................13

1.5.1

InnoDB

存储引擎................................................................................16

1.5.2

MyISAM

存储引擎..............................................................................17

1.5.3

MySQL

内建的其他存储引擎..............................................................19

1.5.4

第三方存储引擎..................................................................................22

1.5.5

选择合适的引擎..................................................................................24

1.5.6

转换表的引擎......................................................................................27

MySQL

时间线(Timeline)..........................................................................29

MySQL

的开发模式......................................................................................32

总结...............................................................................................................33

第2

MySQL

基准测试

.............................................

为什么需要基准测试....................................................................................35

基准测试的策略

............................................................................................37

2.2.1

测试何种指标......................................................................................38

基准测试方法................................................................................................40

2.3.1

设计和规划基准测试...........................................................................41

2.3.2

基准测试应该运行多长时间................................................................42

2.3.3

获取系统性能和状态

...........................................................................43

2.3.4

获得准确的测试结果...........................................................................44

2.3.5

运行基准测试并分析结果...................................................................46

2.3.6

绘图的重要性......................................................................................47

基准测试工具................................................................................................49

2.4.1

集成式测试工具..................................................................................49

2.4.2

单组件式测试工具...............................................................................50

基准测试案例................................................................................................52

2.5.1

http_load

..............................................................................................53

2.5.2

MySQL

基准测试套件.........................................................................54

2.5.3

sysbench

..............................................................................................55

2.5.4

数据库测试套件中的dbt2

TPC-C

测试

...............................................60

2.5.5

Percona

的TPCC-MySQL

测试工具

....................................................63

总结

...............................................................................................................65

第3

服务器性能剖析...............................................

性能优化简介................................................................................................67

3.1.1

通过性能剖析进行优化.......................................................................69

3.1.2

理解性能剖析......................................................................................71

对应用程序进行性能剖析.............................................................................72

3.2.1

测量PHP

应用程序.............................................................................74

剖析MySQL

查询.........................................................................................77

3.3.1

剖析服务器负载..................................................................................77

3.3.2

剖析单条查询......................................................................................81

3.3.3

使用性能剖析......................................................................................87

诊断间歇性问题............................................................................................88

3.4.1

单条查询问题还是服务器问题............................................................89

3.4.2

捕获诊断数据

......................................................................................93

3.4.3

一个诊断案例......................................................................................98

其他剖析工具..............................................................................................

3.5.1

使用USER_STATISTICS

.............................................................

3.5.2

使用strace

.........................................................................................

总结

.............................................................................................................

第4

Schema

与数据类型优化

................................

选择优化的数据类型..................................................................................

4.1.1

整数类型...........................................................................................

4.1.2

实数类型...........................................................................................

4.1.3

字符串类型........................................................................................

4.1.4

日期和时间类型................................................................................

4.1.5

位数据类型........................................................................................

4.1.6

选择标识符(identifier)....................................................................

4.1.7

特殊类型数据....................................................................................

MySQL

schema

设计中的陷阱....................................................................

范式和反范式..............................................................................................

4.3.1

范式的优点和缺点.............................................................................

4.3.2

反范式的优点和缺点.........................................................................

4.3.3

混用范式化和反范式化.....................................................................

缓存表和汇总表..........................................................................................

4.4.1

物化视图...........................................................................................

4.4.2

计数器表...........................................................................................

加快ALTER

TABLE

操作的速度

...............................................................

4.5.1

只修改.frm

文件...............................................................................

4.5.2

快速创建MyISAM

索引

....................................................................

总结.............................................................................................................

第5

创建高性能的索引..........................................

索引基础.....................................................................................................

5.1.1

索引的类型........................................................................................

索引的优点.................................................................................................

高性能的索引策略......................................................................................

5.3.1

独立的列...........................................................................................

5.3.2

前缀索引和索引选择性

.....................................................................

5.3.3

多列索引...........................................................................................

5.3.4

选择合适的索引列顺序.....................................................................

5.3.5

聚簇索引...........................................................................................

5.3.6

覆盖索引...........................................................................................

5.3.7

使用索引扫描来做排序

.....................................................................

5.3.8

压缩(前缀压缩)索引.....................................................................

5.3.9

冗余和重复索引................................................................................

5.3.10

未使用的索引..................................................................................

5.3.11

索引和锁..........................................................................................

索引案例学习..............................................................................................

5.4.1

支持多种过滤条件.............................................................................

5.4.2

避免多个范围条件.............................................................................

5.4.3

优化排序...........................................................................................

维护索引和表..............................................................................................

5.5.1

找到并修复损坏的表.........................................................................

5.5.2

更新索引统计信息.............................................................................

5.5.3

减少索引和数据的碎片.....................................................................

总结

.............................................................................................................

第6

查询性能优化.................................................

为什么查询速度会慢..................................................................................

慢查询基础:优化数据访问.......................................................................

6.2.1

是否向数据库请求了不需要的数据..................................................

6.2.2

MySQL

是否在扫描额外的记录........................................................

重构查询的方式..........................................................................................

6.3.1

一个复杂查询还是多个简单查询......................................................

6.3.2

切分查询...........................................................................................

6.3.3

分解关联查询....................................................................................

查询执行的基础..........................................................................................

6.4.1

MySQL

客户端/

服务器通信协议

.....................................................

6.4.2

查询缓存...........................................................................................

6.4.3

查询优化处理....................................................................................

6.4.4

查询执行引擎....................................................................................

6.4.5

返回结果给客户端.............................................................................

MySQL

查询优化器的局限性.....................................................................

6.5.1

关联子查询........................................................................................

6.5.2

UNION

的限制..................................................................................

6.5.3

索引合并优化....................................................................................

6.5.4

等值传递...........................................................................................

6.5.5

并行执行

...........................................................................................

6.5.6

哈希关联...........................................................................................

6.5.7

松散索引扫描....................................................................................

6.5.8

最大值和最小值优化.........................................................................

6.5.9

在同一个表上查询和更新.................................................................

查询优化器的提示(hint)

...........................................................................

优化特定类型的查询..................................................................................

6.7.1

优化COUNT()

查询

..........................................................................

6.7.2

优化关联查询....................................................................................

6.7.3

优化子查询........................................................................................

6.7.4

优化GROUP

BY

和DISTINCT

........................................................

6.7.5

优化LIMIT

分页...............................................................................

6.7.6

优化SQL_CALC_FOUND_ROWS

...................................................

6.7.7

优化UNION

查询..............................................................................

6.7.8

静态查询分析....................................................................................

6.7.9

使用用户自定义变量.........................................................................

案例学习.....................................................................................................

6.8.1

使用MySQL

构建一个队列表

...........................................................

6.8.2

计算两点之间的距离.........................................................................

6.8.3

使用用户自定义函数.........................................................................

总结.............................................................................................................

第7

MySQL

高级特性

...........................................

分区表.........................................................................................................

7.1.1

分区表的原理....................................................................................

7.1.2

分区表的类型....................................................................................

7.1.3

如何使用分区表................................................................................

7.1.4

什么情况下会出问题.........................................................................

7.1.5

查询优化...........................................................................................

7.1.6

合并表...............................................................................................

视图.............................................................................................................

7.2.1

可更新视图........................................................................................

7.2.2

视图对性能的影响.............................................................................

7.2.3

视图的限制........................................................................................

外键约束.....................................................................................................

在MySQL

内部存储代码............................................................................

7.4.1

存储过程和函数................................................................................

7.4.2

触发器...............................................................................................

7.4.3

事件...................................................................................................

7.4.4

在存储程序中保留注释.....................................................................

游标.............................................................................................................

绑定变量.....................................................................................................

7.6.1

绑定变量的优化................................................................................

7.6.2

SQL

接口的绑定变量........................................................................

7.6.3

绑定变量的限制................................................................................

用户自定义函数..........................................................................................

插件.............................................................................................................

字符集和校对..............................................................................................

7.9.1

MySQL

如何使用字符集...................................................................

7.9.2

选择字符集和校对规则.....................................................................

7.9.3

字符集和校对规则如何影响查询......................................................

全文索引...................................................................................................

7.10.1

自然语言的全文索引.......................................................................

7.10.2

布尔全文索引..................................................................................

7.10.3

MySQL5.1

中全文索引的变化.........................................................

7.10.4

全文索引的限制和替代方案............................................................

7.10.5

全文索引的配置和优化...................................................................

分布式(XA)事务

...................................................................................

7.11.1

内部XA

事务..................................................................................

7.11.2

外部XA

事务

..................................................................................

查询缓存...................................................................................................

7.12.1

MySQL

如何判断缓存命中.............................................................

7.12.2

查询缓存如何使用内存

...................................................................

7.12.3

什么情况下查询缓存能发挥作用....................................................

7.12.4

如何配置和维护查询缓存...............................................................

7.12.5

InnoDB

和查询缓存.........................................................................

7.12.6

通用查询缓存优化...........................................................................

7.12.7

查询缓存的替代方案.......................................................................

总结...........................................................................................................

第8

优化服务器设置.............................................

MySQL

配置的工作原理.............................................................................

8.1.1

语法、作用域和动态性.....................................................................

8.1.2

设置变量的副作用.............................................................................

8.1.3

入门

...................................................................................................

8.1.4

通过基准测试迭代优化.....................................................................

什么不该做.................................................................................................

创建MySQL

配置文件...............................................................................

8.3.1

检查MySQL

服务器状态变量

...........................................................

配置内存使用..............................................................................................

8.4.1

MySQL

可以使用多少内存?............................................................

8.4.2

每个连接需要的内存.........................................................................

8.4.3

为操作系统保留内存.........................................................................

8.4.4

为缓存分配内存................................................................................

8.4.5

InnoDB

缓冲池(Buffer

Pool)

..........................................................

8.4.6

MyISAM

键缓存(Key

Caches)

........................................................

8.4.7

线程缓存...........................................................................................

8.4.8

表缓存(Table

Cache)

.......................................................................

8.4.9

InnoDB

数据字典(Data

Dictionary)................................................

配置MySQL

的I/O

行为............................................................................

8.5.1

InnoDB

I/O

配置................................................................................

8.5.2

MyISAM

的I/O

配置.........................................................................

配置MySQL

并发

.......................................................................................

8.6.1

InnoDB

并发配置..............................................................................

8.6.2

MyISAM

并发配置............................................................................

基于工作负载的配置..................................................................................

8.7.1

优化BLOB

和TEXT

的场景.............................................................

8.7.2

优化排序(Filesorts).........................................................................

完成基本配置..............................................................................................

安全和稳定的设置......................................................................................

高级InnoDB

设置.....................................................................................

总结...........................................................................................................

第9

操作系统和硬件优化.......................................

什么限制了MySQL

的性能........................................................................

如何为MySQL

选择CPU

...........................................................................

9.2.1

哪个更好:更快的CPU

还是更多的CPU.........................................

9.2.2

CPU

架构...........................................................................................

9.2.3

扩展到多个CPU

和核心

...................................................................

平衡内存和磁盘资源

..................................................................................

9.3.1

随机I/O

和顺序I/O

...........................................................................

9.3.2

缓存,读和写....................................................................................

9.3.3

工作集是什么....................................................................................

9.3.4

找到有效的内存/

磁盘比例

..............................................................

9.3.5

选择硬盘...........................................................................................

固态存储.....................................................................................................

9.4.1

闪存概述...........................................................................................

9.4.2

闪存技术...........................................................................................

9.4.3

闪存的基准测试................................................................................

9.4.4

固态硬盘驱动器(SSD