事务相关概念

事务(transaction):最小的不可再分的工作单元;通常一个事务对应一个完整的业务(例如银行账户转账业务,该业务就是一个最小的工作单元)

开启事务:START TRANSACTION,任何一条DML语句(insert、update、delete)执行,标志事务的开启
提交事务:COMMTT
事务回滚:ROLLBACK
结束事务:Rollback Transaction

事务的属性:
	原子性(Atomicity):即事务开始,要么都做,要么都不做。
	一致性(Consistency):即事务开始前和结束后,数据库的完整性约束没有被破坏。
	隔离性(IsoLation):即多线程下,某个线程中的事务不被其他 事务打扰。
	持久性(DURABILIty):即事务完成后,事务对数据库的所有更新都将被保存,不能回滚

事务问题(隔离级别):
	脏读(读未提交):即一个线程中的事务读取了另一个线程中未提交的事务
		例:张三的工资为5000,事务A中把他的工资改为8000,但事务A尚未提交。 与此同时,事务B正在读取张三的工资,读取到张三的工资为8000。随后,事务A发生异常,而回滚了事务。张三的工资又回滚为5000。 最后,事务B读取到的张三工资为8000的数据即为脏数据,事务B做了一次脏读
	不可重复读(读已提交):即事务中两次查询结果不一致,因一个线程中的事务读取了另一个线程中提交的update数据。
		例:在事务A中,读取到张三的工资为5000,操作没有完成,事务还没提交。 与此同时, 事务B把张三的工资改为8000,并提交了事务。 随后,在事务A中,再次读取张三的工资,此时工资变为8000,两次读取到的结果不一致
	幻读(可重复读):与不可重复读类似,因一个线程中的事务读取到了另一个线程中提交的insert的数据
		例:目前工资为5000的员工有10人,事务A读取所有工资为5000的人数为10人。 此时,事务B插入一条工资也为5000的记录。 这时,事务A再次读取工资为5000的员工,记录为11人。此时产生了幻读
	可串行化(可串行化):即一个线程中的事务增删改时上锁,使得事务之间的运行串行化

数据库查询隔离级别:
	* select @@tx_isolation;
数据库设置隔离级别:
	* set global transaction isolation level  级别字符串;

总结:
	隔离等级越高,安全性越高,并发性越低,因为加锁。往往要在两者之间找一个平衡点。
	不可重复读是,同一条件下,事务在执行过程中,不同时间段,读取的数据不同。
	幻读是,同样条件下,事务在执行过程中,不同时间段,读出来,数据量比之前增加了。
	脏读:同样条件下,事务在执行过程中,读到了其它事务修改的数据。
	事务也有长短的概念,事务之间相互影响,指的是,在事务执行过程中,都没有提交(commit),影响会比较大。

**源码地址

**

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值