我的应用程序中的哪些文件使 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 秒的充分理由。必须涉及其他事情。
我为这个问题折腾了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 秒的充分理由。必须涉及其他事情。