gpt4 book ai didi

mysql - "SELECT/*!N SQL_NO_CACHE */* FROM ` mytable `"mean in in MySQL' s 慢查询日志是什么?

转载 作者:IT老高 更新时间:2023-10-29 00:05:46 28 4
gpt4 key购买 nike

我刚刚打开 slow query logging在我的 MySQL 数据库上,将以下内容添加到 /etc/mysql/my.cnf:

log_slow_queries = /var/log/mysql/mysql-slow.log
long_query_time = 1

当我运行 mysqldumpslow 时,它会输出以下内容:

Reading mysql slow query log from mysql-slow.log
Count: 1 Time=199.23s (199s) Lock=0.00s (0s) Rows=32513.0 (32513), ...
SELECT /*!N SQL_NO_CACHE */ * FROM `mytable`

...

查看原始mysql-slow.log,完整的查询是:

SELECT /*!40001 SQL_NO_CACHE */ * FROM `mytable`;

所以 mysqldumpslow 只是用 N 替换了数字(以帮助聚合类似的查询。)

那么,问题是,该查询来自哪里以及 /*!40001 SQL_NO_CACHE */ 位是什么意思?

据我所知,它可能来自正在执行备份的 mysqldump 命令(因此不需要缓存数据),这看起来对吗?如果是这样,既然它只读取了 32,000 行,为什么需要 199 秒?

在其他表上还有很多类似的查询,需要 100 秒、50 秒,再到更合理的 3 秒,大多数大约有 10-20,000 行,最大的有 450,000 行。

最佳答案

/*!40001 SQL_NO_CACHE */ 表示在 mysql >= 4.0.1 的版本中执行 SELECT SQL_NO_CACHE * FROM mytable 而在更早的版本中执行该命令而不SQL_NO_CACHE。

mysqldump 也使用 /*!40001 SQL_NO_CACHE */ 语法。

我不知道为什么你的查询会这么慢。

关于mysql - "SELECT/*!N SQL_NO_CACHE */* FROM ` mytable `"mean in in MySQL' s 慢查询日志是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8282788/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com