想对比一下MysqL和pgsql,于是到baidu上随便搜了几篇文章.其中有一篇文章写的不错.而且其中有一段话写的很经典:"没有好的数据库,只有合适的数据库"
以下文章转自:http://blog.chinaunix.net/u/553/showart.PHP?id=283310
MysqL与Postgresql数据性能比较
数据量今后会很大/你无法预测 数据量会多大,建议换postgresql.
MysqL 在一定量数据后(一般观点是 MysqL 单表 200-300万 时性能最好,数据再多性能就开始下降),性能下降很快,且大数据量情况下,MysqL 稳定性/数据可靠性是问题。
postgresql 8.2 的官方说明如下:
http://www.postgresql.org/about/
QUOTE:
Limit Value
Maximum Database Size Unlimited
Maximum Table Size 32 TB
Maximum Row Size 1.6 TB
Maximum Field Size 1 GB
Maximum Rows per Table Unlimited
Maximum Columns per Table 250 - 1600 depending on column types
Maximum Indexes per Table Unlimited
MysqL 目前只是适合 跑 web 应用,对于海量数据存储、数据仓库 不合适。
postgresql 在国内早有人做大型商业应用。
QUOTE:
对于大型应用,Postgresql 还是合适的。以下是Postgresql 中文官方手册维护者 何伟平 laser 对于一个 大型应用 的回复:
QUOTE:
怎么说呢,实际上,我现在手头就有一个庞大的数据库,
数据+索引已经超过500G了,数据总量超过30亿行数据,
每天会忙12小时左右。
基本上,我觉得,首先:
检查你的IO投资,不要在硬盘上吝啬。
第二,仔细分析自己的瓶颈是什么,
很多事后,我们并不一定需要database replicate。
第三,适当使用数据的切割。
简单归结一句话:
适当的硬件投资和规划加上合适的软件结构。
具体的事情需要具体分析。
介绍一下我们那个500G的大库:
单机HP DL385,16G内存和6块SCSI磁盘,20块SATA磁盘盘阵,
盘阵是HP DL320S,(MSA1500),相当便宜。
我们的构造是SCSI是RAID5,跑XFS,SATA,RAID5,跑EXT3,
目前,性能非常满意(我们的角度),有些update语句,一次
会更新几百万行数据,那么我们有些程序,一天要更新几十次,
基本上也可以在1000s之内完成。每天vacuum一次,在低负载的
时段,大概需要120min~200min,用slony做数据的备份,备份
到一台大硬盘的IDE机器上(1.5T硬盘,别惊讶,现在750G硬盘
才3500块钱。)。
这台机器是数据挖掘的,并发数不多,所以我们没有做负载方面
的均衡。
有问题可以继续讨论。
测试,MysqL vs postgresql
QUOTE:
MysqL 不适应 大量数据,密集运算,重型负载应用。
至少在目前,开源数据库的质量还不能与商业数据抗衡。
在 2006-11-29 有个国外第3方服务器机构(Tweakers.net)做的 MysqL 4.1.20,MysqL 5.1.20a 与 Postgresql 8.2 的对比性能测试(在不同档次配置的机器上运行). 你可以参考.
Posted byfsluiter@gmail.com
Tweakers.net,a dutch community of online tweakers,benchmarked their potential new server with Postgresql 8.2 vs several versions of MysqL 4.1.20 and MysqL 5.1.20a
图文测试统计报告:
http://tweakers.net/reviews/657/6
QUOTE:
如果要求更高,推荐使用性能优异的 bizgres 集群。
参考:
http://bbs.chinaunix.net/viewthr ... page%3D1&page=1
QUOTE:
2亿的单表,slect crount(*) from table; 来全表扫描。
同配置单主机 硬件: 内存8G,每台机器是两个双核的AMD86.磁盘Raid0+1
Oracle 10g用了50秒,postgresql的普通集群用来一分40秒.
改用Bizgers 这个 Postgresql 高性能集群(使用)后,速度是 Oracle 的4倍。
MysqL超过1亿行慢得和蜗牛一样。
你的要求恐怕最好是使用Oracle,DB2 强力商业数据库才合适. 如果非要用开源的,在MysqL与Postgresql之间选,更合适的是Postgresql: 1."海量数据","复杂业务逻辑" 这两条 Postgresql占绝对优势,MysqL 的确快,但只是在小数据量时很快,但如果巨量数据,性能下降很快比Postgresql快多了. 在巨量数据条件下MysqL可靠性成问题,今天就有朋友给我抱怨"我也就做DIscuz-BBS MysqL 库也就10GB 大,数据时不时损坏,经常需要mycheck修复数据才行.很想让系统定期check";另一个朋友也插话说他的MysqL数据库到了100G后三天两头 数据损坏,搞的头大. Postgresql 我所知道的例子是有库到了4TB 正常运行. 2."频繁的数据统计和分析,可能会运用到不少商业智能、统计模型和预测的应用" 这条也是 Postgresql占优势. MysqL 只在到了5.0 时引进了,InnoBDB 数据表格式后 才具有初步的事务处理能力,目前还是很简陋,且,InnoBDB 比 默认的 MyISAM 性能差. MysqL 如果只是查询数据(数据不多)性能不错,但其他操作就没那么出色.如果用InnoBDB 和开启 MysqL 5.0 以来添加的新的企业用途功能后,性能根本不能与Postgresql比. Postgresql 功能很全,甚至有些功能商业数据库也不具备,用于商业事物处理的功能很久以前就很成熟. 呵呵,我也是Postgresql新手,只是喜欢探索和看书,看资料. 你这种要求,最好去咨询国内最著名的Postgresql 大牛 何伟平 -->去他的www.pgsqldb.org找他,他是创办人,有丰富的Postgresql商用经验,最近在 <<程序员杂志>>2006-6月号上发表一篇专门介绍 开源数据库的文章(MysqL,Postgresql,FireBird),也简单介绍了一个Postgresql商用案例. [ 本帖最后由 likuku 于 2006-9-1 22:51 编辑 ] |
gh.duowan.com,使用Postgresql。 27G的数据量,200W的日访问量 下面是该网站维护者Chanix给我的回复,仅作参考: --------------------------------- 我的机房是电信线路,网通访问比较慢。这几天流量突涨,效率上正在进行优化。从最前端的 squid 到最后的 数据库服务器都在不断调整和优化中。 我负责的站也有社会性软件的思想设计的社区。可以看看http://home.duowan.com。 PG不是完美的数据库,肯定是有缺点的。我认为主要的缺点就是进程模式,一个进程处理一个连接,这样的处理方式较消耗资源。不过从另外一方面来讲,就是因为使用了“落后的”进程模式所以才能达到这么稳定的效果。世上的东西总是双刃剑。。。 MysqL的确是快,呵呵,特别是ISAM。目前使用MysqL做SNS类型网站的成功案例也不少。例如 mixi.jp myspace.com LiveJournal.com 等等,都是上T容量,上百台数据库服务器。。。而且MysqL支持的表的类型比较多,ISAM INNODB HEAP。。。可以按照数据的使用状态来进行灵活的使用。 说说为什么我选择PG吧。 我选择PG是因为从6系列开始我就一直在用,比较熟悉。而且我实在是不认为没有ACID的东西可以叫数据库。。。当时MysqL还在3系列,连最基本的事 务功能也没有,更加别说什么触发器,函数了。插入记录竟然还是表锁,并发插入一多,整个系统马上和纸搭的房子一样坍塌掉(很不幸,当时我做的那个应用插入 比较多)。。。 MysqL也有它的优点,这个不是重点,我就不多说了。 我对PG比MysqL熟悉的多。所以我选择PG。这个是最主要的原因。到目前为止,PG还没有让我失望。我觉得你的选型也可以这样考虑的,从实际中看两者各有优劣。也各有成功案例。很难说SNS只有PG能做,或者只有PG能做。 还是那句话,没有好的数据库,只有合适的数据库。找到最合适你使用的数据库才是最好的选择 微笑 正如我虽然选择PG,但没有排斥MysqL,在我负责的站点中,还是有很多应用是使用MysqL的。 顺带说一句: MysqL要4系列以后,使用INOODB才支持事务。而INOODB与PG之间的效率差别我测试的结果不是很大。 有空可以去看看源代码。MysqL支持事务的那段代码比起PG比较起来,PG的清晰多了(虽然,我哪个都写不出来 害羞 )。 PG的确稳定,我有个应用我正准备废掉,所以不想花时间优化了,那台数据库服务器每天UPTIME超100。我现在都懒的管了。反正只要访问的人少了,肯定能恢复过来。换成MysqL,已经崩溃,数据库受损了。 PG一旦出问题,那就是真的出问题了。MysqL不是,出问题了,你可以通过 repair 来修,不过修理的结果是对是错,你就自己掌握吧。我是试过一个表,系统很高兴的告诉我修理成功!结果发现唯一键字都出重复,害的我整了一通宵。 PG最大的问题我认为在于一个连接一个进程。一台机器上最大的进程数是有限制的,也就意味着可以同时处理的连接数比MysqL小的多。 PG需要整理,虽然8系列以后出现了 auovaccum 但是还是很麻烦。这也是目前我比较头痛的问题。因为网站是24*7对外开放的,所以不可能停机去VACCUM FULL,幸好机器硬盘够大,呵呵。这个问题也是我一直想请教LARSER的。 PG的中文资料太少!用的人少,可以请教的人也不多。不象MysqL,哪个书店里面都有什么XXX天精通MysqL之类的书,到处都有人吹嘘自己精通MysqL(即使他只会SELECT + UPDATE)。 |