ITPub博客

首页 > 数据库 > 数据库开发技术 > 本地事务和分布式事务的区别

本地事务和分布式事务的区别

数据库开发技术 作者:mcxiaoracle 时间:2022-06-24 23:01:05 0 删除 编辑

1 事务

事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)


2 事务的特性

原子性:指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。 


一致性:事务必须使数据库从一个一致性状态变换到另外一个一致性状态。转账前和转账后的总金额不变。


隔离性:事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离。


持久性:指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响

3.1 READ UNCOMMITTED: 赃读、不可重复读、虚读都有可能发生。


3.2 READ COMMITTED: 避免赃读。不可重复读、虚读都有可能发生。(oracle默认的)


3.3 REPEATABLE READ:避免赃读、不可重复读。虚读有可能发生。(mysql默认)





MVCC



要说幻读,首先要了解MVCC,MVCC叫做多版本并发控制,实际上就是保存了数据在某个时间节点的快照。mvcc只在可重复读隔离级别下才会产生.那么mvcc是怎么工作的呢



在读提交隔离级别下:  每次读都会生成读视图,这个时候去读是可以实时读到事务的变更数据的

 在可重复读级别下:  只有第一次进行快照读的时候会生成读视图,之后的所有的读操作都会用的第一次生成的读视图.


MySQL:

   数据库的数据被干掉了,我们可以通过binlog来对数据进行恢复


3.5.2 Redo log

 MySQL引入了redo log,当做数据修改的时候,不仅在内存中操作,还会在redo log中记录这次操作。当事务提交的时候,会将redo log日志进行刷盘(redo log一部分在内存中,一部分在磁盘上)。当数据库宕机重启的时候,会将redo log中的内容恢复到数据库中,再根据undo log和binlog内容决定回滚数据还是提交数据


  其实写redo log的时候,也会有buffer,是先写buffer,再真正落到磁盘中的。至于从buffer什么时候落磁盘,

会有配置供我们配置。

 Undo Log 是为了实现事务的原子性(事物里的操作要么都完成,要么都不完成),在MySQL数据库InnoDB存储引擎中,还用Undo Log来实现多版本并发控制(简称:MVCC)。


为了满足事务的原子性,在操作任何数据之前,首先将数据备份到一个地方(也就是Undo Log,undo日志存放在共享表空间里),然后进行数据的修改。如果出现了错误或者用户执行了ROLLBACK语句,系统可以利用Undo Log中的备份将数据恢复到事务开始之前的状态。除了可以保证事务的原子性,Undo Log也可以用来辅助完成事务的持久化(事务一旦完成,该事务对数据库所做的所有修改都会持久的保存到数据库中)


二 分布式事物



分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。以上是百度百科的解释,简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要保证这些小操作要么全部成功,要么全部失败。本质上来说,分布式事务就是为了保证不同数据库的数据一致性


CAP由Eric Brewer在2000年PODC会议上提出[1][2],是Eric Brewer在Inktomi[3]期间研发搜索引擎、分布式web缓存时得出的关于数据一致性(consistency)、服务可用性(availability)、分区容错性(partition-tolerance)的猜想:


  (C) 数据一致性(consistency):也就是业务代码与数据库操作的原子性


(A) 可用性(availability):所有读写请求在一定时间内得到响应,可终止、不会一直等待


  (P) 分区容错性(partition-tolerance):多个可以进行负载均衡的节点














————————————————

推荐阅读:

https://blog.csdn.net/worn_xiao/article/details/85224681






来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69949806/viewspace-2902745/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 事务单独提交和
请登录后发表评论 登录
全部评论
数据方向,了解oracle ,IBM DB2 730

注册时间:2019-09-30

  • 博文量
    286
  • 访问量
    226624