摘要:在几个盛行的数据库中,mysql是我的第一次性接触,随着我上班的开展,越来越多的postgresql数据库开局接触,这两个盛行的开源数据库,之后经常和一些好友探讨,mysql和postgresql有什么异同,浏览消息,就开局学习acid的听从性,ac
在几个盛行的数据库中,mysql是我的第一次性接触。随着我上班的开展,越来越多的postgresql数据库开局接触。这两个盛行的开源数据库。之后经常和一些好友探讨:mysql和postgresql有什么异同?
浏览消息,就开局学习
acid的听从性(acidcompliance)对比
数据库能否满足事物的四个特色,是判别数据库好坏的关键规范之一
postgresql:
齐全遵守acid,确保满足一切acid需求
只要innodb等少数存储引擎合乎acid,客户可以更灵敏的选用
原子性(atomic)
原子象征着事务中蕴含的一切操作要么成功,要么不可回滚
postgresql是一个齐全允许事务的相关数据库。不只dml语句可以在一个事务中,ddl语句也允许事务,即创立多个表时的ddl语句可以放入一个事务中,这可以确保这些表要么创立成功,要么没有创立成功。
而mysql不能将多个ddl语句放入一个事务中。postgresql可以保障多个ddl的原子性,这是pg的亮点。
分歧性(consistency)
分歧性是指事务必定将数据库从一种分歧形态扭转到另一种分歧形态,即口头事务前后的形态必定处于分歧形态。分歧性:比如数据库完整性解放是正确的;日志形态分歧;索引和数据之间的分歧性,也就是说,数据库中的一切都是在事务成功之后才是正确的。
两者的限度条件比拟如下
隔离(隔离)
孤立是指当多个事务并发口头时,每个事务仿佛是系统在给定期间外口头的唯*操作,即每个事务都以为系统中只要该事务在经常使用系统,不受其余事务的搅扰。
到达的成果:关于恣意两个并发事务t1和t2,在事务t1看来,t2要么在t1开局前完结,要么在t1完结后开局,这样每个事务都不会感觉其余事务在并发口头。
几种隔离级别的性能比拟
postgresql和mysql之间的隔离差异如下
mysql和postgresql都成功了基于快照的事务隔离级别,即快照隔离,postgresql也成功了可序列化的快照隔离级别,即ssi。
耐久性(durability)
耐久性是指一旦提交事务,数据库中的数据变动是常年性的,即使数据库系统遇到缺点,提交事务的操作也不会失落。
早期mysql版本中的自动性能在提交后不会立刻坚持不变,也就是说,数据或许会在提交后失落(为了谋求性能)。postgresql在开局时自动是耐久性的,但也可以设置为非即时耐久性。
对sql规范的允许度对比
postgresql:
合乎sql规范,允许比拟好的数据库。在sql2011规范中,有179个强迫性能,其中至少有160个允许许多附加性能
只要局部允许,基本只要sql92规范
允许的业务场景对比
postgresql:
它允许oltp场景和olap场景,混合业务场景,相似于oracle数据库。它可以很好地允许json文档业务场景。金融级牢靠性,设计指标是以稳固牢靠为第一指标,允许大型数据库,能牢靠允许几十个t大型数据库
仅允许oltp打算,不允许olap打算
直到mysql5.7才允许json
便捷性和性能是设计的首要指标,在允许高度牢靠的服务方面存在一些艰巨
允许大型数据库有些艰巨,须要做单机多实例
复制性能对比
允许复制类型
postgresql允许以下类型:
单主单备
单主多备
可以读取物理备份
双向复杂性
逻辑流复制(颁布和订阅形式)
级联复制
齐全同步、半同步、异步
同步复制至少允许同步到几个备用节点,也就是说,确保至少写入几个数据正本
mysql允许以下类型:
单主单备
单主多备
从单主到单备到单备或多备
循环复制:a-b
双主复制
异步复制和半同步复制
关键性能对比
查问相关性能对比
表的性能允许
架构性能对比
视图表性能对比
4504 d9d. jpeg"
加密经常使用性能对比
后记
总之,postgresql和mysql从底层设计准则来说是两个不同的数据库。当数据量小的时刻,数据库往往更轻,mysql会更适合。然而一旦数据量稍微参与,计算量参与,postgresql会是更好的选用。
: 大气层离低空多少米
: 台湾省面积多少平方公里?