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

  • PostgreSQL使用MVCC,这表明其数据大小将更大

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

  • PostgreSQL具有数据压缩,因此应该使数据大小较小。但是MySQL插件也具有压缩。

有人对PostgreSQL和MySQL的数据大小相互比较有任何实际经验吗?

有帮助吗?

解决方案

  • MySQL也使用MVCC,只需检查InnoDB即可。但是,在PostgreSQL中,您可以更改填充器以腾出空间以供将来更新。因此,您可以创建一个数据库,该数据库具有用于当前数据的空间,还可以用于一些未来的更新和删除。当Autovacuum和Hot正确地做事时,数据库的大小可能是稳定的。
  • 该博客是关于旧版本的,许多事情发生了变化,PostgreSQL在压缩方面做得更好,就像过去一样。
  • 压缩也取决于数据类型,配置和速度。您必须测试以查看它如何适合您的情况。

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

MySQL和PostgreSQL是两个不同的野兽,PostgreSQL在MySQL为Populair的情况下都是关于可靠性的。

其他提示

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

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的空间是治疗方法。

我想补充一点,对于大型列商店,PostgreSQL还利用“相当简单且非常快速的压缩技术家族成员”来压缩它们。

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

它是相当低的水平,可能不必知道,但是由于您使用了博客,因此您可能会从中受益。

关于索引,

MySQL将数据存储在索引中,从而使其巨大。 Postgres没有。这意味着Postgres中B树索引的存储大小并不取决于其跨度的列数或列具有的数据类型。

Postgres还支持部分索引(例如,状态= 0),这是一个非常有力的功能,可防止在仅需要几百个时构建数百万行的索引。

由于您将在Postgres中放置很多数据,因此您可能会发现能够创建锁定桌子的索引是很可取的。

从我的iPhone发送。对不起,拼写不好和缺乏参考

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top