php 数据库优化怎样做?

6个月前发布 SanS三石
36 0 0

可以去看看Percona公司创始人(扎伊采夫Zaitsev,特卡琴科Tkachenko)编写,阿里员工翻译的《高性能MySQL》第三版的第5章”创建高性能的索引”和第6章”查询性能优化“.

高性能MySQL目录:

第1章MySQL架构与历史1

1.1MySQL逻辑架构1

1.1.1连接管理与安全性2

1.1.2优化与执行3

1.2并发控制3

1.2.1读写锁4

1.2.2锁粒度4

1.3事务6

1.3.1隔离级别8

1.3.2死锁9

1.3.3事务日志10

1.3.4MySQL中的事务10

1.4多版本并发控制12

1.5MySQL的存储引擎13

1.5.1InnoDB存储引擎16

1.5.2MyISAM存储引擎17

1.5.3MySQL内建的其他存储引擎19

1.5.4第三方存储引擎22

1.5.5选择合适的引擎24

1.5.6转换表的引擎27

1.6MySQL时间线(Timeline)29

1.7MySQL的开发模式32

1.8总结33

第2章MySQL基准测试35

2.1为什么需要基准测试35

2.2基准测试的策略37

2.2.1测试何种指标38

2.3基准测试方法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

2.4基准测试工具49

2.4.1集成式测试工具49

2.4.2单组件式测试工具50

2.5基准测试案例52

2.5.1http_load53

2.5.2MySQL基准测试套件54

2.5.3sysbench55

2.5.4数据库测试套件中的dbt2TPC—C测试60

2.5.5Percona的TPCC—MySQL测试工具63

2.6总结65

第3章服务器性能剖析67

3.1性能优化简介67

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

3.1.2理解性能剖析71

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

3.2.1测量PHP应用程序74

3.3剖析MySQL查询77

3.3.1剖析服务器负载77

3.3.2剖析单条查询81

3.3.3使用性能剖析87

3.4诊断间歇性问题88

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

3.4.2捕获诊断数据93

3.4.3一个诊断案例98

3.5其他剖析工具106

3.5.1使用USER_STATISTICS表106

3.5.2使用strace107

3.6总结108

第4章Schema与数据类型优化111

4.1选择优化的数据类型111

4.1.1整数类型113

4.1.2实数类型113

4.1.3字符串类型114

4.1.4日期和时间类型121

4.1.5位数据类型123

4.1.6选择标识符(identifier)125

4.1.7特殊类型数据127

4.2MySQLschema设计中的陷阱127

4.3范式和反范式129

4.3.1范式的优点和缺点130

4.3.2反范式的优点和缺点130

4.3.3混用范式化和反范式化131

4.4缓存表和汇总表132

4.4.1物化视图134

4.4.2计数器表135

4.5加快ALTERTABLE操作的速度136

4.5.1只修改.frm文件137

4.5.2快速创建MyISAM索引139

4.6总结140

第5章创建高性能的索引141

5.1索引基础141

5.1.1索引的类型142

5.2索引的优点152

5.3高性能的索引策略153

5.3.1独立的列153

5.3.2前缀索引和索引选择性153

5.3.3多列索引157

5.3.4选择合适的索引列顺序159

5.3.5聚簇索引162

5.3.6覆盖索引171

5.3.7使用索引扫描来做排序175

5.3.8压缩(前缀压缩)索引177

5.3.9冗余和重复索引178

5.3.10未使用的索引181

5.3.11索引和锁181

5.4索引案例学习183

5.4.1支持多种过滤条件183

5.4.2避免多个范围条件185

5.4.3优化排序186

5.5维护索引和表187

5.5.1找到并修复损坏的表187

5.5.2更新索引统计信息188

5.5.3减少索引和数据的碎片190

5.6总结192

第6章查询性能优化195

6.1为什么查询速度会慢195

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

6.2.1是否向服务器请求了不需要的数据196

6.2.2MySQL是否在扫描额外的记录198

6.3重构查询的方式201

6.3.1一个复杂查询还是多个简单查询201

6.3.2切分查询202

6.3.3分解关联查询203

6.4查询执行的基础204

6.4.1MySQL客户端/服务器通信协议205

6.4.2查询缓存208

6.4.3查询优化处理208

6.4.4查询执行引擎222

6.4.5返回结果给客户端223

6.5MySQL查询优化器的局限性223

6.5.1关联子查询223

6.5.2UNION的限制228

6.5.3索引合并优化228

6.5.4等值传递229

6.5.5并行执行229

6.5.6哈希关联229

6.5.7松散索引扫描229

6.5.8最大值和最小值优化231

6.5.9在同一个表上查询和更新232

6.6查询优化器的提示(hint)232

6.7优化特定类型的查询236

6.7.1优化COUNT()查询236

6.7.2优化关联查询239

6.7.3优化子查询239

6.7.4优化GROUPBY和DISTINCT239

6.7.5优化LIMIT分页241

6.7.6优化SQL_CALC_FOUND_ROWS243

6.7.7优化UNION查询243

6.7.8静态查询分析244

6.7.9使用用户自定义变量244

6.8案例学习251

6.8.1使用MySQL构建一个队列表251

6.8.2计算两点之间的距离254

6.8.3使用用户自定义函数257

6.9总结258

第7章MySQL高级特性259

7.1分区表259

7.1.1分区表的原理260

7.1.2分区表的类型261

7.1.3如何使用分区表262

7.1.4什么情况下会出问题263

7.1.5查询优化266

7.1.6合并表267

7.2视图270

7.2.1可更新视图272

7.2.2视图对性能的影响273

7.2.3视图的限制274

7.3外键约束275

7.4在MySQL内部存储代码276

7.4.1存储过程和函数278

7.4.2触发器279

7.4.3事件281

7.4.4在存储程序中保留注释283

7.5游标283

7.6绑定变量284

7.6.1绑定变量的优化286

7.6.2SQL接口的绑定变量286

7.6.3绑定变量的限制288

7.7用户自定义函数289

7.8插件290

7.9字符集和校对291

7.9.1MySQL如何使用字符集292

7.9.2选择字符集和校对规则295

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

7.10全文索引299

7.10.1自然语言的全文索引300

7.10.2布尔全文索引302

7.10.3MySQL5.1中全文索引的变化303

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

7.10.5全文索引的配置和优化306

7.11分布式(XA)事务307

7.11.1内部XA事务307

7.11.2外部XA事务308

7.12查询缓存309

7.12.1MySQL如何判断缓存命中309

7.12.2查询缓存如何使用内存311

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

7.12.4如何配置和维护查询缓存316

7.12.5InnoDB和查询缓存319

7.12.6通用查询缓存优化320

7.12.7查询缓存的替代方案321

7.13总结321

第8章优化服务器设置325

第9章操作系统和硬件优化377

第10章复制433

第11章可扩展的MySQL501

第12章高可用性543

第13章云端的MySQL563

第14章应用层优化577

第15章备份与恢复593

第16章MySQL用户工具635

附录AMySQL分支与变种649

附录BMySQL服务器状态655

附录C大文件传输683

附录DEXPLAIN687

附录E锁的调试703

附录F在MySQL上使用Sphinx713

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...