PostgreSQL在与mysql的比较中稍微弱势项:

1.都是堆表,没有所谓的聚集索引表,其实问题不大,聚集索引表也只是在使用聚集索引那些列有加速,而且pg也有聚集索引,只不过要定期重建。

2.mvcc实现,pg是直接在原来page中标记删除、更新行。而mysql的innedb则是像oracle一样,弄了一个垃圾回收区存放这些并发的版本。

  1)pg这样做的好处是更新、删除很快,数据恢复也很快。坏处是进行垃圾清理时会扫描page,增加IO消耗,而且在进行垃圾回收时的设置策略需要DBA去设计,较复杂,刚刚使用的人不了解,可能导致autovaccum设置了也不会生效,进而导致垃圾数据的积压。

  2)同样是mvcc这种方式,对于高频更新的大表来说,可以在建表的时候设置fillfactor,进而使表的更新发生hot update,在更新时索引不会改变,只是索引指向的ctid重定向到了新行的ctid。这同样是考验DBA的设计能力,初学者在不知道的情况下会觉得更新不但要更新表的tuple,还要更新index的tuple。

那么在mysql中怎么做呢?更新时将旧的行拷贝到垃圾回收区,然后将老行的数据替换为新行数据,索引不用修过。那么数据拷贝的过程也是比较耗时的。

3.正是基于这种mvcc的实现,很多人认为pg不适合做在线事物数据库,这是不合理的。

  1)这种实现方式在大表的高频更新时可能会比mysql慢一点,但不存在太大差距。

  2)在数据的分析处理上,pg的jion实现则要优于mysql,这也是大家公认pg在替代oracle中优势的地方。

总结:

  在线事物上,pg占稍微劣势,但不存在太大差异,90%的应用都感知不到这种差异。

  在线分析上,pg占优势,稍微复杂的应用都能感受到。

  

  作为一个混合型数据库需求时,pg完胜mysql。

且pg12将添加新的存储引擎,借鉴innerdb实现方式,这样在OLTP业务上将不再有劣势……,同样,mysql也可以学习pg在企业级应用上的严谨和多表分析上的技术来改进。未来两种数据库将不分高下,都能覆盖大多数应用场景。

转载于:https://www.cnblogs.com/kuang17/p/11014562.html

思考--PostgreSQL在与mysql的比较中稍微弱势项相关推荐

  1. mysql删除数据表中冗余数据_删除MySQL数据表中的重复项

    常常遇到这样去重的问题,或者由于数据库平时每日添加之后,难得有重复,数据变得冗余,这时就需要对数据表进行清理,去除重复的数据. 但是,所谓重复,有几层意思,一种是整行重复,每列的值都相同的,另一种是一 ...

  2. mysql top limit_MySQL中如何实现select top n ----Limit

    用惯了access mssql server的朋友,可能在用mysql查询前N条记录时,习惯的使用select top n 形式的语句,在这里说明一下,mysql没有此语法,mysql用limit来实 ...

  3. 什么是PostgreSQL?跟MySQL、Oracle比强在哪?

    导读:本文主要给大家介绍什么是PostgreSQL数据库.PostgreSQL有哪些强大的功能及其目前的一些应用情况,以便大家对PostgreSQL有一个初步的认识. 作者:唐成 来源:大数据DT(I ...

  4. pg函数同步数据到mysql_将数据从PostgreSQL复制到MySQL

    我目前有一个PostgreSQL数据库,因为我们使用的其中一件软件仅支持该特定数据库引擎.然后,我有一个查询,该查询汇总了应用程序中的数据并将其拆分为更有用的格式. 在我的MySQL数据库中,我有一个 ...

  5. php postgresql mysql_PostgreSQL与MySQL比较(转)

    Mysql 使用太广泛了,以至于我不得不将一些应用从mysql 迁移到postgresql, 很多开源软件都是以Mysql 作为数据库标准,并且以Mysql 作为抽象基础的,但是具体使用过程中,发现M ...

  6. MySQL 5.7中的新功能

    本节总结了MySQL 5.7中添加,弃用和删除的内容.随附部分列出了MySQL服务器选项以及在MySQL 5.7中添加,弃用或删除的变量.请参见第1.5节"在MySQL 5.7中添加,弃用或 ...

  7. MySQL 5.6中如何定位DDL被阻塞的问题

    在上一篇文章<MySQL 5.7中如何定位DDL被阻塞的问题>中,对于DDL被阻塞问题的定位,我们主要是基于MySQL 5.7新引入的performance_schema.metadata ...

  8. mysql 执行cmd,mysql命令行中执行sql的几种方式总结

    1.直接输入sql执行 MySQL> select now(); +---------------------+ | now() | +---------------------+ | 2013 ...

  9. Postgresql:删除及查询字段中包含单引号的数据

    Postgresql:删除及查询字段中包含单引号的数据 1. 假设pg表t_info的属性att,值为固定的:'test' 2. 假设值为不固定的,'abcde' 参考 1. 假设pg表t_info的 ...

  10. mysql的调用有哪三种方式_MySQL数据库之mysql命令行中执行sql的几种方式总结

    本文主要向大家介绍了MySQL数据库之mysql命令行中执行sql的几种方式总结 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 1.直接输入sql执行 MySQL> se ...

最新文章

  1. C#中各种数据类型转换的方法的类
  2. 外联接、自联接与联合
  3. cf1208G Polygons 欧拉函数
  4. 计算机系第一学期电脑,公共课第一学期《计算机基础》.doc
  5. vsto java,从Excel VSTO项目打开WPF应用程序
  6. 关于最优化问题的个人理解以及黑塞矩阵的示例
  7. 视频编解码基础--01
  8. 后台批量刷新金蝶K3物料名称操作步骤
  9. 出场顺序很重要下一句_一首年少有为告诉你:人生的出场顺序真的很重要
  10. linux cp omitting,Linux复制文件时出现omitting directory错误解决方法(图)
  11. 网易云音乐python爬虫搜索接口,评论接口,歌词接口
  12. android监听卡1电话,Android 监听 SIM 卡状态
  13. 写给区块链初创者的一封信
  14. 移动端开发——flex布局
  15. Moveit + Gazebo:搭建双臂仿真平台(方案一)
  16. HTML5+CSS3小实例:手风琴式加载动画
  17. 【BZOJ3893】【Usaco2014 Dec】Cow Jog 乱搞
  18. 【LeetCode】999. 车的可用捕获量
  19. Pyqt qtableview 大量动态刷新数据
  20. 微型计算机的储存体系如何,存储体系结构

热门文章

  1. 我想和你虚度时光 --李元胜
  2. 咸鱼ZTMR实例—人体红外
  3. Sage X3提高生产力的操作之查找篇
  4. 有了ERP和MES,工厂真的就能做好质量管理工作吗?
  5. c语言2E16什么意思,IF(E16
  6. 嵌入式Linux开发-根文件系统本地挂载
  7. JQuery中4种事件绑定的区别
  8. 【Android Framework系列】第16章 存储访问框架 (SAF)
  9. 《优化方法基础》知识点总结:凸优化、最优性条件与约束优化问题
  10. java清空画布_java中如何清除绘制的图像 java怎样清除已画图