如何找到真正慢的查询?

时间:2014-11-24 17:46:17

标签: mysql mysql-slow-query-log

我正在测试一个网页(wordpress),我有这个日志,但我不明白哪个是真正的慢查询这里是阅读我的网站的查询的链接,请抽空告诉我什么是危险的查询在这个杀死我的CPU的日志中

http://balkanweb.com/mysql_slow.log

2 个答案:

答案 0 :(得分:1)

用于处理慢查询日志的最佳免费工具是pt-query-digest。默认情况下,这会生成一个报告,显示您的聚合响应时间的位置,按查询指纹进行细分。

我下载了你的日志并通过pt-query-digest运行它。这是输出的一部分,它是一个排序的查询列表和一些关于它们花费多少时间的统计信息:

# Profile
# Rank Query ID           Response time    Calls R/Call   V/M   Item
# ==== ================== ================ ===== ======== ===== ==========
#    1 0xC52F6DEC37D30D44 15065.0357 51.6%    80 188.3129  3.18 SELECT bwp_options
#    2 0x4876D9B1B390C783  4989.7583 17.1%    28 178.2057  7.91 SELECT bwp_options
#    3 0xE6593111E942BBD2  2337.6846  8.0%    10 233.7685  2.10 UPDATE bwp_options
#    4 0xF25CBDE8A6D65826  1784.7358  6.1%     8 223.0920  1.23 SELECT bwp_postmeta
#    5 0xC19DB36FFE85363C  1225.1890  4.2%     5 245.0378  0.09 SELECT bwp_terms bwp_term_taxonomy
#    6 0x7AC4A4CA8054E73D   981.1785  3.4%     4 245.2946  0.10 SELECT bwp_terms bwp_term_taxonomy bwp_term_relationships
#    7 0x3C55C7D48BD1B7C5   714.0035  2.4%     3 238.0012  0.00 SELECT bwp_term_relationships bwp_term_taxonomy
#    8 0x3A5E09EFF2C9AA73   487.4629  1.7%     2 243.7314  0.08 UPDATE bwp_postmeta
#    9 0x6545AED3996807BC   460.0886  1.6%     2 230.0443  0.22 SELECT bwp_postmeta
#   13 0x7AEDF19FDD3A33F1   207.8139  0.7%    30   6.9271  1.11 SELECT wp_options
# MISC 0xMISC               962.7022  3.3%    25  38.5081   0.0 <12 ITEMS>

您可以看到#1查询平均值不是最慢的188秒,但是呼叫数量(80)高于其他查询,因此它占响应时间最长。 #1查询如下:

SELECT option_value FROM bwp_options WHERE option_name = 'ossdl_https' LIMIT 1

我建议您在该表的option_name列上需要索引。

其他几个查询的运行时间非常长,平均在178到245秒之间。您应该使用索引优化所有这些查询。事实上,它们非常慢,我想知道你是否只是拥有资源不足的服务器。你在交换吗?

以下是一些很好的博客文章,向您介绍pt-query-digest:

pt-query-digest是Percona Toolkit的一部分,{{3}}是一个免费的开源脚本工具集合,用于处理MySQL和Percona Server。

答案 1 :(得分:0)

时间查询是,

Count: 1  Time=2.90s (2s)  Lock=0.00s (0s)  Rows=1.0 (1), balkanwe_site[balkanwe_site]@localhost
  SELECT   bwp_posts.* FROM bwp_posts  WHERE N=N  AND (((bwp_posts.post_title LIKE 'S') OR (bwp_posts.post_content LIKE 'S')) AND ((bwp_posts.post_title LIKE 'S') OR (bwp_posts.post_content LIKE 'S')))  AND (bwp_posts.post_password = 'S')  AND bwp_posts.post_type IN ('S', 'S', 'S', 'S', 'S') AND (bwp_posts.post_status = 'S')  ORDER BY (CASE WHEN bwp_posts.post_title LIKE 'S' THEN N WHEN bwp_posts.post_title LIKE 'S' AND bwp_posts.post_title LIKE 'S' THEN N WHEN bwp_posts.post_title LIKE 'S' OR bwp_posts.post_title LIKE 'S' THEN N WHEN bwp_posts.post_content LIKE 'S' THEN N ELSE N END), bwp_posts.post_date DESC

Count: 1  Time=2.96s (2s)  Lock=0.00s (0s)  Rows=1.0 (1), balkanwe_site[balkanwe_site]@localhost
  SELECT SQL_CALC_FOUND_ROWS  bwp_posts.ID FROM bwp_posts  WHERE N=N  AND (((bwp_posts.post_title LIKE 'S') OR (bwp_posts.post_content LIKE 'S')) AND ((bwp_posts.post_title LIKE 'S') OR (bwp_posts.post_content LIKE 'S')))  AND (bwp_posts.post_password = 'S')  AND bwp_posts.post_type IN ('S', 'S', 'S', 'S', 'S') AND (bwp_posts.post_status = 'S')  ORDER BY (CASE WHEN bwp_posts.post_title LIKE 'S' THEN N WHEN bwp_posts.post_title LIKE 'S' AND bwp_posts.post_title LIKE 'S' THEN N WHEN bwp_posts.post_title LIKE 'S' OR bwp_posts.post_title LIKE 'S' THEN N WHEN bwp_posts.post_content LIKE 'S' THEN N ELSE N END), bwp_posts.post_date DESC LIMIT N, N

Count: 2  Time=1.57s (3s)  Lock=0.00s (0s)  Rows=20.0 (40), balkanwe_wp[balkanwe_wp]@localhost
  (SELECT n.IDNotizia, n.Titolo, n.IDCategoria, n.Data, n.Descrizione, N AS Notizia FROM notizie AS n, notizie_legami AS nl WHERE n.IDNotizia=nl.IDNotizia AND n.Online='S' AND (n.Pubblicail='S' OR n.Pubblicail IS NULL) AND  (n.Titolo LIKE 'S' OR n.Sottotitolo LIKE 'S' OR n.Descrizione LIKE 'S' OR n.Notizia like 'S')  GROUP BY nl.IDCollegamento) UNION (SELECT IDNews, Titolo, IDCategoria, Data, News, N AS Notizia FROM news WHERE id_ext!='S' AND  (Titolo LIKE 'S' OR News LIKE 'S') ) ORDER BY Data DESC LIMIT N

Count: 1  Time=1.88s (1s)  Lock=0.00s (0s)  Rows=16.0 (16), root[root]@localhost
  SELECT TABLE_SCHEMA as DB,SUM(DATA_LENGTH)+SUM(INDEX_LENGTH) AS SPACEUSED from information_schema.tables GROUP BY TABLE_SCHEMA

Count: 1  Time=1.06s (1s)  Lock=0.00s (0s)  Rows=20.0 (20), balkanwe_wp[balkanwe_wp]@localhost
  (SELECT n.IDNotizia, n.Titolo, n.IDCategoria, n.Data, n.Descrizione, N AS Notizia FROM notizie AS n, notizie_legami AS nl WHERE n.IDNotizia=nl.IDNotizia AND n.Online='S' AND (n.Pubblicail='S' OR n.Pubblicail IS NULL) AND  ((n.Titolo LIKE 'S' OR n.Sottotitolo LIKE 'S' OR n.Descrizione LIKE 'S' OR n.Notizia LIKE 'S') AND (n.Titolo LIKE 'S' OR n.Sottotitolo LIKE 'S' OR n.Descrizione LIKE 'S' OR n.Notizia LIKE 'S'))  GROUP BY nl.IDCollegamento) UNION (SELECT IDNews, Titolo, IDCategoria, Data, News, N AS Notizia FROM news WHERE id_ext!='S' AND  ((Titolo LIKE 'S' OR News LIKE 'S') AND (Titolo LIKE 'S' OR News LIKE 'S')) ) ORDER BY Data DESC LIMIT N

Count: 1  Time=1.21s (1s)  Lock=0.00s (0s)  Rows=34.0 (34), balkanwe_wp[balkanwe_wp]@localhost
  SELECT n.IDNotizia FROM notizie AS n, notizie_legami AS nl WHERE n.IDNotizia=nl.IDNotizia AND n.Online='S' AND (n.Pubblicail='S' OR n.Pubblicail IS NULL) AND  ((n.Titolo LIKE 'S' OR n.Sottotitolo LIKE 'S' OR n.Descrizione LIKE 'S' OR n.Notizia LIKE 'S') AND (n.Titolo LIKE 'S' OR n.Sottotitolo LIKE 'S' OR n.Descrizione LIKE 'S' OR n.Notizia LIKE 'S'))  GROUP BY nl.IDCollegamento

Count: 4  Time=1.82s (7s)  Lock=0.01s (0s)  Rows=199.8 (799), balkanwe_wp[balkanwe_wp]@localhost
  SELECT n.IDNotizia FROM notizie AS n, notizie_legami AS nl WHERE n.IDNotizia=nl.IDNotizia AND n.Online='S' AND (n.Pubblicail='S' OR n.Pubblicail IS NULL) AND  (n.Titolo LIKE 'S' OR n.Sottotitolo LIKE 'S' OR n.Descrizione LIKE 'S' OR n.Notizia like 'S')  GROUP BY nl.IDCollegamento

Count: 5  Time=1.52s (7s)  Lock=0.00s (0s)  Rows=19.4 (97), balkanwe_site[balkanwe_site]@localhost
  SELECT ID, post_title, post_type, post_status FROM bwp_posts WHERE ( post_title REGEXP 'S' OR post_content REGEXP 'S' ) AND post_type = 'S'  AND ID != N  AND post_status NOT IN ('S', 'S') ORDER BY post_date DESC LIMIT N

您可以通过运行命令

来检查最慢的查询

mysqldumpslow -s -t 5 slow.log

这将显示前5个慢查询。