对于相同的数据集,主要是文本数据,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相互比较?
答案 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到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发送。对不起拼写错误和缺少参考