美文网首页
简单调查Mysql性能消耗

简单调查Mysql性能消耗

作者: 肉饼屋 | 来源:发表于2019-09-26 08:52 被阅读0次

我们可以通过Mysql自带的一些工具来进行简单的分析一些任务的性能。

前言

在使用Mysql的过程中,可能会遇到一些性能问题,整体性能突然变差了或者某个查询语句执行速度很慢,这时候可能就需要我们去调查下,由于什么原因引起的。

搭建测试环境

准备数据

我们先用sysbench创建一张有100W条记录的表

sysbench --test=oltp --oltp-table-size=1000000 --mysql-db=test --mysql-user=root prepare

表结构和部分表数据

表结构


表结构

表数据


表数据

Mysql自带的一些查询工具

Mysql自带了一些工具,可以用来测量任务的执行性能,下面会简单的介绍一些工具的用法。

单条查询性能调查-SHOW PROFILE

1.我们可以在mysql通过下面的命令,将profile功能打开

    set profiling =1;

2.然后执行相应的一些操作,这些记录的一些数据就会记录到一张临时表中,例如我们执行下面的语句:

    select pad from sbtest where pad like 'rrrr';
    select pad from sbtest where pad like 'rrrr' limit 0,10;

3.不同的查询有会不同的queryId和查询时间,我们可以用过下面语句进行查看

    show profiles;
效果图
4.使用show profiles获得数据比较简单,我们还可以对单条查询进行剖析
    show profile for query 1;
效果图
5.show profile语句无法根据时间进行排序,我们可以通过下面的语句进行排序,这样就能比较方便查看时间主要消耗哪里
    set @query_id=1;
    select 
    state,
    sum(duration) as total_r,
    round(100 * sum(duration) / (select sum(duration) from information_schema.profiling where query_id=@query_id),2) as pct_r,
    count(*) as calls,
    sum(duration) / count(*) as "r/call"
    from information_schema.profiling
    where query_id=@query_id
    group by state
    order by total_r desc;
效果图

通过explain获取sql语句执行的一些关键信息,例如是否有用到索引,涉及行数等

分别执行下面两条语句

explain select * from sbtest limit 0, 10;
explain select * from sbtest where id=100;
效果图

通过上图,我们清楚两条语句,一条有用到索引并且涉及行数为1,另一条没有用到索引,并且几乎涉及全表数据

查看服务器状态

show global status

通过show global status我们可以看到当前服务器的状态,例如连接线程数量,正在运行的线程数

效果图

查看服务器线程状态

show processlist

通过show processlist我们可以看到当前所有线程的状态,通过状态值,我们可以当前线程是否有异常

效果图

慢查询日志

我们可以通过慢查询日志,来查看一些慢查询的信息,我们也可以通过将慢查询的时间设置为0,来获取所有的查询的信息

查看慢查询日志的是否打开以及日志文件位置

show variables like 'slow_query%';
效果图

打开慢查询日志

set global slow_query_log='ON';

设置慢查询时间

set long_query_time=0;
效果图

查看慢查询日志

我们可以直接打开慢查询日志文件来查看相应的信息


效果图

结尾

这些工具都是Mysql自带的,所以当出现问题的时候,可以直接使用。基于这些工具我们也可以开发出其他功能更加丰富工具,来对数据库进行实时监控以及报警。

相关文章

  • 简单调查Mysql性能消耗

    我们可以通过Mysql自带的一些工具来进行简单的分析一些任务的性能。 前言 在使用Mysql的过程中,可能会遇到一...

  • face17 mysql创建高性能索引

    mysql创建高性能索引 简单描述 mysql中 索引 主键 唯一索引 联合索引的区别对数据库性能有什么影响 创建...

  • MySQL索引实战总结

    MySQL索引对数据检索的性能至关重要,盲目的增加索引不仅不能带来性能的提升,反而会消耗更多的额外资源,本篇总结了...

  • MySQL索引实战经验总结

    MySQL索引对数据检索的性能至关重要,盲目的增加索引不仅不能带来性能的提升,反而会消耗更多的额外资源,本篇总结了...

  • MySQL索引

    MySQL索引对数据检索的性能至关重要,盲目的增加索引不仅不能带来性能的提升,反而会消耗更多的额外资源,本篇总结了...

  • MySQL相关文章索引(2)

    1.MySQL性能优化 对MySQL语句的性能分析与优化 Mysql 监控 Innodb 阻塞状况 MySQL索引...

  • MySQL的逻辑架构

    MySQL的逻辑架构 MySQL的逻辑架构(from《高性能MySQL》)MySQL逻辑架构,来自:高性能MySQ...

  • Mysql 查看正在执行进程的命令

    参考Mysql 查看正在执行进程的命令 用途:性能调查时,可以活用此命令查看执行慢的SQL 例: SELECT C...

  • 设置角标按钮iOS

    通过设置属性值来 设置按钮角标,继承系统按钮。 下边简单设置性能不好,造成离屏渲染,消耗性能。 -(void)se...

  • [mark] web开发前端性能优化

    JavaScript的性能消耗

网友评论

      本文标题:简单调查Mysql性能消耗

      本文链接:https://www.haomeiwen.com/subject/fqjguctx.html