MySQL 8.0 参考手册  /  第8章优化

第8章优化

目录

8.1 优化概述
8.2 优化SQL语句
8.2.1 优化 SELECT 语句
8.2.2 优化子查询、派生表、视图引用和公用表表达式
8.2.3 优化 INFORMATION_SCHEMA 查询
8.2.4 优化性能模式查询
8.2.5 优化数据变更语句
8.2.6 优化数据库权限
8.2.7 其他优化技巧
8.3 优化和索引
8.3.1 MySQL如何使用索引
8.3.2 主键优化
8.3.3 空间索引优化
8.3.4 外键优化
8.3.5 列索引
8.3.6 多列索引
8.3.7 验证索引使用
8.3.8 InnoDB和MyISAM索引统计收集
8.3.9 B-Tree和哈希索引的比较
8.3.10 索引扩展的使用
8.3.11 优化器使用生成的列索引
8.3.12 不可见索引
8.3.13 降序索引
8.3.14 从 TIMESTAMP 列进行索引查找
8.4 优化数据库结构
8.4.1 优化数据大小
8.4.2 优化MySQL数据类型
8.4.3 优化多表
8.4.4 MySQL内部临时表的使用
8.4.5 数据库和表的数量限制
8.4.6 表大小限制
8.4.7 表列数和行大小的限制
8.5 优化 InnoDB 表
8.5.1 优化 InnoDB 表的存储布局
8.5.2 优化 InnoDB 事务管理
8.5.3 优化 InnoDB 只读事务
8.5.4 优化 InnoDB 重做日志记录
8.5.5 InnoDB 表的批量数据加载
8.5.6 优化 InnoDB 查询
8.5.7 优化 InnoDB DDL 操作
8.5.8 优化 InnoDB 磁盘 I/O
8.5.9 优化 InnoDB 配置变量
8.5.10 为多表系统优化 InnoDB
8.6 优化 MyISAM 表
8.6.1 优化 MyISAM 查询
8.6.2 MyISAM 表的批量数据加载
8.6.3 优化 REPAIR TABLE 语句
8.7 优化 MEMORY 表
8.8 了解查询执行计划
8.8.1 使用 EXPLAIN 优化查询
8.8.2 EXPLAIN 输出格式
8.8.3 扩展的 EXPLAIN 输出格式
8.8.4 获取命名连接的执行计划信息
8.8.5 估计查询性能
8.9 控制查询优化器
8.9.1 控制查询计划评估
8.9.2 可切换优化
8.9.3 优化器提示
8.9.4 索引提示
8.9.5 优化器成本模型
8.9.6 优化器统计
8.10 缓冲和缓存
8.10.1 InnoDB缓冲池优化
8.10.2 MyISAM 键缓存
8.10.3 准备语句和存储程序的缓存
8.11 优化锁定操作
8.11.1 内部锁定方法
8.11.2 表锁定问题
8.11.3 并发插入
8.11.4 元数据锁定
8.11.5 外部锁定
8.12 优化MySQL服务器
8.12.1 优化磁盘 I/O
8.12.2 使用符号链接
8.12.3 优化内存使用
8.13 测量性能(基准测试)
8.13.1 测量表达式和函数的速度
8.13.2 使用你自己的基准
8.13.3 使用 performance_schema 测量性能
8.14 查看服务器线程(进程)信息
8.14.1 访问进程列表
8.14.2 线程命令值
8.14.3 一般线程状态
8.14.4 复制源线程状态
8.14.5 复制 I/O(接收器)线程状态
8.14.6 复制 SQL 线程状态
8.14.7 复制连接线程状态
8.14.8 NDB Cluster 线程状态
8.14.9 事件调度器线程状态

本章介绍如何优化 MySQL 性能并提供示例。优化涉及在多个级别配置、调整和测量性能。根据您的工作角色(开发人员、DBA 或两者的组合),您可以在单个 SQL 语句、整个应用程序、单个数据库服务器或多个联网数据库服务器的级别进行优化。有时您可以积极主动并提前计划性能,而其他时候您可能会在问题发生后解决配置或代码问题。优化 CPU 和内存使用还可以提高可扩展性,使数据库能够处理更多负载而不会降低速度。