gpt4 book ai didi

mysql - mysqld 会陷入循环吗?

转载 作者:行者123 更新时间:2023-11-29 09:14:42 25 4
gpt4 key购买 nike

我有一个每晚运行的批处理作业。它将来自几十个数据库的某些新数据收集到一个中央数据库(名为“ac”)中,然后与 SphinxSearch 一起使用以进行自动完成。批处理作业及其查询已经可靠运行了一年多。

今天我发现批处理作业卡住了。 mysqld 在一个核心上使用 100% CPU,通常需要 5 分钟的查询在 13 小时后仍在运行。

dtruss 显示 mysqld 正在不断地从查询涉及的数据文件中读取数据。相关索引都在mysqld的缓存中。没有磁盘 IO,因为 mysqld 仅读取数据文件,并且它们由 FreeBSD 缓冲在内存中。

编辑:也相关:dtruss 似乎表明 mysqld 在很多小时内没有任何内容可写入 ac.ac_schematic。

USE wxyz;

CREATE OR REPLACE VIEW ac_view AS SELECT
j.id AS pid, j.parent AS ppid,
table_a.name AS name_a,
table_d.name AS name_d,
table_s.name AS name_s
FROM junction j
INNER JOIN table_a ON table_a.id=j.aid
INNER JOIN table_d ON table_d.id=j.did
INNER JOIN table_s ON table_s.id=j.sid
WHERE s.inserted > '2010-12-21 03:00:00';

INSERT IGNORE INTO ac.ac_schematic
(pid, ppid, aid, did, sid)
SELECT pid, ppid, aid, did, sid
FROM ac_view v
INNER JOIN ac.dict_a a ON a.name=v.name_a
INNER JOIN ac.dict_d d ON d.name=v.name_d
INNER JOIN ac.dict_s s ON s.name=v.name_s;

mysqld 正在读取的文件是:

  ac/ac_schematic.MYD (more than anything)
wxyz/junction.MYD
wxyz/table_a.MYD
wxyz/table_d.MYD
wxyz/table_s.MYD

服务器版本是5.0.87

这很好奇,我很困惑。该查询不可能需要花费 12 个小时以上的 CPU 时间。我打赌我可以让查询无限期地运行,并与 CPU 计量器 Hook 。

我可以检查什么想法来尝试弄清楚发生了什么。我有很多可用的 Dtrace 工具。

最佳答案

它很可能卡在一个特定的查询或一组查询上。 (这些年来我已经看到这种情况发生过几次 - 通常没有任何原因。)

因此,一个好的第一个调用点是使用“SHOW PROCESSLIST;” SQL 查询来显示当前正在执行的查询。

关于mysql - mysqld 会陷入循环吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4511729/

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