目录
8 .1 优化概述
8 .2 优化 SQL 语句
8 .2.2 优化子查询,派生 table 和视图引用
8 .2.3 优化 INFORMATION_SCHEMA 查询
8 .2.4 优化数据更改语句
8 .2.5 优化数据库特权
8 .2.6 其他优化提示
8 .3 优化和索引
8 .3.2 主键优化
8 .3.3 外键优化
8 .3.4 列索引
8 .3.5 多列索引
8 .3.6 验证索引使用情况
8 .3.7 InnoDB 和 MyISAM 索引统计信息收集
8 .3.8 B 树和哈希索引的比较
8 .3.9 索引 extensions 的使用
8 .3.10 优化器对生成的列索引的使用
8 .3.11 从 TIMESTAMP 列进行索引查找
8 .4 优化数据库结构
8 .4.2 优化 MySQL 数据类型
8 .4.3 优化许多 table
8 .4.4 MySQL 中的内部临时 table 使用
8 .4.5 数据库和 table 的数量限制
8 .4.6table 大小限制
8 .4.7table 列数和行大小的限制
8 .5 优化 InnoDBtable
8 .5.2 优化 InnoDB 事务 Management
8 .5.3 优化 InnoDB 只读事务
8 .5.4 优化 InnoDB 重做日志
8 .5.5 InnoDBtable 的批量数据加载
8 .5.6 优化 InnoDB 查询
8 .5.7 优化 InnoDB DDL 操作
8 .5.8 优化 InnoDB 磁盘 I/O
8 .5.9 优化 InnoDB 配置变量
8 .5.10 为具有多个 table 的系统优化 InnoDB
8 .6 优化 MyISAMtable
8 .6.2 MyISAMtable 的批量数据加载
8 .6.3 优化 REPAIR TABLE 语句
8 .7 优化内存 table
8 .8 了解查询执行计划
8 .8.2 EXPLAIN 输出格式
8 .8.3 扩展 EXPLAIN 输出格式
8 .8.4 获取命名连接的执行计划信息
8 .8.5 估算查询性能
8 .9 控制查询优化器
8 .9.2 可切换的优化
8 .9.3 优化器提示
8 .9.4 索引提示
8 .9.5 优化器成本模型
8 .10 缓冲和缓存
8 .10.2 MyISAM 密钥缓存
8 .10.3 MySQL 查询缓存
8 .10.4 缓存准备好的语句和存储的程序
8 .11 优化锁定操作
8 .11.2table 锁定问题
8 .11.3 并发插入
8 .11.4 元数据锁定
8 .11.5 外部锁定
8 .12 优化 MySQL 服务器
8 .12.2 优化磁盘 I/O
8 .12.3 使用符号链接
8 .12.4 优化内存使用
8 .13 评估效果(基准测试)
8 .13.2 使用自己的基准
8 .13.3 使用 performance_schema 评估绩效
8 .14 检查服务器线程(进程)信息
8 .14.2 线程命令值
8 .14.3 通用线程状态
8 .14.4 查询缓存线程状态
8 .14.5 复制源线程状态
8 .14.6 复制副本 I/O 线程状态
8 .14.7 复制副本 SQL 线程状态
8 .14.8 复制副本连接线程状态
8 .14.9 NDB 群集线程状态
8 .14.10 事件计划程序线程状态
本章说明如何优化 MySQL 性能并提供示例。优化涉及多个级别的配置,调整和测量性能。根据您的工作角色(开发人员,DBA 或两者的组合),您可以在单个 SQL 语句,整个应用程序,单个数据库服务器或多个网络数据库服务器的级别进行优化。有时,您可以主动并提前计划性能,而有时,您可能会在问题发生后对配置或代码问题进行故障排除。优化 CPU 和内存使用率也可以提高可伸缩性,从而使数据库能够处理更多负载而不会降低速度。