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


猜你喜欢
- 摘要什么是python对象的标识python对象相等的判断自定义python对象相等的条件python对象的标识python对象标识就是py
- 任务说明:编写一个钱币定位系统,其不仅能够检测出输入图像中各个钱币的边缘,同时,还能给出各个钱币的圆心坐标与半径。效果代码实现Canny边缘
- 记录一笔,防止以后忘了可以过来看看。问题描述:今天做个小实验需要修改MySQL的配置文件,我电脑上安装的是MySQL5.6,由于安装时间太久
- 相同记录行如何取最大值我想这个东西在作一些相关采购系统或成本报价系统应该很有用的吧取当前的最有效的价格.记录下来与大家分享!--测试数据&n
- 继续分享pygame有趣的技术知识,欢迎往下看。一、先搭个架子(一)黏贴背景图:实现代码如下:import pygamepygame.ini
- 永远不要相信用户输入的内容具有适当的大小或者包含适当的字符。在使用其做出决策之前应该始终对用户输入进行验证。最佳的选择是创建一个
- 1 之前我们学习了列表,知道列表可以用来存储一组数据,可以增删改查,可以遍历2 之前我们学习了字典,知道字典可以用来存储键值对,与列表类似,
- 段落还原保持进行检查,以便确保数据库在结束时将是一致的。 在还原顺序结束后,如果恢复的文件有效并且与数据库一致,则恢复的文件将直接变为联机状
- SELECT SUBSTR (T.RPT_ID, &nbs
- 有这样一类文章标题,喜欢学习的人肯定见过:使用Google的7个技巧Web设计中9个常见的可用性错误Adobe Photoshop 75个技
- 虽然现在的GMail已经看不到这个效果,但之前那个可爱的深红色Loading仍然让许多人喜爱。我也将这款效果融入了我自己的WordPress
- 第一版,能实现,但最后发现文件的顺序改变了:import osdef reename(): nm=1 pathh="/home/h
- 指令和程序计算机的硬件系统通常由五大部件构成,包括:运算器、控制器、存储器、输入设备和输出设备。其中,运算器和控制器放在一起就是我们通常所说
- Python中的字符串方法是从python1.6到2.0慢慢加进来的,它们也被加到了Jython中。这些方法实现了string模块的大部分方
- 模块概述如果说模块是按照逻辑来组织 Python 代码的方法, 那么文件便是物理层上组织模块的方法。 因此, **一个文件被看作是一个独立模
- 前言Kettle下载与安装保姆级教程(最新)Kettle下载安装pdi-ce-7.1.0.0-12教程win10环境安装kettle与lin
- 第一种情况:有RAID,还需要做数据库备份吗?回答:需要。有了RAID,万一部份磁盘损坏,可以修复数据库,有的情况下数据库甚至可以继续使用。
- mysql 5.5 安装配置方法图文教程回忆一下mysql 5.5 安装配置方法,整理mysql 5.5 安装配置教程笔记,分享给大家。My
- 问题:由于自己做项目的时候,需要循环的绘制数据,假设有100个样本,每个样本包含两个坐标点(A, B),我需要对这两个点标上不同的颜色,同时
- 本文实例讲述了python执行shell获取硬件参数写入mysql的方法。分享给大家供大家参考。具体分析如下:最近要获取服务器各种参数,包括