首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysqld会陷入循环吗?

问mysqld会陷入循环吗?
EN

Stack Overflow用户
提问于 2010-12-23 01:15:30
回答 1查看 654关注 0票数 0

我有一个每晚运行的批处理作业。它将几十个数据库中的某些新数据收集到一个中央数据库(名为"ac")中,然后与SphinxSearch一起用于自动补全。批处理作业及其查询已经可靠地工作了一年多。

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

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

编辑:同样相关: dtruss似乎显示mysqld在许多小时内没有任何东西要写入ac.ac_schematic。

代码语言:javascript
复制
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正在读取的文件包括:

代码语言:javascript
复制
  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工具可用。

EN

回答 1

Stack Overflow用户

发布于 2010-12-23 01:26:29

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

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4511729

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档