事物

以前对事物,就了解到能够回滚。其他了解不深,但是在后面看分布式事物的时候,发现自己确实要对事物有个深的了解。
四大特征
一致性:就是说事物中的操作要么成功,要么都失败。
原子性:个人感觉其实与一致性是差不多的感觉,也是为了保证要么都成功,要么都失败。
隔离性:事物与事物直接是要相互不能够影响的。
持久性:事物成功,对数据库中操作的数据的改变是永久性的。
数据库三个经典问题
脏读:就是一个事物,读取到其他事物中没有提交的数据。
不可重复读:一个事物对同一数据进行多次读取的时候,前后获取的数据不一致(这个一般是比如第一次读取到X,但是第二次读的数据就是Y)
幻读:这也是一个事物前后读取到数据量不同,比如,在同一查询条件下,第一次读取到3条数据,结果第二次就是5条数据。

为了避免出现上面的问题,所以提出了数据库的隔离机制

未提交读:这种情况,会出现上面的脏读,不可重复读,幻读的情况
提交读:就能够避免出现脏读的情况,但是不可重复读,幻读的情况不能避免。
可重复读:可以避免脏读,不可重复读的问题出现,但是幻读的问题不能解决。
序列化:能够避免脏读,不可重复读,幻读的情况。

事的传播机制
required:如果当前无事物,就创建新都事物,如果有新事物,就使用当前事物。
required-new:无论当前是否有事物,都创建一个新事物,如果原来有事物,则挂起。
netsed:如果当前有个事物,就创建一个事物镶嵌在其中,镶嵌的事物失败,不好影响外面的事物。
support:如果有事物,就运行。
non-support:当前运行时,如果有事物在执行,则当前程序挂起,等事物执行接受,在运行。
mandatory:如果没有事物,则报异常。
never:如果有事物,则报异常。

分布式事物
在这个谈这个之前,我们要知道两个概念:一个是CPA,其中的c是指的一致性;a指的是可用性;P指的是容错性。而在这个概念的指导下,我们就可以牺牲系统的一部分可用性,从而来达到分布式的一致性。
base:是核心系统可运行,软运行,最终一致性。
在这两个的概念下,我们可以分布式中部分的子系统,将对系统的对事物对操作存入消息队列中(个人感觉,双十一中的大量订单的生成,只有是把订单存入订单消息队列就可以了,其他后续如付款都能够继续进行。)

服务端的分布式:可以考虑利用cas(比较与替换)来实现数据库的分布式锁。
数据库的分布式:利益事物管理器。其在每个子系统都有一个子事物。比较经典的,如jta

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值