思考--PostgreSQL在与mysql的比较中稍微弱势项
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的比较中稍微弱势项相关推荐
- mysql删除数据表中冗余数据_删除MySQL数据表中的重复项
常常遇到这样去重的问题,或者由于数据库平时每日添加之后,难得有重复,数据变得冗余,这时就需要对数据表进行清理,去除重复的数据. 但是,所谓重复,有几层意思,一种是整行重复,每列的值都相同的,另一种是一 ...
- mysql top limit_MySQL中如何实现select top n ----Limit
用惯了access mssql server的朋友,可能在用mysql查询前N条记录时,习惯的使用select top n 形式的语句,在这里说明一下,mysql没有此语法,mysql用limit来实 ...
- 什么是PostgreSQL?跟MySQL、Oracle比强在哪?
导读:本文主要给大家介绍什么是PostgreSQL数据库.PostgreSQL有哪些强大的功能及其目前的一些应用情况,以便大家对PostgreSQL有一个初步的认识. 作者:唐成 来源:大数据DT(I ...
- pg函数同步数据到mysql_将数据从PostgreSQL复制到MySQL
我目前有一个PostgreSQL数据库,因为我们使用的其中一件软件仅支持该特定数据库引擎.然后,我有一个查询,该查询汇总了应用程序中的数据并将其拆分为更有用的格式. 在我的MySQL数据库中,我有一个 ...
- php postgresql mysql_PostgreSQL与MySQL比较(转)
Mysql 使用太广泛了,以至于我不得不将一些应用从mysql 迁移到postgresql, 很多开源软件都是以Mysql 作为数据库标准,并且以Mysql 作为抽象基础的,但是具体使用过程中,发现M ...
- MySQL 5.7中的新功能
本节总结了MySQL 5.7中添加,弃用和删除的内容.随附部分列出了MySQL服务器选项以及在MySQL 5.7中添加,弃用或删除的变量.请参见第1.5节"在MySQL 5.7中添加,弃用或 ...
- MySQL 5.6中如何定位DDL被阻塞的问题
在上一篇文章<MySQL 5.7中如何定位DDL被阻塞的问题>中,对于DDL被阻塞问题的定位,我们主要是基于MySQL 5.7新引入的performance_schema.metadata ...
- mysql 执行cmd,mysql命令行中执行sql的几种方式总结
1.直接输入sql执行 MySQL> select now(); +---------------------+ | now() | +---------------------+ | 2013 ...
- Postgresql:删除及查询字段中包含单引号的数据
Postgresql:删除及查询字段中包含单引号的数据 1. 假设pg表t_info的属性att,值为固定的:'test' 2. 假设值为不固定的,'abcde' 参考 1. 假设pg表t_info的 ...
- mysql的调用有哪三种方式_MySQL数据库之mysql命令行中执行sql的几种方式总结
本文主要向大家介绍了MySQL数据库之mysql命令行中执行sql的几种方式总结 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 1.直接输入sql执行 MySQL> se ...
最新文章
- C#中各种数据类型转换的方法的类
- 外联接、自联接与联合
- cf1208G Polygons 欧拉函数
- 计算机系第一学期电脑,公共课第一学期《计算机基础》.doc
- vsto java,从Excel VSTO项目打开WPF应用程序
- 关于最优化问题的个人理解以及黑塞矩阵的示例
- 视频编解码基础--01
- 后台批量刷新金蝶K3物料名称操作步骤
- 出场顺序很重要下一句_一首年少有为告诉你:人生的出场顺序真的很重要
- linux cp omitting,Linux复制文件时出现omitting directory错误解决方法(图)
- 网易云音乐python爬虫搜索接口,评论接口,歌词接口
- android监听卡1电话,Android 监听 SIM 卡状态
- 写给区块链初创者的一封信
- 移动端开发——flex布局
- Moveit + Gazebo:搭建双臂仿真平台(方案一)
- HTML5+CSS3小实例:手风琴式加载动画
- 【BZOJ3893】【Usaco2014 Dec】Cow Jog 乱搞
- 【LeetCode】999. 车的可用捕获量
- Pyqt qtableview 大量动态刷新数据
- 微型计算机的储存体系如何,存储体系结构