Postgresql与MySQL:他们的数据大小如何相互比较?

时间:2010-08-16 01:28:22

标签: mysql postgresql storage data-storage

对于相同的数据集,主要是文本数据,Postgresql的数据(表+索引)大小与MySQL相比如何?

  • Postgresql使用MVCC,表明其数据量会更大

  • 在本次演示中,日本最大的博客网站谈到了他们从Postgresql迁移到MySQL的问题。他们退出Postgresql的原因之一是Postgresql中的数据量过大(第41页): Migrating from PostgreSQL to MySQL at Cocolog, Japan's Largest Blog Community

  • Postgresql具有数据压缩功能,因此应该使数据大小更小。但MySQL插件也有压缩。

有没有人对Postgresql&的数据大小有任何实际经验? MySQL相互比较?

4 个答案:

答案 0 :(得分:3)

两者都有各自文档中的存储要求:

MySQL:http://dev.mysql.com/doc/refman/5.1/en/storage-requirements.html
Postgres:http://www.postgresql.org/docs/current/interactive/datatype.html

快速比较两者并未显示任何明显的“zomg PostGres需要2兆字节存储位字段”类型差异。我认为Postgres可能比MySQL有更高的元数据开销,或者必须以更大的块扩展其数据文件,但是我找不到任何明显的Postgres“浪费”空间,而迁移到MySQL的空间就是治愈。

答案 1 :(得分:3)

  • MySQL也使用MVCC,只需检查 InnoDB的。但是,在PostgreSQL中你可以 更改FILLFACTOR以腾出空间 以供将来更新。有了这个,你 可以创建一个有空间的数据库 对于当前数据,但也有一些 未来的更新和删除。什么时候 autovacuum和HOT做他们的事情 对,你的数据库的大小可以 保持稳定。
  • 博客是关于旧版本的,很多 事情发生了变化和PostgreSQL 在压缩方面做得更好 就像过去那样。
  • 压缩取决于数据类型, 配置和速度也是如此。您 必须测试看看它是如何工作的 为你的情况。

我做了几次从MySQL到PostgreSQL的转换,在所有这些情况下,PostgreSQL小了约10%(MySQL 5.0 => PostgreSQL 8.3和8.4)。这10%用于更改最新表上的fillfactor,这些表被设置为60到70的fillfactor。速度要好得多(不超过20个并发用户的问题),数据大小也稳定,没有MVCC进行失控或真空远远落后。

MySQL和PostgreSQL是两种不同的野兽,PostgreSQL就是关于MySQL普及的可靠性。

答案 2 :(得分:2)

我想补充一点,对于大型列存储,postgresql还利用“使用LZ系列压缩技术中相当简单且非常快速的成员”来压缩它们

要了解详情,请查看http://www.postgresql.org/docs/9.0/static/storage-toast.html

这是相当低级的,可能没有必要知道,但是因为你正在使用博客,你可能会从中受益。

答案 3 :(得分:1)

关于索引,

MySQL将数据存储在索引中,这使得它们变得庞大。 Postgres没有。这意味着Postgres中b树索引的存储大小不依赖于它跨越的列数或列具有的数据类型。

Postgres还支持部分索引(例如WHERE status = 0),这是一个非常强大的功能,可以防止在只需要几百行的情况下构建数百万行的索引。

由于你要在Postgres中放入大量数据,你可能会觉得能够创建锁定表格的索引是切实可行的。

从我的iPhone发送。对不起拼写错误和缺少参考