检查 mysql sql 效能使用 MySQL Slow Queries

点击:

发布日期:2013-05-06

本文来自 www.020fix.com

由于 MySQL 的普及,我们不难发现有许多 MySQL 的非专业使用者,他们十分依赖 MySQL 进行日常营运但却不想(也不打算)进一步的成为 MySQL 专家,对他们而言只要可以用就好了。当与 Query 相关的效能瓶颈出现时,这些使用者将没有能力解决所糟遇的难题,因为在这世界上并不存在对于 Slow Query 的通用解决方案;你所糟遇到的所有情况都是独一无二的。

此份文件并非技术文件,而是记载办识 MySQL Slow Queries 的一般性原则。你不需要是 MySQL 专家、也不需要知道如何分析 Query,也可以懂得如何办识出对系统效能产生最多影响的 Slow Query。一但你办识出这些 Queries 后,你就可以求助于 MySQL 专家来解决此问题。

一、建立基准(Baseline)

在你对 MySQL Server 进行任何改变之前,一定要先建立目前 MySQL Server 的效能基准,不然的话你就无法得知后续对于 Server 的调校是否真的可以提升效能。要建立基准的最简单方式就是使用 mysqlreport,你只要先让 MySQL Server 至少先运作个一整天然后再使用 mysqlreport 产生分析报表即可掌握 Server 目前的运作状况。如果你没办法让 MySQL Server 至少运作个一整天,那么产生出来的报表可能会具有偏误、比较不具代表性。

二、评估基准

mysqlreport 所产生出来的报表包含有非常多的资讯,但我们目前只需要关注在其中三项即可。首先要看的是 "Read ratio" (line 6 or 7),它应该要低于 0.01,若它超过 0.01 你就必须要分配多一点的 RAM 给 MySQL Server 使用。务必要确定系统有足够的 RAM 可使用,若系统整体的 RAM 使用量已超出负荷,然后你又调高 MySQL 可使用的 RAM 上限,将会造成 MySQL 不断地进行 SWAP 而让问题变得更严重。

接下来要看的是 "Slow" (line 16)。Slow 表示 Slow Queries 的数量,系统预设将执行时间超过 10 秒的 Query 判定为 Slow Queries,而这个项目的最后一个栏位之数值应该要低于 0.05,若它高于 0.30 你八成会发现系统有些很明显的问题发生。我们必须要尽全力地去降低 Slow 的数值。

最后一个要注意的项目是 "Waited" (line 48),尤其是最后一个栏位的数值。这个数值表示 MySQL 需要等待以取得 Table Lock 的次数之多寡,通常这个数值会低于 10%,若是它超过 10% 通常是因为 Slow Queries 所造成的。

你并不需要了解这些数值所代表的详细意义,但是它们的确让我们对于 MySQL 的运作状况有一个整体的概念。若是这些数值偏高,那么负责处理这些问题的 MySQL 专家将可以很容易的就找出问题点;但若是这些数值偏低,但 MySQL Server 却运作的十分没有效率,MySQL 专家们应该还是可以找出确切的问题点。

三、记录 Slow Queries 并且等待

MySQL 预设并不会记录 Slow Queries,你必须要修改 MySQL Server 的系统设定档,例如 /etc/my.cnf:

引用:

[mysqld]

log-slow-queries

long_query_time = 1

重新启动 MySQL 并且等待至少一整天的时间,MySQL 将会记录所有执行时间超过一秒的 Slow Queries。Slow Query Log 的档案名称预设是 slow_queries,它们会存在 MySQL 的 Data Dir 之中,若是你不知道 MySQL Data Dir 在什么地方,可以在登入 MySQL 指用以下的指令来找出:"SHOW VARIABLES LIKE 'datadir';"。在 Linux 系统中它通常会是 /var/lib/mysql/,因此 Slow Query Log 就会是 /var/lib/mysql/slow_queries.log。

四、办识出 Top 10 Slow Queries

要办识出 Top 10 Slow Queries 的最简单方式就是使用 mysqlsla 来分析 slow loq,你可以将 mysqlsla 所产生出来的报表交给 MySQL 专家,让它们协助你解决问题。在大部份的情况下,就算是只有 Top 3 的 Slow Queries 可以被克服,MySQL Server 的整体效能仍然可能会有大幅度的提升。从这里开始,之后的工作就要交由 MySQL 专家来处理。

五、确认系统效能是否已改善

假设您的 MySQL 专家具有解决 Top Slow Queries 的能力,那么你的最后工作就是确认系统效能已确实的改善。重新启动 MySQL 并且让它至少执行个一整天,再以 mysqlreport 来评估系统的运作效能,然后再将结果与之前的报表做比较,尤其注意第二步骤中所提到的那三个项目(Read ratio, Slow, and Waited)。这三个项目的值应该会很显着的降低才是,若没有,则进一步的向您的 MySQL 专家询问,他们将会告诉你为什么这不是一个可以轻易达成的 "simple fix"。

事先告知

当你的 MySQL Server 顺利的运转了几个星期之后同样的问题却再度发生时,不要觉得惊讶,因为效能的调校往往牵涉到许多复杂的层面,而不是单一的问题。当你今日解决了 MySQL 的效能问题后,有可能在几个月后你会需要再重新进行一次整个步骤,这不是 MySQL 的错,而是 "成长" 所造成的负作用。有可能只是单纯的因为你的资料库使用者发现 MySQL 运作的更顺畅,因此他们就更频繁的使用,而更频繁的使用就再度的加重系统的负载。当越多的负载加诸在您的 MySQL Server 上时,自然就需要越多的效能调校。

mysql slow queries,检查 mysql sql 效能使用 MySQL Slow Queries相关推荐

  1. mysql用户管理,常用sql语句,mysql数据库备份恢复

    2019独角兽企业重金招聘Python工程师标准>>> mysql用户管理 grant all on . to 'user1' identified by 'passwd'; gra ...

  2. MySQL用户管理、常用SQL语句、MySQL数据库备份恢复

    mysql用户管理 1.创建一个普通用户并授权 [root@gary-tao ~]# mysql -uroot -p'szyino-123' Warning: Using a password on ...

  3. mysql 存储过程 rowcount_ORACLE中的SQL%ROWCOUNT与MySQL中的ROW_COUNT()的一点异同

    ORACLE中的SQL%ROWCOUNT与MySQL中的ROW_COUNT()的一点异同 MySQL的ROW_COUNT()和ORACLE中的SQL%ROWCOUNT函数作用并不完全相同. 从作用上来 ...

  4. mysql慢查询检查流程_简单谈谈MySQL优化利器-慢查询

    慢查询 首先,无论进行何种优化,开启慢查询都算是前置条件.慢查询机制,将记录过慢的查询语句(事件),从而为DB维护人员提供优化目标. 检查慢查询是否开启 通过show variables like ' ...

  5. mysql 10分钟_10分钟入门mysql(含常用的sql语句,mysql常见问题及解决方案)

    开发中常用的sql语句 1,创建一个数据库并指定编码格式 drop database if exists test;create database test default character set ...

  6. 52次课(mysql用户管理、常用sql语句、 mysql数据库备份恢复)

    MySQL创建用户以及授权 默认用户是root用户,不可能所有人员都用root用户,创建用户防止误删除,因为mysql里边有多个库每个库里有很多表,所以需要给单独的用户做一些授权我只需要它对某一个数据 ...

  7. mysql中nchar_浅谈SQL Server、MySQL中char,varchar,nchar,nvarchar区别

    1,定义: char:    固定长度,存储ANSI字符,不足的补英文半角空格. nchar:   固定长度,存储Unicode字符,不足的补英文半角空格 varchar:  可变长度,存储ANSI字 ...

  8. oracle mysql 数据类型对比_Oracle、SQL Server、MySQL数据类型对比

    1,标准SQL数据类型 BINARY 每个字符占一个字节 任何类型的数据都可存储在这种类型的字段中.不需数据转换(例如,转换到文本数据).数据输入二进制字段的方式决定了它的输出方式. BIT 1 个字 ...

  9. mysql语句编码_使用SQL语句操作MYSQL字符编码

    -- 查看所有的字符编码 SHOW CHARACTER SET; -- 查看创建数据库的指令并查看数据库使用的编码 show create database dbtest; -- 查看数据库编码: s ...

最新文章

  1. 深入浅出的mysql第三版和第二版的区别_读《深入浅出Mysql》第二版,笔记
  2. 超越提升和迁移 充分利用云计算的七种方法
  3. import 别名_es6模块 import, export 知识点小结
  4. mysql的SQL_NO_CACHE(在查询时不使用缓存)和sql_cache用法
  5. How to resolve error message CRM_PRODUCT_SALES-E016 during product download
  6. tcp keepalive
  7. G2.9 std_alloc
  8. 鸿蒙电脑系统什么时候普及,鸿蒙操作系统开源是什么意思?华为鸿蒙系统什么时候能用...
  9. BNU 背包密码(编码与解密)
  10. [Cocos2dx] CCCamera照相机 详解
  11. MFC设置对话框Static Text字体和背景颜色
  12. Tomcat+Servlet面试题都在这里
  13. 《数字图像处理》实验二
  14. 电路板上各种标志的含义
  15. 【Pytorch with fastai】第 11 章 :使用 fastai 的中级 API 进行数据处理
  16. 每年工作日与非工作日的设置
  17. java习题小分享【关于statis你知道多少】
  18. 技术指南:手机拍照身份证识别技术
  19. JavaScript_第一天
  20. vue部署到内网和外网配置简要说明

热门文章

  1. python多线程批量过滤文件关键字
  2. 湖南大学 实验八 青蛙与蚊子
  3. 联接+AI,华为用智能联接为智能时代加速
  4. 【已解决】ERROR: ENOENT: no such file or directory,open
  5. vs code新版本,解决感叹号无法生成HTML骨架的方法
  6. 聚乙烯亚胺(PEI)超细纤维负载Pd纳米粒子,GA-PEG-PLA 甘草次酸-聚乙二醇-聚乳酸定制合成
  7. 3D步进式全景漫游解决方案,虚拟全景解决方案,一步一景全景解决方案
  8. linux中的su-命令的功能,linux su命令参数及用法详解(linux切换用户命令)
  9. Segments POJ - 3304(判断直线知否经过所有线段)
  10. HVF5220-4D-03,HVF3230-3G-02先导型二位五通电磁阀