mysql陷入循环_mysqld会陷入循环吗?

我有一个每天晚上运行的批量作业。它将几十个数据库中的某些新数据收集到一个中央数据库(名为“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计量器挂钩。

任何想法,我可以检查,试图找出发生了什么。我有一个相当不错的Dtrace工具可用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值