我对PostgreSQL比对MySQL更熟悉.我曾经在PostgreSQL数据库中遇到过一次环绕Id失败,然后理解了数据库中清空的重要性.事实上,这是一个巨大的开销工作要处理(这是一个旧版本7.4.3,几个月前更新为autovacuum).在比较MySQL和PostgreSQL时,假设MySQL不必处理PostgreSQL中的真空等开销.这个假设正确吗?
还有,为什么MySQL Dbs与PostgreSQL相比不需要真空?MySQL dbs还有其他类似的优化方案吗?
我对PostgreSQL比对MySQL更熟悉.我曾经在PostgreSQL数据库中遇到过一次环绕Id失败,然后理解了数据库中清空的重要性.事实上,这是一个巨大的开销工作要处理(这是一个旧版本7.4.3,几个月前更新为autovacuum).在比较MySQL和PostgreSQL时,假设MySQL不必处理PostgreSQL中的真空等开销.这个假设正确吗?
还有,为什么MySQL Dbs与PostgreSQL相比不需要真空?MySQL dbs还有其他类似的优化方案吗?
Robert Haas wrote on this topic
简短的版本是InnoDB使用回滚日志(log),更像Oracle的设计.主表上只保留行的最新版本.它必须管理日志(log)清除,这是一种异步/延迟操作,具有与PostgreSQL的VACUUM
相关的功能.
这意味着要在更新时执行更多的写入操作,并使对旧行版本的访问速度大大降低,但消除了异步真空的需要,也意味着不会出现表inflating 问题.相反,您可以拥有巨大的回滚段,或者回滚空间不足.
所以这是一种权衡,一种具有不同优势和问题的设计.
如果你说的是MyISAM桌子,那就完全不同了.PostgreSQL的表不会吃掉你的数据.米萨姆会的.PostgreSQL的表是事务性的.MyISAM不是.平面文件也不需要VACUUM
,这不是一个好主意.