gpt4 book ai didi

mysql - 在 Mysql 中,如何使用性能模式查找哪些查询导致 cpu% 增加了多少?

转载 作者:可可西里 更新时间:2023-11-01 08:24:12 26 4
gpt4 key购买 nike

我一直在尝试获取更多信息,关于如何确定任何正在运行的查询在我们的 mysql 上占用多少 cpu%,但无济于事。我已经启用了

  1. 一般日志
  2. 慢日志
  3. 性能架构

但我从这些数据源获得的数据为我提供了可以优化的查询,我这样做了,但没有可靠的方法来确定任何查询占用了多少 cpu%。任何指向正确方向的指示都会非常有帮助。

示例数据

一般日志

****************************** 1. 行 ***************** **********

  event_time: 2018-03-17 13:17:52
user_host: YYYYY[YYYYY] @ [XXX.XX.XX.XX]
thread_id: 16850427
server_id: 122252267
command_type: Query
argument: UPDATE inventory_details AS did1 INNER JOIN ( SELECT MAX(id) max_id FROM daily_inventory_details WHERE shop_id = '1160' AND inventory_item_id = 3461 GROUP BY shop_id, inventory_item_id) did2 ON did1.id = did2.max_id SET ideal = ideal + 0.071, updated_at = NOW()

慢日志

*************************** 21. 行 ***************** **********

2018-03-17 21:03:39
00:00:01
SELECT did1.id, smii.price, did1.count_unit, did1.count_order, did1.portion_unit, did1.portion_count, did1.beginning, did1.ist, did1.deliveries_local, did1.deliveries_own, did1.ending, did1.ideal, did1.waste FROM inventory_details did1 INNER JOIN( SELECT MAX(id) max_id FROM inventory_details WHERE shop_id = '1199' GROUP BY shop_id, inventory_item_id) did2 ...

性能模式

****************************** 1. 行 ***************** **********

    SCHEMA_NAME: faasos_platform
DIGEST: ae1de22d8ed625ed3e9547cbaa89c5d3
DIGEST_TEXT: SET `time_zone` = ?
COUNT_STAR: 3885851
SUM_TIMER_WAIT: 161144275036000
MIN_TIMER_WAIT: 14549000
AVG_TIMER_WAIT: 41469000
MAX_TIMER_WAIT: 19984412000
SUM_LOCK_TIME: 9833622000000
SUM_ERRORS: 0
SUM_WARNINGS: 0
SUM_ROWS_AFFECTED: 0
SUM_ROWS_SENT: 0
SUM_ROWS_EXAMINED: 0
SUM_CREATED_TMP_DISK_TABLES: 0
SUM_CREATED_TMP_TABLES: 0
SUM_SELECT_FULL_JOIN: 0
SUM_SELECT_FULL_RANGE_JOIN: 0
SUM_SELECT_RANGE: 0
SUM_SELECT_RANGE_CHECK: 0
SUM_SELECT_SCAN: 0
SUM_SORT_MERGE_PASSES: 0
SUM_SORT_RANGE: 0
SUM_SORT_ROWS: 0
SUM_SORT_SCAN: 0
SUM_NO_INDEX_USED: 0
SUM_NO_GOOD_INDEX_USED: 0
FIRST_SEEN: 2017-10-25 02:11:32
LAST_SEEN: 2018-03-17 22:04:36

额外说明

能够将 CPU% 的增加或减少归因于查询的一种用法是在凌晨 2:15 向 RCA 发送此 cpu% 的增加。

enter image description here

最佳答案

这里有几件事应该对你有帮助:

1) 查询分析

Digital Ocean 有一篇关于为查询配置文件创建日志的好文章。 这会将您在上面概述的日志与您请求的有关查询时间的其他信息结合在一起。 https://www.digitalocean.com/community/tutorials/how-to-use-mysql-query-profiling

它不会为您提供明确的 CPU 使用情况,但查询时间将帮助您了解运行时间较长的内容。但是,不要自欺欺人,因为仅仅查看查询时间本身并不是查询性能的唯一重要因素。仅仅因为查询需要很长时间并不一定意味着它没有做它应该做的事情。这就是为什么您还应该检查查询本身的结构。

2) 使用解释

使用 explain 将向您展示 mysql 用于生成查询输出的底层关系。例如,当将表关联在一起时,您几乎不想进行全表扫描,而是应该使用索引(希望原因很明显)。

https://www.sitepoint.com/using-explain-to-write-better-mysql-queries/

这里还有一个使用explain的workbench工具:

https://dev.mysql.com/doc/workbench/en/wb-tutorial-visual-explain-dbt3.html

3) 申请问题

最后,除了查询本身之外,不要忘记查看您的应用程序。在某些情况下,您实际上可能在不必要地运行查询。我记得不久前的一种情况,仅仅因为代码结构,一个查询被不必要地运行了成千上万次。捕获查询运行的次数需要您解析日志并自己计算查询运行的次数和频率 - 因此没有明确的工具可用于此。

其他工具

如果您需要实时信息,还有 MyTop 等工具非常方便。

这篇文章涵盖了很多关于它的信息:

https://blog.serverdensity.com/how-to-monitor-mysql/

关于mysql - 在 Mysql 中,如何使用性能模式查找哪些查询导致 cpu% 增加了多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49342354/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com