MySQL的ACID

一.事务的基本要素(ACID)

1.原子性:事务开始后的所有操作,要么全部昨晚,要么全部不做,不可能停止在中间的环节。事务执行过程中会出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样,也就是说事务是一个不可分割的整体,就想化学中的原子,即物质的最小单位。

2.一致性:事务开始前和结束后,数据库的完整性约束没有被破坏,其实一致性也是因为原子型的一种表现。

3.隔离性:同一时间,只允许一个事物请求同一数据,不同的事物之间彼此没有热和干扰。

4.持久化:事物完成后,事务对数据库的所有更i性能将被永久的保存到数据库中,

二、事物并发的问题

1。脏读:事物A读取了事物B更新的数据,然后B回滚操作,那么A读取的数据就是脏数据,与表中的最终数据不一致。

2.不可重复读:事物A多次读取统一数据,事物B在事物A多次读取中的过程中,对数据作了更新并提交,导致事物A多次读取的数据不一致。读取结果与上次的结果不一致。

3.幻读:事物A在查询表中数据的时候,事物B执行添加或者删除,导致事物A再次读取表中的数据的,和上次读取的数据不一致,或增或减。这就是幻读。

不可重复读和幻读很容易混淆,不可重复读侧重于修改,幻读侧重于新增或者删除。解决不可能重复读的问题,只需要锁住满足的行就行,而幻读则需要锁住表。

MySQL的默认事务隔离级别是可重复读时并不会锁住度的行

隔离级别越高,越能保证数据的完整和一致性,但是对并发性能的影响也越大,鱼和熊掌不兼得,对于多数应用,可以优先考虑把数据库系统的隔离级别设为Read Committed 它能狗避免获取脏数据,而且具有较好的并发性能,尽管导致不可重复读,幻读这些并发问题,可以采用悲观锁和乐观锁来控制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值