选择PosgreSQL的十个理由,和几个 MySQL 胜出的特性

来源:互联网 发布:安卓编程入门 编辑:程序博客网 时间:2024/05/01 11:42
一、PostgreSQL 的稳定性极强,的确,MySQL 有多种引擎,也确实Innodb 等引擎在崩溃、断电之类的灾难场景下抗打击能力有了长足进步,但是,很多MySQL 用户都遇到过Server级的数据库丢失的场景——mysql系统库是MyISAM的……PG数据库15分钟被闪断四次的前DBA毫无压力的含笑而过。
 
 
 
二、任何系统都有它的性能极限,在高并发读写,负载逼近极限下,PG的性能指标仍可以维持双曲线甚至对数曲线,而MySQL 明显出现一个波峰后下滑。这些曲线在第三方的测试数据中频繁出现,有兴趣的朋友可以Google 或自己构建一个测试。
 
 
 
三、在欧美PG 远没有在中国这么非主流,很多优秀的团队都在用, 主流的开发语言几乎都有PG 的成熟开发接口,这一点不必有顾虑。像Python 的dbapi ,还支持PG 的异步读写,著名的SQLAlchemy 对PG的一些特有功能也有支持。
 
 
 
四、PG 多年来在GIS 领域处于优势地位,因为它有丰富的几何类型,实际上不止几何类型,PG有大量字典、数组、bitmap 等数据类型,通过SQLAlchemy 这样的工具,可以大大简化开发人员的工作。
 
五、PG 的“无锁定”特性非常突出,很多MySQL 需要锁表(也许是在你没有发现的情况下)的操作,PG都可以平滑处理,甚至包括vacuum 这样的整理数据空间的操作。这就是PG高并发下优异性能的奥秘。
 
 
 
六、PG 的可以使用函数和条件索引,这使得PG数据库的调优非常灵活,而这些功能是经过几十年发展和应用考验的,绝非某个一度反复宣称自己不支持的技术全都是“复杂而无用的”,直到自己支持这些技术为止的数据库产品可以相比的。
 
 
 
七、PG 对于数据分析师有难以抗拒的魅力,它有极其强悍的SQL 编程能力(9.x 图灵完备,支持递归!),有非常丰富的统计函数和统计语法支持,例如http://t.cn/zOqiVYc 这里的window 语法。PG 还可以方便的使用Python、Perl 甚至任何你喜欢的编程语言写函数。
 
 
 
八、PG 的有多种集群架构可以选择,plproxy 可以支持语句级的镜像或分片,slony 可以进行字段级的同步设置,standby 可以构建WAL文件级或流式的读写分离集群,同步频率和集群策略调整方便,操作非常简单。有年在腾讯广州举办的barcamp ,我现场演示,一次成功。
 
 
 
九、一般关系型数据库的字符串有限定长度8k左右,无限长TEXT 类型的功能受限,只能作为外部大数据访问。而PG 的TEXT 类型可以直接访问,SQL语法内置正则表达式,可以索引,还可以全文检索,或使用xml xpath。用PG的话,文档数据库都可以省了。
 
 
 
十、PG是BSD类的授权协议,如果你真的对它有足够的兴趣和动力,可以尽情的阅读代码,修改定制。这是出自伯克利校园,历经数十年锤炼的优秀代码,是巨大的宝藏。
 
 
 
==================================================================
 
最后说一下我感觉PG 不如MySQL 的地方。
 
 
 
第一,MySQL有一些实用的运维支持,如slow-query.log ,这个pg肯定可以定制出来,但是如果可以配置使用就更好了。
 
 
 
第二是mysql的innodb引擎,可以充分优化利用系统所有内存,超大内存下PG对内存使用的不那么充分,
 
 
 
第三是mysql有内存表,这是个被低估的功能。
 
 
 
第四点,MySQL现在允许跳过SQL,在socket上直接调用API,这是个勇敢的尝试,虽然整个社区用的还不多,但是遇到极端场景,需要榨干性能的团队,值得尝试
原创粉丝点击