MySQL执行时间的查询
作者:兜兜转转m 发布时间:2024-01-14 13:54:25
上一节我们介绍了MySQL的索引,用于提高查询效率。那么我们应该优化哪些库的哪些sql呢?
答案1:肯定是查询频繁的数据库和查询执行时间长的sql。现在我们一一来解决这个问题。
首先如何判断一个数据库是否是查询频繁呢?
我们可以看它的状态信息
SHOW GLOBAL STATUS LIKE 'Com_______';
我们主要关注:
Com_delete: 删除次数
Com_insert: 插入次数
Com_select: 查询次数
Com_update: 更新次数
通过上述指令,我们可以查看到当前数据库到底是以查询为主,还是以增删改为主,从而为数据 库优化提供参考依据。 如果是以增删改为主,我们可以考虑不对其进行索引的优化。 如果是以 查询为主,那么就要考虑对数据库的索引进行优化了。
我们又该如何定位针对于那些查询语句进行优化呢? 我们可以借助于慢查询日志。
慢查询日志
慢查询日志记录了所有执行时间超过指定参数(long_query_time,单位:秒,默认10秒)的所有 SQL语句的日志。
MySQL的慢查询日志默认没有开启,我们可以查看一下系统变量 slow_query_log = off
可以通过在配置文件最后增加这两个配置信进行打开,并且查询时长不能超过2秒。
# 开启MySQL慢日志查询开关
slow_query_log=1
# 设置慢日志的时间为2秒,SQL语句执行时间超过2秒,就会视为慢查询,记录慢查询日志
long_query_time=2
配置完毕之后,通过以下指令重新启动MySQL服务器进行测试,查看慢日志文件中记录的信息
然后,再次查看开关情况,慢查询日志就已经打开了。
测试
执行如下Sql,一个查询耗时0.00033秒,一个耗时13.35秒
我们之前打开过检查慢查询日志。
最终我们发现,在慢查询日志中,只会记录执行时间超多我们预设时间(2s)的SQL,执行较快的SQL 是不会记录的
然后在实际开发中,我们也会出现这个问题,我们写的SQL逻辑并不复杂却执行了1.9s,这个sql就不会被慢查询日志记录,但是我们也应该对其进行优化。
profile
show profiles 能够在做SQL优化时帮助我们了解时间都耗费到哪里去了。
通过have_profiling 参数,能够看到当前MySQL是否支持profile操作:
设置打开。
SET profiling = 1
开关已经打开了,接下来,我们所执行的SQL语句,都会被MySQL记录,并记录执行时间消耗到哪儿去 了。 我们直接执行如下的SQL语句:
select * from tb_user;
select * from tb_user where id = 1;
select * from tb_user where name = '白起';
select count(*) from tb_sku;
查看每一条SQL的耗时情况:
到这里,我们就可以结合慢查询日志和profile来辅助分析sql的具体执行时间。
总结
慢sql查询日志修改配置文件,打开慢查询日志和记录sql执行的最长时间。
profile记录每条sql的执行时间,需要进行设置set profiling = 1;
来源:https://blog.csdn.net/abc123mma/article/details/127811132
猜你喜欢
- PHP7.0正式版也出来了,今天编译安装了一下,写下安装步骤,我是在centos6.6 环境中编译的,下面是详细的安装步骤环境依赖yum i
- 很久没写blog,太忙了。没什么时间写复杂的东西,重新把颜色渐变效果写一遍。关于颜色的效果一般就两个,颜色梯度变化和样式的颜色渐变,前者在i
- 本文实例为大家分享了python实现随机漫步的具体代码,供大家参考,具体内容如下编写randomwalk类from random impor
- 图形用户界面 (GUI)图形用户界面 (GUI) 只不过是一个桌面应用程序,可帮助我们与计算机进行交互像文本编辑器这样的 GUI 应用程序可
- 函数名:chk_Email()'返回值:布尔值(True为通过,False为未通过)'参数:email(需要判断的email
- 平常我们只听说过ADO等一类ASP对象,但在ASP中还有个鲜为人知的专门SQL Server的ASP访问对象,它就是SQLOLE.SQLSe
- up.htm'::::::: 此程序属扬子原创 ::::::::::::::::::':::::: 在sql2000,200
- 前言最近整理图片发现,好多图片都非常相似,于是写如下代码去删除,有两种方法:注:第一种方法只对于连续图片(例一个视频里截下的图片)准确率也较
- import导入模块import time #导入的时模块中的所有内容print(time.ctime()) #调用模块中的函数
- 我们一般在Excel里面是使用数据连接属性里面写sql语句,或者vba里面利用ado组件执行sql语句。新版的Excel里面带上了Power
- 一、zipfile模块的简述zipfile是python里用来做zip格式编码的压缩和解压缩的,由于是很常见的zip格式,所以这个模块使用频
- 前言小伙伴a,b,c围着吃火锅,当菜上齐了,请客的主人说:开吃!,于是小伙伴一起动筷子,这种场景如何实现Event(事件)Event(事件)
- 由于工作需要,所以前一阵子将IE升级到了8.0,结果今天发现出现一个问题,eWebEditor的在线编辑器不好用了,仔细想想,肯定是IE8搞
- 我看见朋友可以把数据库的记录输出到页面表格上去,觉得很有用。这是怎么做的啊?见下:dbtable.asp<html><he
- 目录1、如何按照字典的值的大小进行排序2、优雅的一次性判断多个条件3、如何优雅的合并两个字典1、如何按照字典的值的大小进行排序我们知道,字典
- 查看当前用户拥有的系统权限 select * from user_sys_privs; 系统权限 系统管理员授予-----sys用户 cre
- 升级了浏览器到IE9,今天进入公司网站后台突然发现有些页面进不去了,F12调试显示有JS错误:DOM Exception: INVALID_
- 说到转置操作,顺便提及矩阵与数组的区别:矩阵:数学里的概念,其元素只能是数值,这也是区别于数组的根本所在数组:计算机中的概念,代表一种数据组
- 前言pandas对大数据有很多便捷的清洗用法,尤其针对缺失值和重复值。缺失值就不用说了,会影响计算,重复值有时候可能并未带来新的信息反而增加
- 最近在倒腾一个txt文件,因为文件太大,所以给切割成了好几个小的文件,只有第一个文件有标题,从第二个开始就没有标题了。我的需求是取出指定的列