任何人都可以帮助解释以下日志:
MariaDB [(none)]> show full processlist;
+--------+----------------+-----------------+---------------------+---------+-----
| 3 | user-rw | localhost | bets-stage | Sleep | 51 | | NULL | 0.000 |
| 11 | user-rw | localhost | bets-stage | Sleep | 39 | | NULL | 0.000 |
| 13 | db1029865-news | localhost | db1029865-sportnews | Query | 30 | Writing to net | SELECT `detail`, UNIX_TIMESTAMP(created_on) AS created_on
FROM (`sportnews_log`)
WHERE `severity` = 'info'
AND `source` = 'crawler'
ORDER BY `created_on` desc | 0.000 |
| 17 | db1029865-news | localhost | db1029865-sportnews | Query | 20 | Writing to net | SELECT `detail`, UNIX_TIMESTAMP(created_on) AS created_on
FROM (`sportnews_log`)
WHERE `severity` = 'info'
AND `source` = 'crawler'
ORDER BY `created_on` desc | 0.000 |
| 34 | db1029865-news | localhost | db1029865-sportnews | Query | 3 | Sorting result | SELECT `detail`, UNIX_TIMESTAMP(created_on) AS created_on
FROM (`sportnews_log`)
WHERE `severity` = 'info'
AND `source` = 'crawler'
ORDER BY `created_on` desc | 0.000 |
| 37 | db1029865-news | localhost | db1029865-sportnews | Sleep | 31 | | NULL | 0.000 |
| 39 | user-rw | localhost | bets-stage | Sleep | 77 | | NULL | 0.000 |
| 40 | db1029865-news | localhost | db1029865-sportnews | Query | 16 | Writing to net | SELECT `detail`, UNIX_TIMESTAMP(created_on) AS created_on
FROM (`sportnews_log`)
WHERE `severity` = 'info'
AND `source` = 'crawler'
ORDER BY `created_on` desc | 0.000 |
| 41 | user-rw | localhost | bets-stage | Sleep | 43 | | NULL | 0.000 |
| 49 | db1029865-news | localhost | db1029865-sportnews | Query | 24 | Writing to net | SELECT `detail`, UNIX_TIMESTAMP(created_on) AS created_on
FROM (`sportnews_log`)
WHERE `severity` = 'info'
AND `source` = 'crawler'
ORDER BY `created_on` desc | 0.000 |
| 52 | db1029865-news | localhost | db1029865-sportnews | Sleep | 36 | | NULL | 0.000 |
| 53 | db1029865-news | localhost | db1029865-sportnews | Query | 26 | Writing to net | SELECT `detail`, UNIX_TIMESTAMP(created_on) AS created_on
FROM (`sportnews_log`)
WHERE `severity` = 'info'
AND `source` = 'crawler'
ORDER BY `created_on` desc | 0.000 |
| 54 | db1029865-news | localhost | db1029865-sportnews | Query | 1 | Copying to tmp table | SELECT `post`.*, `post`.`team1_seourl` AS `team1seourl`, `post`.`team1_seourl` AS `teamseourl`, `post`.`team2_seourl` AS `team2seourl`, IF(`temp_tn1uid`.`value` > 0, `post`.`team1_uid`, NULL) AS `tn1uid`, IF(`temp_tn2uid`.`value` > 0, `post`.`team2_uid`, NULL) AS `tn2uid` FROM (SELECT `post`.*, `post_j`.`title`, `post_j`.`teaser` FROM (SELECT `post`.* FROM `sportnews_cache_post_team` AS `post` FORCE INDEX(`sort_index`) JOIN (SELECT `cache_uid` FROM `sportnews_cache_post_team` AS `post` WHERE (`post`.`team1_uid` = 4894 OR `post`.`team2_uid` = 4894) GROUP BY `post`.`uid` ORDER BY `post`.`cache_uid` LIMIT 40 OFFSET 0) AS `post_j` ON `post`.`cache_uid` = `post_j`.`cache_uid`) AS `post` JOIN `sportnews_post` AS `post_j` ON `post_j`.`uid` = `post`.`uid`) AS `post` LEFT JOIN (SELECT `uid`, COUNT(*) AS `value` FROM `sportnews_cache_post_team` AS `post` FORCE INDEX(`sort_index`) WHERE `post`.`team1_uid` = 4894 GROUP BY `post`.`uid`) AS `temp_tn1uid` ON `temp_tn1uid`.`uid` = `post`.`uid` LEFT JOIN (SELECT `uid`, COUNT(*) AS `value` FROM `sportnews_cache_post_team` AS `post` FORCE INDEX(`sort_index`) WHERE `post`.`team2_uid` = 4894 GROUP BY `post`.`uid`) AS `temp_tn2uid` ON `temp_tn2uid`.`uid` = `post`.`uid` | 0.000 |
| 57 | db1029865-news | localhost | db1029865-sportnews | Sleep | 22 | | NULL | 0.000 |
| 75 | user-rw | localhost | bets-stage | Sleep | 32 | | NULL | 0.000 |
| 77 | db1029865-news | localhost | db1029865-sportnews | Sleep | 6 | | NULL | 0.000 |
| 78 | db1029865-news | localhost | db1029865-sportnews | Sleep | 15 | | NULL | 0.000 |
| 79 | db1029865-news | localhost | db1029865-sportnews | Sleep | 3 | | NULL | 0.000 |
| 88 | db1029865-news | localhost | db1029865-sportnews | Query | 18 | Writing to net | SELECT `detail`, UNIX_TIMESTAMP(created_on) AS created_on
FROM (`sportnews_log`)
WHERE `severity` = 'info'
AND `source` = 'crawler'
ORDER BY `created_on` desc | 0.000 |
| 99 | db1029865-news | localhost | db1029865-sportnews | Sleep | 39 | | NULL | 0.000 |
| 100 | db1029865-news | localhost | db1029865-sportnews | Query | 1 | Sorting result | SELECT `detail`, UNIX_TIMESTAMP(created_on) AS created_on
FROM (`sportnews_log`)
WHERE `severity` = 'info'
AND `source` = 'crawler'
ORDER BY `created_on` desc | 0.000 |
| 110 | db1029865-news | localhost | db1029865-sportnews | Query | 32 | Writing to net | SELECT `detail`, UNIX_TIMESTAMP(created_on) AS created_on
FROM (`sportnews_log`)
WHERE `severity` = 'info'
AND `source` = 'crawler'
ORDER BY `created_on` desc | 0.000 |
| 117 | db1029865-news | localhost | db1029865-sportnews | Sleep | 9 | | NULL | 0.000 |
| 119 | user-rw | localhost | bets-stage | Sleep | 70 | | NULL | 0.000 |
| 137 | user-rw | localhost | bets-stage | Sleep | 34 | | NULL | 0.000 |
| 138 | db1029865-news | localhost | db1029865-sportnews | Query | 28 | Sending data | SELECT `detail`, UNIX_TIMESTAMP(created_on) AS created_on
FROM (`sportnews_log`)
WHERE `severity` = 'info'
AND `source` = 'crawler'
ORDER BY `created_on` desc | 0.000 |
| 160 | user-rw | localhost | bets-stage | Sleep | 40 | | NULL | 0.000 |
| 162 | user-rw | localhost | bets-stage | Sleep | 27 | | NULL | 0.000 |
| 189 | user-rw | localhost | bets-stage | Sleep | 19 | | NULL | 0.000 |
| 208 | user-rw | localhost | bets-stage | Sleep | 56 | | NULL | 0.000 |
| 218 | db1029865-news | localhost | db1029865-sportnews | Query | 22 | Writing to net | SELECT `detail`, UNIX_TIMESTAMP(created_on) AS created_on
FROM (`sportnews_log`)
WHERE `severity` = 'info'
AND `source` = 'crawler'
ORDER BY `created_on` desc | 0.000 |
| 219 | user-rw | localhost | bets-stage | Sleep | 3 | | NULL | 0.000 |
| 274 | user-rw | localhost | bets-stage | Sleep | 20 | | NULL | 0.000 |
| 301 | user-rw | localhost | bets-stage | Sleep | 30 | | NULL | 0.000 |
| 302 | user-rw | localhost | bets-stage | Sleep | 2 | | NULL | 0.000 |
| 356 | user-rw | localhost | bets-stage | Sleep | 36 | | NULL | 0.000 |
| 435 | user-rw | localhost | bets-stage | Sleep | 55 | | NULL | 0.000 |
| 511 | user-rw | localhost | bets-stage | Sleep | 59 | | NULL | 0.000 |
| 2007 | user-rw | localhost | bets-stage | Sleep | 61 | | NULL | 0.000 |
| 606299 | db1029865-news | localhost:34857 | db1029865-sportnews | Sleep | 60 | | NULL | 0.000 |
| 606300 | db1029865-news | localhost:34860 | db1029865-sportnews | Sleep | 60 | | NULL | 0.000 |
| 606438 | db1029865-news | localhost:34940 | db1029865-sportnews | Sleep | 91 | | NULL | 0.000 |
| 606439 | db1029865-news | localhost:34941 | db1029865-sportnews | Sleep | 3 | | NULL | 0.000 |
| 610631 | user-rw | localhost:35813 | sportnews-stage | Sleep | 177 | | NULL | 0.000 |
| 611528 | db1029865-news | localhost:36298 | db1029865-sportnews | Query | 10 | Writing to net | SELECT /*!40001 SQL_NO_CACHE */ * FROM `sportnews_log` | 0.000 |
| 612224 | root | localhost | NULL | Query | 0 | NULL | show full processlist | 0.000 |
+--------+----------------+-----------------+---------------------+---------+------+----------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+
47 rows in set (0.00 sec)
| 13 | db1029865-news | localhost | db1029865-sportnews | Query | 24 | Writing to net | SELECT `detail`, UNIX_TIMESTAMP(created_on) AS created_on
FROM (`sportnews_log`)
WHERE `severity` = 'info'
AND `source` = 'crawler'
ORDER BY `created_on` desc | 0.000 |
| 17 | db1029865-news | localhost | db1029865-sportnews | Query | 21 | Sending data | SELECT `detail`, UNIX_TIMESTAMP(created_on) AS created_on
FROM (`sportnews_log`)
WHERE `severity` = 'info'
AND `source` = 'crawler'
ORDER BY `created_on` desc | 0.000 |
| 34 | db1029865-news | localhost | db1029865-sportnews | Query | 10 | Sorting result | SELECT `detail`, UNIX_TIMESTAMP(created_on) AS created_on
FROM (`sportnews_log`)
WHERE `severity` = 'info'
AND `source` = 'crawler'
ORDER BY `created_on` desc | 0.000 |
| 37 | db1029865-news | localhost | db1029865-sportnews | Query | 6 | Sorting result | SELECT `detail`, UNIX_TIMESTAMP(created_on) AS created_on
FROM (`sportnews_log`)
WHERE `severity` = 'info'
AND `source` = 'crawler'
ORDER BY `created_on` desc | 0.000 |
| 39 | user-rw | localhost | bets-stage | Sleep | 38 | | NULL | 0.000 |
| 40 | db1029865-news | localhost | db1029865-sportnews | Query | 21 | Sending data | SELECT `detail`, UNIX_TIMESTAMP(created_on) AS created_on
FROM (`sportnews_log`)
WHERE `severity` = 'info'
AND `source` = 'crawler'
ORDER BY `created_on` desc | 0.000 |
| 41 | user-rw | localhost | bets-stage | Sleep | 139 | | NULL | 0.000 |
| 49 | db1029865-news | localhost | db1029865-sportnews | Query | 25 | Sending data | SELECT `detail`, UNIX_TIMESTAMP(created_on) AS created_on
FROM (`sportnews_log`)
WHERE `severity` = 'info'
AND `source` = 'crawler'
ORDER BY `created_on` desc | 0.000 |
| 52 | db1029865-news | localhost | db1029865-sportnews | Query | 8 | Sorting result | SELECT `detail`, UNIX_TIMESTAMP(created_on) AS created_on
FROM (`sportnews_log`)
WHERE `severity` = 'info'
AND `source` = 'crawler'
ORDER BY `created_on` desc | 0.000 |
| 53 | db1029865-news | localhost | db1029865-sportnews | Query | 20 | Writing to net | SELECT `detail`, UNIX_TIMESTAMP(created_on) AS created_on
FROM (`sportnews_log`)
WHERE `severity` = 'info'
AND `source` = 'crawler'
ORDER BY `created_on` desc | 0.000 |
| 54 | db1029865-news | localhost | db1029865-sportnews | Query | 7 | Sorting result | SELECT `detail`, UNIX_TIMESTAMP(created_on) AS created_on
FROM (`sportnews_log`)
WHERE `severity` = 'info'
AND `source` = 'crawler'
ORDER BY `created_on` desc | 0.000 |
| 57 | db1029865-news | localhost | db1029865-sportnews | Sleep | 48 | | NULL | 0.000 |
| 75 | user-rw | localhost | bets-stage | Sleep | 33 | | NULL | 0.000 |
| 77 | db1029865-news | localhost | db1029865-sportnews | Query | 28 | Sending data | SELECT `detail`, UNIX_TIMESTAMP(created_on) AS created_on
FROM (`sportnews_log`)
WHERE `severity` = 'info'
AND `source` = 'crawler'
ORDER BY `created_on` desc | 0.000 |
| 78 | db1029865-news | localhost | db1029865-sportnews | Sleep | 29 | | NULL | 0.000 |
| 79 | db1029865-news | localhost | db1029865-sportnews | Sleep | 6 | | NULL | 0.000 |
| 88 | db1029865-news | localhost | db1029865-sportnews | Query | 14 | Sorting result | SELECT `detail`, UNIX_TIMESTAMP(created_on) AS created_on
FROM (`sportnews_log`)
WHERE `severity` = 'info'
AND `source` = 'crawler'
ORDER BY `created_on` desc | 0.000 |
| 99 | db1029865-news | localhost | db1029865-sportnews | Query | 10 | Sorting result | SELECT `detail`, UNIX_TIMESTAMP(created_on) AS created_on
FROM (`sportnews_log`)
WHERE `severity` = 'info'
AND `source` = 'crawler'
ORDER BY `created_on` desc | 0.000 |
| 100 | db1029865-news | localhost | db1029865-sportnews | Query | 13 | Sorting result | SELECT `detail`, UNIX_TIMESTAMP(created_on) AS created_on
FROM (`sportnews_log`)
WHERE `severity` = 'info'
AND `source` = 'crawler'
ORDER BY `created_on` desc | 0.000 |
| 110 | db1029865-news | localhost | db1029865-sportnews | Sleep | 4 | | NULL | 0.000 |
| 117 | db1029865-news | localhost | db1029865-sportnews | Query | 34 | Sending data | SELECT `detail`, UNIX_TIMESTAMP(created_on) AS created_on
FROM (`sportnews_log`)
WHERE `severity` = 'info'
AND `source` = 'crawler'
ORDER BY `created_on` desc | 0.000 |
| 119 | user-rw | localhost | bets-stage | Sleep | 10 | | NULL | 0.000 |
| 137 | user-rw | localhost | bets-stage | Sleep | 24 | | NULL | 0.000 |
| 138 | db1029865-news | localhost | db1029865-sportnews | Query | 31 | Sending data | SELECT `detail`, UNIX_TIMESTAMP(created_on) AS created_on
FROM (`sportnews_log`)
WHERE `severity` = 'info'
AND `source` = 'crawler'
ORDER BY `created_on` desc | 0.000 |
| 160 | user-rw | localhost | bets-stage | Sleep | 260 | | NULL | 0.000 |
| 162 | user-rw | localhost | bets-stage | Sleep | 136 | | NULL | 0.000 |
| 189 | user-rw | localhost | bets-stage | Sleep | 14 | | NULL | 0.000 |
| 208 | user-rw | localhost | bets-stage | Sleep | 10 | | NULL | 0.000 |
| 218 | db1029865-news | localhost | db1029865-sportnews | Query | 24 | Sending data | SELECT `detail`, UNIX_TIMESTAMP(created_on) AS created_on
FROM (`sportnews_log`)
WHERE `severity` = 'info'
AND `source` = 'crawler'
答案 0 :(得分:0)
由少数用户评论,需要更多信息才能知道确切的问题。
从您提供的进程列表输出中可以看出,您的许多查询都处于状态"写入网络"持续20-30秒的范围。这意味着您的选择查询返回大量数据并花费大量时间将数据包写入网络,或者您的网络被其他进程缓慢/限制并使mysql输出变慢。
如果有任何网页使用这些查询,则他们不会在20-30秒内完成竞争结果(相当于网站停止)
答案 1 :(得分:0)
我个人会责怪这一点:
SELECT `post`.*,
`post`.`team1_seourl` AS `team1seourl`,
`post`.`team1_seourl` AS `teamseourl`,
`post`.`team2_seourl` AS `team2seourl`,
IF(`temp_tn1uid`.`value` > 0, `post`.`team1_uid`, NULL) AS `tn1uid`,
IF(`temp_tn2uid`.`value` > 0, `post`.`team2_uid`, NULL) AS `tn2uid`
FROM
(SELECT `post`.*,
`post_j`.`title`,
`post_j`.`teaser`
FROM
(SELECT `post`.*
FROM `sportnews_cache_post_team` AS `post`
FORCE INDEX(`sort_index`)
JOIN
(SELECT `cache_uid`
FROM `sportnews_cache_post_team` AS `post`
WHERE (`post`.`team1_uid` = 4894
OR `post`.`team2_uid` = 4894)
GROUP BY `post`.`uid`
ORDER BY `post`.`cache_uid` LIMIT 40
OFFSET 0) AS `post_j` ON `post`.`cache_uid` = `post_j`.`cache_uid`) AS `post`
JOIN `sportnews_post` AS `post_j` ON `post_j`.`uid` = `post`.`uid`) AS `post`
LEFT JOIN
(SELECT `uid`,
COUNT(*) AS `value`
FROM `sportnews_cache_post_team` AS `post`
FORCE INDEX(`sort_index`)
WHERE `post`.`team1_uid` = 4894
GROUP BY `post`.`uid`) AS `temp_tn1uid` ON `temp_tn1uid`.`uid` = `post`.`uid`
LEFT JOIN
(SELECT `uid`,
COUNT(*) AS `value`
FROM `sportnews_cache_post_team` AS `post`
FORCE INDEX(`sort_index`)
WHERE `post`.`team2_uid` = 4894
GROUP BY `post`.`uid`) AS `temp_tn2uid` ON `temp_tn2uid`.`uid` = `post`.`uid`
从您的日志中。我还没有发生过一个数据库引擎,它会以有效的方式加入那么多子选择。我假设您在日志中使用它来创建临时表 - 这是一个非常好的技巧。您可能想要为某些子查询创建临时表,设置与您的任务相关的正确索引,然后再加入它们。我希望,这个查询不会过于频繁地发送给DB。
SQL中有一个有用的EXPLAIN
命令。请试用该文档:here。
根据sportsnews_log
表格的大小,writing to net
可能会长时间出现此问题:
SELECT /*!40001 SQL_NO_CACHE */ * FROM `sportnews_log`
@comment:
我可能假设错误,因为我不知道你的数据库,但我认为sportsnews_log
表可能很大(比方说250k +记录)。我很确定你没有在网站上显示所有这些输入。 SQL_NO_CACHE
无法帮助加快查询,同时使用*
(一点点)不建议 - 但在您的情况下可能是必要的。如果你定期重写sportnews_log
并保持50行,我可能会想错,但我相信你会理解为什么我怀疑这一点。您可能正在使用约20条记录,因此对于最新输入,使用正确LIMIT
的简单ORDER
将会产生HUDGE差异。
让我们以不同的方式对待这个:
SELECT `detail`, UNIX_TIMESTAMP(created_on) AS created_on
FROM (`sportnews_log`)
WHERE `severity` = 'info'
AND `source` = 'crawler'
ORDER BY `created_on` desc
它更像#2 的一个例子,可能一个合适的LIMIT
会有很多帮助,但我认为这个查询非常激动经常。您的可能会有新的解决方案,但在一个条件:这些结果不需要100%实际,假设在发布之前有5分钟的偏移。为此,有一些缓存机制,这可能会有所帮助。在我工作的公司中,我们正在使用memcashed(查看" Memcasched users" list)。 PHP支持得很好。对此,新解决方案的伪代码将是:
declare RESULT
RESULT get from cache on key LAZY_UPDATE
if RESULT is false
get use of your DB and set RESULT into query result
set cache under LAZY_UPDATE key to value of RESULT for 5 minutes
return RESULT
这将使您每5分钟仅对该特定查询施加一次压力。如果您对此感兴趣,请查看here。