首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL截断挂起

问MySQL截断挂起
EN

Stack Overflow用户
提问于 2011-01-15 02:04:39
回答 3查看 4.5K关注 0票数 1

我正在尝试截断一个有300,000行的表。当没有其他查询运行时,我运行truncate查询,它就挂起了。

show processlist;说状态正在“更新”。

服务端版本: 5.1.41-3ubuntu12.8 (Ubuntu)

该表是InnoDB。

你知道为什么会发生这种情况吗,或者我如何进一步调查这个问题?

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-01-24 17:44:18

我认为这是外键检查的问题。

我发现以下代码的运行速度和预期的一样快:

代码语言:javascript
复制
SET FOREIGN_KEY_CHECKS = 0;
TRUNCATE table_name;
SET FOREIGN_KEY_CHECKS = 1;
票数 7
EN

Stack Overflow用户

发布于 2015-11-13 23:00:18

虽然不是最技术性的答案,但我今天就努力解决了这个问题。我尝试了上面所有的方法(锁定表、外键检查、检查innodb引擎状态等等),但都没有用(尽管在后一种情况下,我根本没有充分理解我正在阅读的内容)。

我有一个邮件作业表,它拒绝写锁定、截断、重命名或删除(尽管它是完全空的)。我最终放弃并重新启动了mysql服务,在这一点上,我可以进行所需的更改,没有问题。

票数 1
EN

Stack Overflow用户

发布于 2011-01-15 02:14:31

我们的一个客户有一张大小为450 of 的表。我们试了所有的方法清空这个表,但是没有人解决这个问题。

我们试图截断该表,但是截断操作花费了超过10个小时的时间,并且没有解决问题。当我们在这个表上的任何查询中使用WHERE statement时,SQL server都会不间断地执行查询。

我能在1秒内清空表格的唯一方法如下:

代码语言:javascript
复制
set rowcount 1;

truncate table TABLE_NAME;

当然,在截断表之后,只需继续收缩数据库。

通过这种方法,您只需删除指向此表的指针,表中的数据行将通过收缩来删除

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

https://stackoverflow.com/questions/4694335

复制
相关文章

相似问题

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