我的应用程序中的哪些文件使 Mysql 查询日志条目变慢

Which Files In My Application that Make Slow Mysql Query Log Entries

我为这个问题折腾了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)

不过,我看不出 COUNT(*) 在 34K 行(?)table 上花费 51 秒的充分理由。必须涉及其他事情。