数据库事物特性

什么是事务:

把多条sql语句看成是一个整体执行,为了保证数据的一致性,必须让这些sql语句要么全部执行成功,要么全部执行失败。

事物的特性:

包括原子性;一致性;隔离性;持久性。简称ACID。
原子性:表示一个事物内的所有操作是一个整体,是一个不可分割的工作单位,要么全部成功,要么全部失败。
一致性:事务前后数据的完整性必须保持一致
隔离性:事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作干扰,多个并发事务之间要相互隔离。
持久性:持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响。

start transaction ;      开启事务
commit;                  提交事务
rollback;                回滚事务

事务的原理

事务开启后,所有的操作都会临时保存到事务日志,事务日志只有在得到commit命令才会同步到数据表中,其他任何情况都会清空事务日志(rollback,断开连接)

事务的并发异常

回滚丢失:此种更新丢失是因为回滚的原因,所以叫做回滚丢失。
覆盖丢失:此种更新是因为更新被其他事务覆盖了,所以叫做覆盖更新
脏读:一个事务读取了另一个事务尚未提交的数据。
不可重复读:一个事务对同一行数据执行了两次或以上的查询,结果却不同。
幻读:与不可重复读有点像,只是针对的一般是数据的数量

隔离级别

读未提交、读已提交、可重复读、串行化

隔离级别都修改成 Read Uncommitted
set session transaction isolation level read uncommitted
隔离级别都修改成 Read Committed
set session transaction isolation level read committed
隔离级别都修改成 Repeatable Read
set session transaction isolation level repeatable read;
隔离级别都设置为Serializable
set session transaction isolation level serializable;

读已提交可以解决:回滚丢失,脏读
可重复读可以解决:回滚丢失,脏读,不可重复读,覆盖丢失。
串行化可以解决:回滚丢失,脏读,不可重复读,覆盖丢失,幻读。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值