我已经为这个问题苦苦挣扎了2天了,还没有找到解决办法。
我记录 mysql 慢查询的时间为 10 秒。在日志文件中有大量包含以下语句的条目:
# Thread_id: 222244 Schema: user QC_hit: No
# Query_time: 51.019708 Lock_time: 0.000119 Rows_sent: 1 Rows_examined: 13295012
# Rows_affected: 0
SET timestamp=1559388099;
SELECT (COUNT(*)) AS `count`
FROM statistics Statistics WHERE (id >= 1 AND ad_type <> 3);
这与 apache 请求的激增有关。 query_time 长达一分钟或更长时间,导致我的服务器过载。 问题是我无法在 php 脚本中找到导致查询缓慢的文件。
是否有任何命令行可以查找关联的文件。或者有什么快速的方法吗?
CREATE TABLE statistics` (
id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
... ,
PRIMARY KEY (id),
KEY idx_uid (uid),
KEY idx_ip (ip),
KEY idx_cnid_uid (cid,uid),
KEY idx_rlid (rid),
KEY idx_created_uid (created,uid)
) ENGINE=InnoDB AUTO_INCREMENT=34015 DEFAULT CHARSET=utf8
最佳答案
如果没有理由检查 id >= 1
,请将其删除 - 它会抑制某些优化。
然后添加INDEX(ad_type)
不过,我认为在 34K 行(?)表上 COUNT(*)
没有充分的理由需要 51 秒。必须涉及其他东西。
关于php - 我的应用程序中的哪些文件产生缓慢的 Mysql 查询日志条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56406751/