数据库的事务--学习笔记

在这里插入图片描述
–事务:表示操作集合,不可分割,要么全部成功,要么全部失败

–事务的开始取决于一个DML语句
/*
事务的结束
1、正常的commit(使数据修改生效)或者rollback(将数据恢复到上一个状态,将缓存中的数据清空)
2、自动提交,但是一般情况下要将自动提交进行关闭,效率太低
3、用户关闭会话之后,会自动提交事务
4、系统崩溃或者断电的时候回回滚事务,也就是将数据恢复到上一个状态
*/
在这里插入图片描述

insert into emp(empno,ename) values(2222,'zhangsan');
--commit;
--rollback;
select * from emp;
--savepoint  保存点
--当一个操作集合中包含多条SQL语句,但是只想让其中某部分成功,某部分失败,此时可以使用保存点
--此时如果需要回滚到某一个状态的话使用 rollback to sp1;

以下实现,前两条成功,第三条失败,rollback to回到spl状态,最后整体提交,第三句删除没有提交
delete from emp where empno = 1111;
delete from emp where empno = 2222;
savepoint sp1;
delete from emp where empno = 1234;
rollback to sp1;
commit;
/*

事务的四个特性:ACID
在这里插入图片描述

原子性:表示不可分割,一个操作集合要么全部成功,要么全部失败,不可以从中间做切分
一致性:最终是为了保证数据的一致性,当经过N多个操作之后,数据的状态不会改变(转账,金额不会改变)
从一个一致性状态到另一个一致性状态,也就是数据不可以发生错乱
隔离性:事务在执行完成之前,其访问的数据不能受系统其它部分的影响。(隔离级别
严格的隔离性会导致效率降低,在某些情况下为了提高程序的执行效率,需要降低隔离的级别
隔离级别:
读未提交
读已提交
可重复读
序列化
数据不一致的问题:
脏读
不可重复读
幻读
持久性:所有数据的修改都必须要持久化到存储介质中,不会因为应用程序的关闭而导致数据丢失

四个特性中,哪个是最关键的?
所有的特性中都是为了保证数据的一致性,所以一致性是最终的追求
事务中的一致性是通过原子性、隔离性、持久性来保证的
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

 锁的机制:
 为了解决在并发访问的时候,数据不一致的问题,需要给数据加锁
 加锁的同时需要考虑《粒度》的问题:
     操作的对象
        数据库
        表
        行
 一般情况下,锁的粒度越小,效率越高,粒度越大,效率越低 
        在实际的工作环境中,大部分的操作都是行级锁  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值