5

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

  • Postgresql 使用 MVCC,这表明它的数据量会更大

  • 在本次演讲中,日本最大的博客网站谈到了他们从 Postgresql 到 MySQL 的迁移。他们放弃 Postgresql 的原因之一是 Postgresql 中的数据量太大(第 41 页): 在日本最大的博客社区 Cocolog 从 PostgreSQL 迁移到 MySQL

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

有没有人对 Postgresql 和 MySQL 的数据大小进行比较有任何实际经验?

4

4 回答 4

5
  • MySQL 也使用 MVCC,只需检查 innoDB。但是,在 PostgreSQL 中,您可以更改 FILLFACTOR 为将来的更新腾出空间。有了这个,您可以创建一个数据库,该数据库既可以存储当前数据,也可以存储未来的一些更新和删除。当 autovacuum 和 HOT 做对了,你的数据库的大小就可以稳定了。
  • 该博客是关于旧版本的,很多事情都发生了变化,PostgreSQL 在压缩方面做得比过去好得多。
  • 压缩也取决于数据类型、配置和速度。您必须进行测试以查看它如何适合您的情况。

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

MySQL 和 PostgreSQL 是两种不同的野兽,PostgreSQL 是关于可靠性的,而 MySQL 很受欢迎。

于 2010-08-16T06:08:02.637 回答
4

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

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 是解决之道。

于 2010-08-16T04:34:55.570 回答
2

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

要了解更多信息,请查看http://www.postgresql.org/docs/9.0/static/storage-toast.html

这是相当低级的,可能没有必要知道,但是由于您使用的是博客,因此您可能会从中受益。

于 2010-08-18T09:25:17.253 回答
2

关于索引,

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

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

由于您将在 Postgres 中放入大量数据,您可能会发现能够在不锁定表的情况下创建索引是很实用的。

从我的iPhone发送。抱歉拼写错误和缺少参考资料

于 2010-08-16T11:33:54.557 回答