在某些数据库系统中,包括MySQL,查询陈述必须以半栏(;
)结束,以便查询完成,如下示例中所示:
1SHOW * FROM table_name;
如果您未能在查询的末尾包含一个半栏,请求将继续在新行,直到您通过输入一个半栏并按输入
来完成查询。
一些用户可能会发现他们的查询非常缓慢. 找出哪个查询声明导致了放缓的方法之一是启用并查看MySQL的缓慢查询日志. 要做到这一点,请打开您的mysqld.cnf
文件,用于配置MySQL服务器的选项。
1sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
滚动文件,直到你看到以下行:
1[label /etc/mysql/mysql.conf.d/mysqld.cnf]
2. . .
3#slow_query_log = 1
4#slow_query_log_file = /var/log/mysql/mysql-slow.log
5#long_query_time = 2
6#log-queries-not-using-indexes
7. . .
这些被评论的指令为慢查询日志提供了MySQL的默认配置选项,具体来说,以下是它们中的每一个要做的事情:
slow-query-log
: 将此设置为1
允许慢查询日志。slow-query-log-file
: 这定义了 MySQL 会登录任何慢查询的文件。 在这种情况下,它指向/var/log/mysql-slow.log
文件。long_query_time
: 通过将此指令设置为2
,它配置 MySQL 来登录需要超过 2 秒的时间的任何查询。log_queries_notusing_indexes
: 这也告诉 MySQL 登录没有索引的任何查询到/var/log/mysql-slow.log
文件。 这种设置不需要
通过删除领先的磅符号(#
)来消除这些行中的每一行。
1[label /etc/mysql/mysql.conf.d/mysqld.cnf]
2. . .
3slow_query_log = 1
4slow_query_log_file = /var/log/mysql-slow.log
5long_query_time = 2
6log_queries_not_using_indexes
7. . .
<$>[注]
注: 如果您正在运行MySQL 8+,这些评论的行将不会在mysqld.cnf
文件默认情况下。
1[label /etc/mysql/mysql.conf.d/mysqld.cnf]
2. . .
3slow_query_log = 1
4slow_query_log_file = /var/log/mysql-slow.log
5long_query_time = 2
6log_queries_not_using_indexes
美元
启用慢查询日志后,保存并关闭文件,然后重新启动 MySQL 服务:
1sudo systemctl restart mysql
有了这些设置,您可以通过查看缓慢查询日志来找到有问题的查询陈述。
1sudo less /var/log/mysql_slow.log
一旦您确定了导致放缓的查询,您可能会在 如何在VPS上优化MySQL和MariaDB中的查询和表上找到我们的指南,以帮助优化它们。
此外,MySQL还包含了EXPLAIN
声明,该声明提供了有关MySQL如何执行查询的信息。
对于了解基本查询结构的帮助,请参阅我们的 介绍MySQL查询。