首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MyISAM表损坏

MyISAM表损坏
EN

Stack Overflow用户
提问于 2009-06-13 14:32:00
回答 3查看 1.6K关注 0票数 1

有时我得到一个错误,如“表被标记为损坏,应该被修复”。该DB (表)正在使用MyISAM。最近,这种情况一直在发生。可能的原因是什么?最近,我正在执行一个批量插入

INSERT INTO table (..., ..., ...) VALUES (...), (...), (...) ...

然后它就挂起来了。或者花了很长时间才完成,这在我看来是悬而未决的。第二天,当我检查该表时,它又被标记为损坏。当我尝试使用mysqlcheck -r时,当它到达那个“损坏的”表时,它再次挂在那里时,它显示所有的表都正常。

那么,我能做些什么来防止这种情况。以及可能的原因是什么。数据库是托管的第三方,我如何调试这个?

InnoDB是一个更可靠的引擎吗?我听说MyISAM更快,但也有人说InnoDB也可以更快,但它需要更多的优化。我是否可以得出结论,InnoDB更可靠,但即使进行了优化,总体上也会稍微慢一些?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-09-05 03:44:19

好的,所以问题是公司的数据库超出了托管公司允许的存储空间。所以很明显没有人告诉公司他们超出了使用量...我想是糟糕的主人吧。

顺便说一句,mysql怎么可能知道这件事呢?

票数 0
EN

Stack Overflow用户

发布于 2009-06-13 15:05:50

如果表损坏,可以使用repair table命令进行修复:

代码语言:javascript
运行
复制
 REPAIR TABLE table;

如果您在服务器仍在运行时运行myisamchk (并且插入/选择正在命中表),这可能是损坏您的表的原因。我遇到的大多数损坏问题都是在服务器仍在运行的情况下尝试在服务器外部执行操作(复制文件等)。

对于只读数据库,InnoDB的速度较慢,因为它具有MyISAM遗漏的特性(符合ACID、行级锁定)。但是,如果您混合进行读和写操作,则InnoDB可以提供显著的性能改进,因为它不需要锁定整个表来进行写操作。你也不会遇到腐败问题。

票数 3
EN

Stack Overflow用户

发布于 2009-06-13 20:16:07

使用InnoDB。

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

https://stackoverflow.com/questions/990780

复制
相关文章

相似问题

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