您现在的位置是:主页 > news > 二手表网站/百度快照优化

二手表网站/百度快照优化

admin2025/5/12 16:20:58news

简介二手表网站,百度快照优化,一级a做美国片免费网站,深圳有什么做招聘网站的公司吗本文包括:查询正在进行中的慢查询show processlist查看慢查询日志slow_query_log查询正在进行中的慢查询show processlist:输入:show processlist;因为正在进行中的请求全部都被记录在information_schema系统库中的processlist表中&#xff0…

二手表网站,百度快照优化,一级a做美国片免费网站,深圳有什么做招聘网站的公司吗本文包括:查询正在进行中的慢查询show processlist查看慢查询日志slow_query_log查询正在进行中的慢查询show processlist:输入:show processlist;因为正在进行中的请求全部都被记录在information_schema系统库中的processlist表中&#xff0…

fc8b7ac5f0f14b6db1cd7f2917977116.png

本文包括:

  1. 查询正在进行中的慢查询show processlist
  2. 查看慢查询日志slow_query_log

查询正在进行中的慢查询show processlist:

输入:

show processlist;

因为正在进行中的请求全部都被记录在information_schema系统库中的processlist表中,请求结束后将删除processlist表中的相应记录。

因此采用select语句也可以查询到相同的正在进行的请求记录:

select * from information_schema.processlist;

输出结果为:

81ce85bb9f841afce295fe806a4423bb.png

查看该表的字段。

ID:这个表的主键。

USER:用户。

HOST:端口。

DB:正在对哪个数据库进行动作。

COMMAND:正在执行的命令,对于数据分析师来说,一般这里显示的就是Query,即正在执行一个SQL查询语句。

TIME:已执行时间,通过这里我们可以看到正在执行的语句是否是一个慢查询。MySQL慢查询的判定方法是请求进行时间超过10秒,当然也可以自行定义(具体查看下一节slow_query_log)。

STATE:执行状态,这里分享一个大佬总结好的可能状态:https://yq.aliyun.com/articles/530197

INFO:正在执行的SQL语句。

通过show processlist,root用户可以查看所有用户正在进行的SQL中是否有慢查询存在,除了 root 用户以外,在工作中作为一个互联网民工,如果没有获得process权限的情况下,都只能看到自己正在运行的线程。

如果查询过慢,想要停止,可以通过'kill + ID;'停止该线程。

查看慢查询日志slow_query_log:

因为当查询结束,processlist表中相应的记录将被删除,此时便不能通过show processlist查看已经结束的查询,需要换一个方法。

我们可以通过慢查询日志定位那些执行效率较低的SQL语句,同样因为慢查询日志只在查询结束后才进行记录,因此不能通过这个方法查看正在进行的请求。

慢查询日志的路径可以通过以下语句来查看:

show variables like 'slow_query_log%';

输出结果为:

3b9c6930dbfa5d89174f149df5e14060.png

其中slow_query_log_file就是慢查询日志的存储位置。

但我们发现还有一行为slow_query_log且它的值是OFF,这说明慢查询日志功能目前处于关闭状态,想要打开该功能,可以通过以下语句设置全局参数:

Set global slow_query_log = 1;

但还没有结束,上一节讲到MySQL默认超过10秒的查询才是慢查询,才会被记录在日志之中,但是我们自己在家里练习,很少有这么大的数据量让我们测试慢查询日志的功能,因此这里提供两个解决方法。

第一, 输入:

Show variables like 'long_query%';

输出结果为:

6b51190057877fc49d58023a52872acc.png

可以看到long_query_time的默认值为10秒。

此时再输入:

Set global long_query_time = 0.01;

表示将long_query_time的值设置为0.01秒,即超过10毫秒的查询将被记录为慢查询。

除此之外,我们还可以输入:

Show variables like 'log_queries_not_using%';

输出结果为:

1efd70319bbb120d28840ced5911b263.png

这个参数表示对于没有使用索引的查询不记录进入慢查询日志。对于不会建立索引的同学可以采用:

set global log_queries_not_using_indexes = 1;

来开启该功能。

也可以根据自己的实际情况,为表中的某一列建立索引:

Create index 索引名 on 表名(列名);

这个语句的意思是针对特定表的特定列建立一个索引,索引也需要取一个名字,方便以后查看,更新和删除。

第二个方法是可以使用sleep函数。

输入:

Select sleep(11);

来进行一次持续11秒的慢查询,对MySQL的慢查询日志功能进行测试。

从slow_query_log_file对应的路径找到文件,打开日志后我们发现已经产生了一条新的记录:

TCP Port: 3306, Named Pipe: MySQL

# Time: 2020-08-25T09:46:55.967541Z

# User@Host: root[root] @ localhost [127.0.0.1] Id: 14

# Query_time: 11.001751 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 1

SET timestamp=1598348804;

select sleep(11);

其中Time表示查询结束时间。

Query_time表示查询持续时间。

Lock_time表示锁表时间。锁表简单来讲就是为了防止一张表同时被多人操作的情况,表锁上后仅能让锁表的人进行操作。锁机制可以展开说很多,这里仅提供一个简单概念。

Rows_sent表示返回几行记录。

Rows_examined表示查询检查的行数,越长就当然越费时间。

最后一行就是查询的SQL语句。

在MySQL中可以使用其自带的慢查询日志工具:mysqldumpslow。

具体的使用方法可以在这篇大佬的博文中查看:https://developer.aliyun.com/article/603174

欢迎关注专栏:

数据分析学习历程全记录​zhuanlan.zhihu.com
0f3d70508d3ed595d320649e879fc550.png

其它MySQL文章:

舟晓南:MySQL优化查询1:索引及其使用技巧 | 数据分析学习历程全记录

舟晓南:MySQL优化查询3:explain和show profiles | 数据分析学习历程全记录

舟晓南:MySQL的执行逻辑和表的结构 | 数据分析学习历程全记录

舟晓南:转行数据分析师如何开始学习SQL | 工科生三个月转行数据分析学习心得

其他关于数据分析的文章

舟晓南:如何转行和学习数据分析 | 工科生三个月成功转行数据分析心得浅谈

舟晓南:求职数据分析师岗位,简历应该如何写?|工科生三个月成功转行数据分析心得浅谈

需要SQL学习资料可私信~

数据分析学习社群正式启动~

在这里会分享各种数据分析相关资源,技能学习技巧和经验等等~

详情私信,一起进步吧!

写于成都

2020-8-26