慢Sql查看

MySQL慢查询是指在日志中记录的运行时间较长的SQL语句。出现慢查询的原因包括写操作时的脏页同步和锁等待。写操作可能导致redolog满并产生脏页,而锁则可能在并发情况下导致SQL执行变慢。解决方法包括检查慢查询日志是否开启,设置长查询时间阈值,并分析日志文件找出问题SQL。了解这些可以帮助优化数据库性能。
摘要由CSDN通过智能技术生成

1、什么是慢Mysql?

MySQL慢查询就是在日志中记录运行比较慢的SQL语句,这个功能需要开启才能用。

2、为什么会出现慢Mysql

① 写操作

刷脏页

脏页的定义是这样的:内存数据页和磁盘数据页不一致时,那么称这个内存数据页为脏页。

对于一条写操作的 SQL 来说,执行的过程中涉及到写日志,内存及同步磁盘这几种情况。

在写操作时,InnoDB会将记录写入到 redo log 中,并更新缓存,这样更新操作就算完成了。后续操作存储引擎会适当的时候(buffer pool满了或者redo log满了)把操作记录同步到磁盘里,因为写redo log 的过程是顺序写磁盘的,磁盘顺序写减少了寻道等时间,速度比随机写要快很多( 类似Kafka存储原理),因此写 redo log 速度是很快的在磁盘中,redo log 顺序存储在两个文件中,大小是一定的,且是循环写入的。在高并发场景下,redo log 很快被写满了,但是数据来不及同步到磁盘里,这时候就会产生脏页,并且还会阻塞后续的写入操作。SQL 执行自然会变慢。

② 锁

写操作时 SQL 慢的另一种情况是可能遇到了锁,当某一条 SQL 所要更改的行刚好被加了锁,那么此时只有等锁释放了后才能进行后续操作。

3、当我们发现了有慢Sql的情况该如何查看呢?

① 进入mysql

查看日志是否打开:show variables like 'slow_query_log';

显示是已经打开的

 ② 若未打开需设置打开:set global slow_query_log = on;

关闭的话就执行:set global slow_query_log = off;

③ 查看慢SQL的时间: show global variables like 'long_query_time'; 

④ 查看日志文件名: show variables like 'slow_query_log_file';

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值