首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么与PostgreSQL相比,Mysql不需要它?

为什么与PostgreSQL相比,Mysql不需要它?
EN

Stack Overflow用户
提问于 2014-08-06 14:24:48
回答 2查看 23.6K关注 0票数 31

我对PostgreSQL比MySQL更熟悉。在使用PostgreSQL数据库时遇到过一次环绕式Id故障,然后了解了在数据库中进行清理的重要性。实际上,这是一项巨大的开销工作(而且是使用旧版本7.4.3,该版本在几个月前进行了更新,以实现自动真空)。在比较MySQL和PostgreSQL时,假设MySQL不必处理像PostgreSQL中的vacuum这样的开销。这个假设是正确的吗?

另外,为什么与PostgreSQL相比,MySQL Dbs不需要真空?MySQL数据库还有没有类似vacuum的优化方案?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-06 15:52:12

Robert Haas wrote on this topic

简而言之,InnoDB使用回滚日志,更像甲骨文的设计。只有行的最新版本保留在主表中。它必须管理日志清除,这是一个与PostgreSQL的VACUUM相关函数的异步/延迟操作。

这意味着在更新时要做更多的写操作,并使访问旧的行版本变得非常慢,但是消除了异步真空的需要,这意味着您不会有表膨胀的问题。取而代之的是,你可以有巨大的回滚段,或者没有足够的回滚空间。

因此,这是一种权衡,一种具有不同优点和问题的设计。

如果您谈论的是MyISAM表,那么它就完全不同了。PostgreSQL的表不会吃掉你的数据。MyISAM会的。PostgreSQL的表是事务性的。MyISAM不需要。平面文件也不需要VACUUM,这不是一个好主意。

票数 20
EN

Stack Overflow用户

发布于 2014-08-06 14:48:35

PostgreSQL的vacuum的MySQL近似值是OPTIMIZE TABLE tablename (MySQL docs)。它在MySQL中执行与PostgreSQL类似的功能,根据使用的存储引擎,它回收未使用的空间、重新组织索引和表以及整理数据文件碎片。您绝对应该像PostgreSQL中的vacuum一样定期运行它。

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

https://stackoverflow.com/questions/25153532

复制
相关文章

相似问题

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