mysql-optimize MySQL优化

在这里记录了SQL优化的步骤,用到MySQL优化时用到。

[TOC]

show status了解各SQL的执行频率

SHOW STATUS 可以根据需要显示 session 级别的统计结果和 global级别的统计结果。

通过以上几个参数,可以很容易的了解当前数据库的应用是以插入更新为主还 是以查询操作为主,以及各种类型的 SQL大致的执行比例是多少。

对于事务型的应用,通过 Com_commit 和 Com_rollback 可以了解事务提交和回 滚的情况,对于回滚操作非常频繁的数据库,可能意味着应用编写存在问题。

此外,以下几个参数便于我们了解数据库的基本情况:

  1. Connections 试图连接 Mysql 服务器的次数
  2. Uptime 服务器工作时间
  3. Slow_queries 慢查询的次数

定位执行效率较低的SQL语句

  1. 可以通过慢查询日志定位那些执行效率较低的 sql 语句,用 —log-slow-queries[=file_name] 选项启动时, mysqld 写一个包含所有执行时间超过long_query_time 秒的 SQL 语句的日志文件。可以链接到管理维护中的相关章节。
  2. 使用 show processlist查看当前MYSQL的线程, 命令慢查询日志在查询结束以后才纪录,所以在应用反映执行效率出现问题的时候查 询慢查询日志并不能定位问题,可以使用 show processlist 命令查看当前 MySQL 在进行的线程,包括线程的状态,是否锁表等等,可以实时的查看 SQL 执行情况, 同时对一些锁表操作进行优化。
  3. 通过EXPLAIN 分析低效 SQL的执行计划:
    通过以上步骤查询到效率低的 SQL 后,我们可以通过 explain 或者 desc 获取MySQL 如何执行 SELECT 语句的信息,包括 select 语句执行过程表如何连接和连接 的次序。
    

参考资料