mysql事务的 深度理解

什么是事务?

	1.事务就是一组原子性的SQL操作或者一个独立的工作单元,事务内的语句要么全部执行成功,要么全部执行失败。

	2.事务是数据库并发控制的基本单位,其执行的结果必须使数据库从一种一致性状态变到另一种一致性状态。

1.事务出现的原因

	1.对 多句sql 提供 原子性操作,这个原子操作的 重点 就是 commit 和 rollback
	(并且 针对 原子操作的 执行失败的 回滚,采用了 日志记录sql的 方式)
	(同时,与原子操作 不同的是,手动提供 rollback操作 和 手动提供 commit操作)
	 
	2.因为事务设计出来了,以后 sql的 所有执行,都是以事务为基础的,那么顺其自然
	  对并发的控制,也是以事务为基础的

2.事务设计出来后,满足的特性

	1.原子性:要么成功,要么失败(回滚操作,由 日志文件记录 sql语句),并且不能中断
	且 不会释放 cpu 和 共享资源
	
	2.事务一致性:事务执行前后,mysql要是一致性的(这是根据,mysql的大规定来的
	  不管怎么设计事务,都得保证 数据库的一致性)
	  
	3.持久性:即 事务 commit后,原子操作成功,不能再回滚了,要想回滚就得在 commit之前
	  手动 rollback 或 自动 rollback

	4.隔离性:????

3.为了实现事务的 功能,采取的实现办法

	1.mysql 提供了,日志文件记录记录我们的操作(便于 原子操作失败的 回滚)
	
	2.mysql 提供了 rollback机制 和 commit机制,便于 我们对 原子操作的更好的掌握
		1. 执行到 commit, 代表原子操作 成功执行,不能回滚

		2. 没有执行到 commit,代表原子操作 还没有成功执行,还有回滚的机会
				1.自动回滚
					代表,执行到commit之前,有sql出错,全部回滚
					
				2.手动回滚
					1.代表,执行commit之前,不管是否有 sql出错,你都想手动 回滚,让原子操作失败
					
					2.实际 手动回滚,常常用在 多句sql的执行结果,不满足我想要的结果(不是sql出错)
					  那尽管sql执行成功,但是我们依然 可以手动 rollback,这也是 mysql提供我们
					  事务 与 原子性 最大的不同,同时我们常常用 业务逻辑来判断 如果结果满足
					  commit,如果结果不满足 rollback
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值