1.Posgresql是进程模式,多进程,单线程,类似的还有Oracle。而MYSQL采用的是线程模式,单进程,多线程,对此,大家在运行数据库的时候可以查看任务管理器,SQL Server也是如此。

众所周知,多进程,进程模式,利用CPU时间片轮转,可以利用更充分CPU,因此光拿多核单台机器上来说,他明显在支持高并发性能方面更胜一筹。而线程模式呢,开一个线程显然要比开一个进程所耗费的资源要少,另外在不同线程之间的环境转换和访问公用的存储区域,显然比在不同进程之间要快,所以它的处理速度要快,对资源的消耗较少,但是当高并发时,性能不佳。

2.存储引擎。Posgresql只有一个存储引擎,且综合性能良好。而MYSQL支持不同表使用不同的存储引擎。如MYISAM,InnoDB(Oracle所有),memory。在mysql中配置有许多不同的存储引擎,用户可以灵活的选择适用于服务器、数据库和表格的存储引擎,以便获得最大的性能和最大的灵活性。这也是mysql不同于其他大型数据库以及mysql为何如此受欢迎的主要因素。借鉴说明一下MYSQL中重要的3个存储引擎的特点:

每种存储引擎都有各自的优势,不能笼统的说谁的性能更好,只有合适不合适。

(1)MyISAM存储引擎:主要用于管理非事物表,它提供了高速的存储与检索,以及全文搜索能力。该存储引擎插入数据快,但是空间和内存的使用效率较低。如果表主要适用于插入新纪录和读出记录,那么选择MyISAM存储引擎可以实现处理的高效率,不支持事物的提交和回滚,查询时会把整个表锁定,但是速度快

(2)InnoDB存储引擎:它主要用于事务处理应用程序,支持外键,同时还支持奔溃修复能力和并发控制。如果对事物的完整性要求比较高,要求实现并发通知,那么选择InnoDB存储引擎比较有优势。如果需要频繁的进行更新、删除操作,也可以选择该存储引擎,因为该存储引擎可以实现事物的提交和回滚。(所以事物就是对实时性要求比较高)

(3)Memory存储引擎:Memory存储引擎提供“内存中”表,该存储引擎的所有数据都存储在内存中,数据的处理速度很快但是安全性不高。

3.对于MYSQL来说,它目前使用更为普遍,所以它的商业支持和应有要好于Posgresql,这一点如果要商业应用也是不可以忽视的。

历史对比  

 PostgreSQL社区是同类数据库历史最悠久,规模最大,发展最快的社区,PostgreSQL起源于1985年加州伯克利大学的Ingress项目,在学术界流行多年后,PostgreSQL项目开源了,社区开始蓬勃发展,截至目前,有超过1000名贡献者和3万名成员。   大社区的关键优势在于用户和开发者之间的互动比较频繁,用户甚至可以直接参与到新功能的设计中,这种多元化的社区模式也是其它开源社区争相模仿的模式。   MySQL社区最初起源于商业世界,MySQL于1994年诞生在瑞典,作为网站背后的高速数据库,在MySQL AB公司控制几年后,MySQL也选择了开源,有商业公司的支持使得MySQL很快便成为世界上广泛使用的数据库之一,这也是Sun公司2008年花10亿美元重金收购MySQL AB的原因,因为MySQL的流行,也成为欧盟调查Oracle收购Sun一案的主要因素。

  PostgreSQL特性和功能  

 通过数十年的发展,PostgreSQL被誉为市场上最先进的开源数据库,作为一个功能全面的开源关系数据库管理系统,PostgreSQL在支持高事务,关键任务应用方面提供了许多特性。   PostgreSQL最核心的竞争力是对它保管的数据的安全保护能力,通过使用企业身份验证机制,如LDAP或Kerberos控制数据库的连接访问,一单通过验证,所有到数据库的通信都可以走SSL连接,提供了高度安全的保护。   添加或修改数据时,PostgreSQL强制执行用户定义的大量约束,确保数据质量符合业务规则限制,从简单的范围检查到复杂的外键检查,一旦数据存储到磁盘上,就可以进行备份,更重要的是,从灾难恢复是至关重要的,PostgreSQL有一个简单的在线备份工具,配合时间点恢复(PITR)机制,为管理员执行快速恢复提供了很好的灵活性。   PostgreSQL的核心架构允许其他社区小组通过附加模块的形式为PostgreSQL创建更高级的功能,一个很好的例子就是PostgreSQL的地理空间支持,此功能来自一个名为PostGIS的模块,它是PostgreSQL的一个简单扩展,使其成为最强大的可保存空间数据的开源或商业数据库。   PostgreSQL另一个扩展能力是它具有多种不同类型的存储过程语言,允许开发人员使用他们熟悉的语言编写服务器端代码,例如,需要执行复杂文本处理的触发器可以用Perl编写,以便利用其强大的正则表达式功能。  

 MySQL特性和功能

  MySQL被誉为是最流行的开源数据库,从一开始,MySQL就被设计为适合网站快速顺序索引方法(ISAM)的数据存储引擎,这种工作负载的一大特点就是有许多小型查询,于是催生了查询缓存,MySQL集群等提高MySQL性能的技术,MySQL集群允许数据库跨多台物理服务器部署,实现负载均衡。   PostgreSQL不是唯一允许通过外部扩展增加数据库功能的开源数据库,MySQL最大的优势之一就是它的可插入式存储引擎,MySQL默认采用的是MyISAM存储引擎,为读操作频繁的环境提供更好的性能,而InnoDB存储引擎更适合写密集型事务环境。   此外,还有许多第三方存储引擎,如Brighthouse和DB2,这种灵活性允许管理员根据每个表的需求调整MySQL实例,例如,对一个读操作频繁的表,如国家代码表,使用MyISAM存储引擎,对于事务型表,如销售订单表,则使用InnoDB存储引擎。   PostgreSQL和MySQL在各种应用场合都得到了广泛的使用,例如,PostgreSQL一向以强力支撑事务密集型企业应用而著名,但许多网站也用它来支撑Web应用程序,相反,MySQL一直都是Web应用程序的首选数据库,但它在事务型企业应用系统中也得到了大量使用。  

 社区为王  

 PostgreSQL和MySQL最大的不同可能不在技术,而是在社区上,开源项目从本质上来讲,要由社区开发人员参与和贡献,项目才能保持活力,开源社区有两种不同的类型。   首先,有独立自主社区型纯开源数据库项目,PostgreSQL是这种最古老,最大的独立开源数据库社区,这种社区的好处是真正独立于厂商,不受厂商控制。   第二种开源社区是由厂商控制的,这种开源项目往往同时有社区免费版和商业付费版,MySQL就是一个例子,MySQL项目最初是由MySQL AB资助和控制的,所有MySQL核心开发人员和架构师都由MySQL AB出资雇佣,被Sun收购后,MySQL社区就被Sun控制,现在又被Oracle控制。  

 共享许可  

 许可,或源代码允许如何修改和共享,这可能是真正影响开源数据库选择的决定性因素,PostgreSQL许可是仿照BSD许可模式的,它允许修改代码,并根据修改者自愿是否以开源形式再发布,这种开放式许可对想使用PostgreSQL作为他们解决方案一部分的软件厂商来说是最理想的,因为PostgreSQL许可不强制衍生解决方案也开源,软件厂商可以选择开放他们的源码,也可以不开放。   MySQL是通过GNU GPL共享,并由Oracle控制,GNU GPL更加开放,它鼓励免费共享代码,它防止了采用GNU GPL共享的代码后,也被迫采用源作者GNU GPL许可共享的缺陷。   

小结  

 虽然PostgreSQL和MySQL同属开源数据库,但相同点也可能仅限于此,重叠的地方很少,它们都有自己鲜明的特性,相对于昂贵的专有数据库产品,它们都是高品质的开源数据库,尤其是在当今经济不景气的环境下,选择优秀的开源数据库不失为为企业节省成本的一种好方法。

postgresql数据库和mysql数据库的对比分析的更多相关文章

  1. SQL Server数据库和MySQL数据库有什么区别?

    SQL Server数据库和MySQL数据库有什么区别呢?详细很多初入IT行业的朋友对于SQL Server数据库和MySQL数据库经常搞混,认为这两种数据库是同一种,其实不然,今天我们来分析一下这两 ...

  2. Oracle,SQL Server 数据库较MySql数据库,Sql语句差异

    原文:Oracle,SQL Server 数据库较MySql数据库,Sql语句差异 Oracle,SQL Server 数据库较MySql数据库,Sql语句差异 1.关系型数据库 百度百科 关系数据库 ...

  3. 数据库分页--MySQL数据库

    关于实现MySQL分页的最简单的方法就是利用mysql数据库的limit函数:limit [offset,] rows SELECT * FROM 表名称 LIMIT M,N limit 子句可以被用 ...

  4. 懒要懒到底,能自动的就不要手动,Hibernate正向工程完成Oracle数据库到MySql数据库转换(含字段转换、注释)

    需求描述 需求是这样的:因为我们目前的一个老项目是Oracle数据库的,这个库呢,数据库是没有注释的,而且字段名和表名都是大写风格,比如 在代码层面的po呢,以前也是没有任何注释的,但是经过这些年,大 ...

  5. Oracle数据库和MySQL数据库的不同之处

    1.体积不同. Oracle它体积比较庞大,一般是用来开发大型应用(例如分布式)的.而MySQL的体积相对来说比较小,较之Oracle更容易安装.维护以及管理,操作也简单,最重要的是它是三个中唯一一个 ...

  6. sqlserver数据库导入Mysql数据库问题

    近来遇到一个问题,之前的项目用的是SQLServer数据库,但是现在要换成MySQL数据库,所有整理了一些数据导入的步骤,供需要的人参考! 第一步: 第二步: 第三步: 第四步: 第五步: 第六步: ...

  7. Django中把SQLite数据库转换为Mysql数据库的配置方法

    我们在学习和开发Django的时候,一般是使用SQLite作为数据库.在正式讲网站部署上线是用MySQL数据库比较多.MySQL支持高并发的访问,而且相对于SQLite,MySQL性能更好.下面讲讲如 ...

  8. Python数据库(二)-Mysql数据库插入数据

    通过python连接mysql数据库,并插入数据 # -*- coding:utf-8 -*- __author__ = "MuT6 Sch01aR" import pymysql ...

  9. Python数据库(一)-Mysql数据库的连接

    首先需要安装pymysql模块 然后用pymysql连接mysql并执行命令来查看数据 连接mysql数据库后需要创建游标来执行SQL语句 # -*- coding:utf-8 -*- __autho ...

随机推荐

  1. C# 获取字符串字节长度

    一.C# 获取字符串字节长度 1.在C# 语言中使用string 字符串Unicode 编码 2.在C#语言中常用汉字 占 3个字节 方式1:使用默认编码类获取字节长度 Console.WriteLi ...

  2. 自定义spring参数注解 - 打破@RequestBody单体限制

    本文主要描述怎样自定义类似@RequestBody这样的参数注解来打破@RequestBody的单体限制. 目录1 @RequestBody的单体限制2 自定义spring的参数注解3 编写sprin ...

  3. node-cache

    From: https://www.npmjs.com/package/node-cache Simple and fast NodeJS internal caching. A simple cac ...

  4. jvm理论-常量池-string

    字符串常量池-常量项(cp_info)结构 CONSTANT_String_info{ u1 tag=8; u2 string_index;//存放 CONSTANT_Utf8_info 指针 } C ...

  5. python接口自动化测试(二)-requests.get()

    环境搭建好后,接下来我们先来了解一下requests的一些简单使用,主要包括: requests常用请求方法使用,包括:get,post requests库中的Session.Cookie的使用 其它 ...

  6. Log4j/Log4j2自定义Appender来实现日志级别计数统计及监控

    一.简述 本文主要讲如何基于Log4j2来实现自定义的Appender.一般用途是用于Log4j2自带的Appender不足以满足我们的需求,或者需要我们对日志进行拦截统计等操作时,需要我们自定义Ap ...

  7. 设置mysql 事务锁超时时间 innodb_lock_wait_timeout

    Mysql数据库采用InnoDB模式,默认参数:innodb_lock_wait_timeout设置锁等待的时间是50s,一旦数据库锁超过这个时间就会报错. mysql> SHOW GLOBAL ...

  8. Windows平台下nginx跨域配置

    1)下载地址: http://nginx.org 2)启动 解压至d:\nginx,运行nginx.exe(即nginx -c conf\nginx.conf),默认使用80端口,日志见文件夹D:\n ...

  9. 基于R语言的ARIMA模型

    A IMA模型是一种著名的时间序列预测方法,主要是指将非平稳时间序列转化为平稳时间序列,然后将因变量仅对它的滞后值以及随机误差项的现值和滞后值进行回归所建立的模型.ARIMA模型根据原序列是否平稳以及 ...

  10. Linux下清理内存和Cache方法见下文:

    暂时目前的环境处理方法比较简单: 在root用户下添加计划任务: */10 * * * * sync;echo 3 > /proc/sys/vm/drop_caches; 每十分钟执行一次,先将 ...