Skip to content

第16章 性能优化

学习目标 l Objective

MySQL性能优化就是通过合理安排资源,调整系统参数使MySQL运行更快、更节省资源。MySQL性能优化包括查询速度优化、数据库结构优化、MySQL服务器优化等。本章将为读者讲解以下几个内容: 性能优化的介绍、查询优化、数据库结构优化、MySQL服务器优化。

内容导航 I Navigation

  • 了解什么是优化
  • 掌握优化查询的方法
  • 掌握优化数据库结构的方法
  • 掌握优化 MySQL服务器的方法
  • 熟练掌握综合案例中性能优化的方法和技巧

16.1 优化简介

优化MySQL数据库是数据库管理员和数据库开发人员的必备技能。MySQL优化,一方面是找出系统的瓶颈,提高MySQL数据库整体的性能;另一方面需要合理的结构设计和参数调整,以提高用户操作响应的速度;同时还要尽可能节省系统资源,以便系统可以提供更大负荷的服务。本节将为读者介绍优化的基本知识。

MySQL数据库优化是多方面的,原则是减少系统的瓶颈,减少资源的占用,增加系统的反应速度。例如,通过优化文件系统,提高磁盘IO的读写速度;通过优化操作系统调度策略,提高 MySQL在高负荷情况下的负载能力;优化表结构、索引、查询语句等使查询响应更快。

在 MySQL 中可以使用 SHOW STATUS 语句查询一些 MySQL 数据库的性能参数。SHOW STATUS 语句语法如下:

sql
SHOW STATUS LIKE 'value';

其中,value是要查询的参数值,一些常用的性能参数如下:

  • Connections:连接MySQL服务器的次数。
  • Uptime:MySQL服务器的上线时间。
  • Slow_queries:慢查询的次数。
  • Com_select:查询操作的次数
  • Com_insert:插入操作的次数。
  • Com_update:更新操作的次数。
  • Com_delete:删除操作的次数。

如果查询MySQL服务器的连接次数,可以执行如下语句:

sql
SHOW STATUS LIKE 'Connections';

如果查询 MySQL服务器的慢查询次数,可以执行如下语句:

sql
SHOW STATUS LIKE 'Slow_queries';

查询其他参数的方法和两个参数的查询方法相同。慢查询次数参数可以结合慢查询日志,找出慢查询语句,然后针对慢查询语句进行表结构优化或者查询语句优化

16.2 优化查询

16.2.1 分析查询语句

16.2.2 索引对查询速度的影响

16.2.3 使用索引查询

16.2.4 优化子查询

16.3 优化数据库结构

16.3.1 将字段很多的表分解成多个表

16.3.2 增加中间表

16.3.3 增加冗余字段

16.3.4 优化插入记录的速度

16.3.5 分析表、检查表和优化表

16.4 优化MySQL服务器

16.4.1 优化服务器硬件

16.4.2 优化MySQL的参数

16.5 综合案例——全面优化MySQL服务器

16.6 专家解惑

16.7 经典习题