最近打算研究下几个开源的数据库,但是主要精力还是研究Oracle RDBMS。 MySQL 和PostgreSQL 是开源中用的最多的2个。 从网上搜了点资料。 整理如下。 这些资料也是以前的资料, 现在肯定是有变动。 所以这些内容,仅供参考。

一、两者的共同优势

  这两个产品都属于开放源码的一员,性能和功能都在高速地提高和增强。MySQL AB的人们和PostgreSQL的开发者们都在尽可能地把各自的数据库改得越来越好,所以对于任何商业数据库使用其中的任何一个都不能算是错误的选择。
  
二、两者不同的背景

  MySQL的背后是一个成熟的商业公司,而PostgreSQL的背后是一个庞大的志愿开发组。这使得MySQL的开发过程更为慎重,而PostgreSQL的反应更为迅速。
  这样的两种背景直接导致了各自固有的优点和缺点。
  
三、MySQL的主要优点
  1、首先是速度,MySQL通常要比PostgreSQL快得多。MySQL自已也宣称速度是他们追求的主要目标之一,基于这个原因,MySQL在以前的文档中也曾经说过并不准备支持事务和触发器。但是在最新的文档中,我们看到MySQL 4.0.2-alpha已经开始支持事务,而且在MySQL的TODO中,对触发器、约束这样的注定会降低速度的功能也列入了日程。但是,我们仍然有理由相信,MySQL将有可能一直保持速度的优势。

  2、MySQL比PostgreSQL更流行,流行对于一个商业软件来说,也是一个很重要的指标,流行意味着更多的用户,意味着经受了更多的考验,意味着更好的商业支持、意味着更多、更完善的文档资料。

  3、与PostgreSQL相比,MySQL更适宜在Windows环境下运行。MySQL作为一个本地的Windows应用程序运行(在NT/Win2000/WinXP下,是一个服务),而PostgreSQL是运行在Cygwin模拟环境下。PostgreSQL在Windows下运行没有MySQL稳定,应该是可以想象的。

  4、MySQL使用了线程,而PostgreSQL使用的是进程。在不同线程之间的环境转换和访问公用的存储区域显然要比在不同的进程之间要快得多。

  5、MySQL可以适应24/7运行。在绝大多数情况下,你不需要为MySQL运行任何清除程序。PostgreSQL目前仍不完全适应24/7运行,这是因为你必须每隔一段时间运行一次VACUUM。

  6、MySQL在权限系统上比PostgreSQL某些方面更为完善。PostgreSQL只支持对于每一个用户在一个数据库上或一个数据表上的INSERT、SELECT和UPDATE/DELETE的授权,而MySQL允许你定义一整套的不同的数据级、表级和列级的权限。对于列级的权限,PostgreSQL可以通过建立视图,并确定视图的权限来弥补。MySQL还允许你指定基于主机的权限,这对于目前的PostgreSQL是无法实现的,但是在很多时候,这是有用的。

  7、由于MySQL 4.0.2-alpha开始支持事务的概念,因此事务对于MySQL不再仅仅成为劣势。相反,因为MySQL保留无事务的表类型。这就为用户提供了更多的选择。

  8、MySQL的MERGE表提供了一个独特管理多个表的方法。

  9、MySQL的myisampack可以对只读表进行压缩,此后仍然可以直接访问该表中的行。
  

四、PostgreSQL的主要优点:
  1、对事务的支持与MySQL相比,经历了更为彻底的测试。对于一个严肃的商业应用来说,事务的支持是不可或缺的。

  2、MySQL对于无事务的MyISAM表。采用表锁定,一个长时间运行的查询很可能会长时间地阻碍对表的更新。而PostgreSQL不存在这样的问题。

  3、PostgreSQL支持存储过程,而目前MySQL不支持,对于一个严肃的商业应用来说,作为数据库本身,有众多的商业逻辑的存在,此时使用存储过程可以在较少地增加数据库服务器的负担的前提下,对这样的商业逻辑进行封装,并可以利用数据库服务器本身的内在机制对存储过程的执行进行优化。此外存储过程的存在也避免了在网络上大量的原始的SQL语句的传输,这样的优势是显而易见的。

  4、对视图的支持,视图的存在同样可以最大限度地利用数据库服务器内在的优化机制。而且对于视图权限的合理使用,事实上可以提供行级别的权限,这是MySQL的权限系统所无法实现的。

  5、对触发器的支持,触发器的存在不可避免的会影响数据库运行的效率,但是与此同时,触发器的存在也有利于对商业逻辑的封装,可以减少应用程序中对同一商业逻辑的重复控制。合理地使用触发器也有利于保证数据的完整性。

  6、对约束的支持。约束的作用更多地表现在对数据完整性的保证上,合理地使用约束,也可以减少编程的工作量。

  7、对子查询的支持。虽然在很多情况下在SQL语句中使用子查询效率低下,而且绝大多数情况下可以使用带条件的多表连接来替代子查询,但是子查询的存在在很多时候仍然不可避免。而且使用子查询的SQL语句与使用带条件的多表连接相比具有更高的程序可读性。

  8、支持R-trees这样可扩展的索引类型,可以更方便地处理一些特殊数据。

  9、PostgreSQL可以更方便地使用UDF(用户定义函数)进行扩展。
  
五、MySQL和PostgreSQL 选择
  除了MySQL和PostgreSQL外,还有Oracle、Sybase、Informix等数据库的选择。如何确定只在MySQL和PostgreSQL中进行选择,可以参考:

  1、如果你的应用对数据的完整性和严肃性要求不高,但是追求处理的高速度。例如是一个论坛和社区,你应该使用MySQL。
  2、你的应用是一个严肃的商业应用,对数据完整性要求很高。而且你希望对一些商业数据逻辑进行很好的封装,例如是一个网上银行,你应该使用PostgreSQL。
  3、你的应用处理的是地理数据,由于R-TREES的存在,你应该使用PostgreSQL。

整理自网络

-------------------------------------------------------------------------------------------------------

Blog: http://blog.csdn.net/tianlesoftware

Email: dvd.dba@gmail.com

DBA1 群:62697716(满);   DBA2 群:62697977(满)   DBA3 群:62697850(满)

DBA 超级群:63306533(满);  DBA4 群: 83829929  DBA5群: 142216823

聊天 群:40132017   聊天2群:69087192

--加群需要在备注说明Oracle表空间和数据文件的关系,否则拒绝申请

转载于:https://www.cnblogs.com/tianlesoftware/archive/2011/04/29/3609684.html

MySQL 和 PostgreSQL 对比相关推荐

  1. mysql firebird 性能_Firebird, MySQL 与 PostgreSQL 代码质量对比

    今天看到一篇文章 - "Firebird, MySQL 与 PostgreSQL 代码质量对比"-  关于三个开源 RDBMS 的静态分析比较. 主要内容 A few words ...

  2. MySQL 与 Postgresql 优劣势对比

    postgresql和mysql都是免费且功能强大的开源数据库,很多用户面对这两个库都会有一个问题,那就是哪一个才是最好的开源数据库,MySQL还是PostgreSQL呢?该选择哪一个开源数据库呢? ...

  3. postgresql导入mysql_【原创】MySQL和PostgreSQL 导入数据对比

    在虚拟机上测评了下MySQL 和 PostgreSQL 的各种LOAD FILE方式以及时间. 因为是虚拟机上的测评,所以时间只做参考,不要太较真, 看看就好了. MySQL 工具: 1. 自带mys ...

  4. 在MySQL和PostgreSQL之外,为什么阿里要研发HybridDB数据库?

    编者按 \\ 在大数据火遍IT界之前,大家对数据信息的挖掘通常聚焦在BI(Business Intelligence)之上.BI具有着明确的分析需求,清晰地知道需要处理哪些信息,并且如何最终获得多维度 ...

  5. sqlite mysql pgsql_SQLite 、MySQL 与PostgreSQL三个关系型数据库的比较

    SQLite .MySQL 与PostgreSQL三个关系型数据库的比较 1970年埃德加·科德提出关系模型之后,关系型数据库便开始出现,经过40多年的演化,如今的关系型数据库不仅种类繁多,而且功能强 ...

  6. 2019最受欢迎数据库:MySQL居首PostgreSQL第二Oracle位列第八

    近日,倍受关注的 2019 Stack Overflow 年度开发者调查结果已经出炉,本次年度调查共约 90,000人参与了需要耗时 20分钟的调查问卷填写. 我们重点关注一下关于数据库的信息,但是在 ...

  7. mysql longtext db2_从 MySQL 或 PostgreSQL 迁移到 DB2 Express-C

    从 MySQL 或 PostgreSQL 迁移到 DB2 Express-C 用三个简单步骤迁移到 DB2 Vikram Khatri, Nora Sokolof, 和 Manas Dadarkar ...

  8. MySQL和PostgreSQL数据库安全配置

    shewey · 2016/05/26 16:40 0x00 MySQL和PostgreSQL安全配置 针对开源数据库MySQL和PostgreSQL的安全配置主要主要通过身份鉴别.访问控制.安全审计 ...

  9. 微软宣布MySQL和PostgreSQL的Azure数据库服务正式可用

    \ 看新闻很累?看技术新闻更累?试试下载InfoQ手机客户端,每天上下班路上听新闻,有趣还有料! \ \\ 微软宣布MySQL和PostgreSQL的Azure数据库服务正式可用.Azure将这两个开 ...

最新文章

  1. EL表达式从request和session中取值
  2. Spring-AOP概述
  3. 皇室战争:暗夜女巫重做,去掉亡语机制后,她凉的可能会更快
  4. (学习日记)关于a1,a2,a3,...,an共n个元素依次入栈其可能出栈的排列数的计算(catalan数)...
  5. cannot find any entry in order attachment link
  6. 51 nod 1522 上下序列——序列dp
  7. Custom.pll : ZOOM小测试
  8. timestamp类型的数据如何赋值_VBA一组代码如何搞定赋值给数组arr及回填数据给工作表...
  9. java equals getclass_Java equals()方法 – 子类中equals的语义如何确定getClass和instanceof的使用...
  10. html画图代码_python之matplotlib画图教程(1)
  11. leetcode [35]搜索插入位置/Search Insert Position 优雅的暴力可能比二分查找效率更高
  12. 对外合作,你的作风就是公司的作风
  13. 使用MySQL管理工具-SQLyog9.63报错号码2003,超详细解析
  14. Revit2018下载和安装教程
  15. 拷优(CopyU!)mini独家具备穿透U盘防拷贝软件的功能!
  16. 年前找Java实习面试经历
  17. LinkCloud:云计算服务 没有优惠活动就是最好的优惠
  18. 杭电1856——并差集
  19. 中软国际实习 dzy15
  20. python用unittest+HTMLTestRunner的框架测试并生成测试报告

热门文章

  1. 如何做波动率的分析呢?
  2. UE4材质:纯数学算法实现水面水波扩散效果
  3. 多线程的多核分配问题验证
  4. KMP算法~看的清楚~
  5. 开源是项“全民工程”,揭秘开源团队的管理运作
  6. linux命令之vmstat
  7. 修改Bootstrap的一些默认样式
  8. 【APUE】Chapter17 Advanced IPC sign extension 结构体内存对齐
  9. 虚拟机配置网络eth1
  10. C++内联函数的学习