【发布时间】:2011-03-28 20:53:16
【问题描述】:
作为我的问题的序言,我知道没有直接支持这样的事情。我正在寻找的是任何一种变通方法,或者是复杂的推导,可以让我得到一个值得尊敬的结果。
我正在使用集群引擎处理一个相当大的 MySQL 集群(表 > 4 亿行)。
是否有人知道直接检索或通过 mysql 中的长查询获得某种(或更好)准确的进度指示的方法?我有一些查询可能需要长达 45 分钟,我需要确定我们的处理完成率是 10% 还是 90%。
编辑:
根据 cmets 的要求,这里是 一个 导致我最初的问题的查询的提炼和通用版本...
SELECT `userId`
FROM `openEndedResponses` AS `oe`
WHERE
`oe`.`questionId` = 3 -- zip code
AND (REPLACE( REPLACE( `oe`.`value`, ' ', '' ), '-', '' ) IN ( '30071', '30106', '30122', '30134', '30135', '30168', '30180', '30185', '30187', '30317', '30004' ));
此查询针对具有约 9500 万行的单个表运行。运行查询需要 8 秒,传输数据需要 13 秒(总共 21 秒)。考虑到表的大小,以及正在使用字符串操作函数的事实,我会说它运行得非常快。但是,对于用户来说,它仍然是 21 秒,显示为卡住或空闲。一些进展迹象将是理想的。
【问题讨论】:
-
一个查询最多需要 45 分钟,还是很多小的 INSERT/UPDATE/DELETE 查询?
-
KOGI,如果您能够解决您的问题,您应该将其添加为答案。
-
我无法解决我的问题。因此,每个人都 +1 :)
-
你能把需要这么长时间的查询发给我们吗???也许可以更好地优化 IT...
-
很遗憾我不能,因为它包含敏感的公司数据,但也许我可以提炼一点供公众查看......