现在主库的MySQL的QPS一直在3K/s左右,想知道其到底执行了那些SQL,或者是那些SQL执行的次数比较多:

腾讯云的后台监控:

开启腾讯云的SQL审计后,下载几分钟SQL日志文件, 下列语句在MySQL建表,如我们下载了6分钟的单实例审计日志:

CREATE TABLE `ex` (
`AffectRows` varchar(255) DEFAULT NULL,
`ErrCode` varchar(255) DEFAULT NULL,
`SqlType` varchar(255) DEFAULT NULL,
`TableName` varchar(255) DEFAULT NULL,
`PolicyName` varchar(255) DEFAULT NULL,
`DBName` varchar(255) DEFAULT NULL,
`Sql` text CHARACTER SET utf8mb4,
`Host` varchar(255) DEFAULT NULL,
`User` varchar(255) DEFAULT NULL,
`ExecTime` varchar(255) DEFAULT NULL,
`CpuTime` varchar(255) DEFAULT NULL,
`LockWaitTime` varchar(255) DEFAULT NULL,
`CheckRows` varchar(255) DEFAULT NULL,
`SentRows` varchar(255) DEFAULT NULL,
`ThreadId` varchar(255) DEFAULT NULL,
`NsTime` varchar(255) DEFAULT NULL,
`IoWaitTime` varchar(255) DEFAULT NULL,
`TrxLivingTime` varchar(255) DEFAULT NULL,
`Timestamp` varchar(255) DEFAULT NULL,
`Result` varchar(255) DEFAULT NULL,
`id` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`),
FULLTEXT KEY `idx_sql` (`Sql`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8

将sql文件导入到表中,执行下列SQL:

select tab,op,count(*) num from (
select case when `sql` like 'insert%' then 'insert'
when `sql` like 'replace%' then 'replace'
when `sql` like 'update%' then 'update'
when `sql` like 'delete%' then 'delete'
when `sql` like 'select%' then 'select' else '' end op,
case when `sql` like 'insert%' then substring_index(substring_index(LOWER(`sql`), '(', 1),'into',-1)
when `sql` like 'replace%' then substring_index(substring_index(LOWER(`sql`), '(', 1),'into',-1)
when `sql` like 'update%' then substring_index(substring_index(LOWER(`sql`), 'set', 1),'update',-1)
when `sql` like 'delete%' then substring_index(substring_index(LOWER(`sql`), 'where', 1),'from',-1)
when `sql` like 'select%' then substring_index(substring_index(LOWER(`sql`), 'where', 1),'from',-1) else '' end tab,`sql`
from ex where `sql` like 'insert%' or
`sql` like 'update%' or `sql` like 'delete%' or `sql` like 'select%' or `sql` like 'replace%' ) t
GROUP BY tab,op order by 3 desc

执行结果:

初步得到执行排序,初步计算其QPS:

前2个查询命令,QPS =550000/60/6=1527次/秒,其每秒3000多次/秒,这2个查询占用几乎一半左右,大体知道其SQL调用情况。

如果要查某个表可以使用全文索引:

--查询user表,没有join关联字段,有"select"的查询
select * from ex where MATCH(`sql`) AGAINST ('+sys_user -join +select' IN BOOLEAN MODE);

立马就可以查询到明细情况。

这里查询了增删改查,如果只差TPS,可以把SQL查询语句的 " or `sql` like 'select%' "  去掉就可以查DML的调用次数

  总结:

1,该方法在百万级别的SQL审计中,能快速分析出哪个表的调用表次数多

2,结合mysql的fullindex全文索引,快速定位到具体的SQL

3,主要用来分析QPS高的原因

实用QPS和TPS高的高效分析方法的更多相关文章

  1. 搞懂高并发性能指标:QPS、TPS、RT、吞吐量

      一.QPS,每秒查询 QPS:Queries Per Second意思是"每秒查询率",是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的 ...

  2. kafka系列四、kafka架构原理、高可靠性存储分析及配置优化

    一.概述 Kakfa起初是由LinkedIn公司开发的一个分布式的消息系统,后成为Apache的一部分,它使用Scala编写,以可水平扩展和高吞吐率而被广泛使用.目前越来越多的开源分布式处理系统如Cl ...

  3. QPS、TPS、并发用户数、吞吐量关系

    1.QPS QPS Queries Per Second  是每秒查询率 ,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准, 即每秒的响应请求数,也即 ...

  4. 简述 QPS、TPS、并发用户数、吞吐量关系

    1. QPS QPS Queries Per Second 是每秒查询率 ,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准, 即每秒的响应请求数,也即 ...

  5. QPS、TPS、并发用户数、吞吐量

    1.QPS QPS Queries Per Second 是每秒查询率 ,是一台服务器 每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内 所处理流量多少的衡量标准, 即每秒的响应请求数,也 ...

  6. MySQL CPU %sys 高的案例分析(三)

    [现象] 最近有台服务器晚上CPU告警,系统抓取的故障期间的snapshot显示CPU %sys较高,同时context switch在300K以上. 是否过高的context switch引起的%s ...

  7. 网站性能测试指标(QPS,TPS,吞吐量,响应时间)详解

    转载:http://www.51testing.com/html/16/n-3723016.html   常用的网站性能测试指标有:吞吐量.并发数.响应时间.性能计数器等. 并发数 并发数是指系统同时 ...

  8. 性能测试需求分析 业务PV量,响应时间、QPS、TPS

    一. 性能测试需求分析 1.1      性能测试需求内容 性能测试需求应包括以下内容: a)    测试场景及用例,用例访问URL: b)   目标接口方法的入参.出参: c)    外部依赖的服务 ...

  9. MySQL SYS CPU高的案例分析(二)

    原文:MySQL SYS CPU高的案例分析(二) 后面又做了补充测试,增加了每秒context switch的监控,以及SQL执行时各步骤消耗时间的监控. [测试现象一] 启用1000个并发线程的压 ...

随机推荐

  1. enum 试图表达64位数

    enum AttributeType: unsigned long long{ aa = 1, bb = 2, cc = 0x842AC1040000}; int main() { DWORD64 b ...

  2. redis在微服务领域的贡献

    本文已收录 https://github.com/lkxiaolou/lkxiaolou 欢迎star. 前言 说到redis,可能大家的脑海中蹦出的关键词是:NoSQL.KV.高性能.缓存等.但今天 ...

  3. logging的基本使用

    logging模块打印log的时候主要有一下几个,级别顺序:CRITICAL>ERROR>WARNING>INFO>DEBUG: 1.日志输出到file: import log ...

  4. 使用寄存器点亮LED

    1. 项目:使用stm32寄存器点亮LED, 分别点亮红.绿.蓝3个灯. 2. 代码: 只需要编写main.c程序,stm3210x.h程序为空(只需要新建即可). 2.1 点亮绿灯main.c程序 ...

  5. vue3.x相对于vue2.x生命周期改动

    vue3.x已经正式发布了,部分小伙伴已经用了vue3.x开发,部分小伙伴还在观望中,下面是两个影响比较大的改动 1.beforeDestroy和destroyed不能用了. 这个应该是vue2.x项 ...

  6. 什么是Sprint计划?

    Sprint 计划是Scrum框架中的一个事件,团队将确定他们将在冲刺期间处理的产品积压项目,并讨论他们完成这些产品积压项目的初始计划. 团队可能会发现建立冲刺目标很有帮助,并以此为基础确定他们在冲刺 ...

  7. 机器学习:SVM

    SVM 前言:支持向量机(Support Vector Machine, SVM),作为最富盛名的机器学习算法之一,其本身是一个二元分类算法,为了更好的了解SVM,首先需要一些前提知识,例如:梯度下降 ...

  8. 寻找写代码感觉(八)之SpringBoot过滤器的使用

    一.什么是过滤器? 过滤器是对数据进行过滤,预处理过程,当我们访问网站时,有时候会发布一些敏感信息,发完以后有的会用*替代,还有就是登陆权限控制等,一个资源,没有经过授权,肯定是不能让用户随便访问的, ...

  9. es7集群的搭建

    es7集群的搭建 一.需求 二.前置条件 三.搭建步骤 1.下载es 2.创建 `es` 用户并给es目录授权 3.修改es的配置文件 4.es01目录下 elasticsearch.yml 的一个完 ...

  10. 2021.7.28考试总结[NOIP模拟26]

    罕见的又改完了. T1 神炎皇 吸取昨天三个出规律的教训,开场打完T2 20pts直接大力打表1h. 但怎么说呢,我不懂欧拉函数.(其实exgcd都忘了 于是只看出最大平方因子,不得不线性筛,爆拿60 ...