帮酷LOGO
0 0 评论
文章标签:queries  

在某些数据库系统中,包括MySQL,查询语句必须以分号(; )结束查询,如下面的例子所示:


SHOW * FROM table_name;

如果在查询末尾不包含分号,提示将继续显示新的一行行,直到完成查询后,输入分号和按ENTER键。

查找哪个查询语句导致速度下降的方法是启用并查看MySQL的慢查询日志。要完成这个操作,打开mysqld.cnf文件,该文件用于配置MySQL服务器的选项,此文件通常存储在/etc/mysql/mysql.conf.d/目录中:


sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

滚动文件,直到看到以下行:

/etc/mysql/mysql.conf.d/mysqld.cnf

. . .
#slow_query_log = 1
#slow_query_log_file = /var/log/mysql/mysql-slow.log
#long_query_time = 2
#log-queries-not-using-indexes
. . .

slow-query-log :将此设置设置为1可实现慢查询日志,slow-query-log-file :这定义了MySQL将记录慢查询的文件,在本例中,它指向/var/log/mysql-slow.log文件,long_query_time :通过将此指令设置为2,它将MySQL配置为记录超过2秒以上的查询,log_queries_not_using_indexes :这告诉MySQL同时记录没有索引运行的查询到/var/log/mysql-slow.log文件,慢查询日志不需要此设置,但是可以帮助查找低效查询,/etc/mysql/mysql.conf.d/mysqld.cnf

. . .
slow_query_log = 1
slow_query_log_file = /var/log/mysql-slow.log
long_query_time = 2
log_queries_not_using_indexes
. . .

注意:如果你正在运行MySQL 8 ,默认情况下这些内容不会在mysqld.cnf文件中,在这种情况下,将以下行添加到文件的底部:

/etc/mysql/mysql.conf.d/mysqld.cnf

. . .
slow_query_log = 1
slow_query_log_file = /var/log/mysql-slow.log
long_query_time = 2
log_queries_not_using_indexes

在启用慢查询日志之后,保存并关闭文件,然后重新启动MySQL服务:


sudo systemctl restart mysql

使用这些设置,通过查看慢查询日志找到有问题的查询语句,你可以使用less这样做,如下所示:


sudo less /var/log/mysql_slow.log

此外,MySQL还有一个EXPLAIN语句,它提供了有关MySQL如何执行查询的信息。



文章标签:queries  

Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语