数据库的事务

事务处理

事务是一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位,是数据库环境中的逻辑单位

事务的开始取决于一个DML语句

事务的结束

        1.正常的commit(使数据修改生效)或者rollback(将数据恢复到上一次)

        2.自动提交,但是一般情况下要将自动提交进行关闭,效率太低

        3.用户关闭会话之后,会自动提交

        4.系统崩溃或者断电的时候会回滚事务,也就是将数据恢复到上一个

此时如果需要回滚到某个状态的话使用rollback  to  sp1;

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多次操作之后,数据的状态从一个一致性到另外一个一致性状态,也就是数据不可发生不一致

隔离性:各个事务之间相关不会产生影响,严格的隔离性会呆滞效率降低,在某些情况下为了提高执行效率会降低隔离性的级别

        隔离级别:

                读未提交:出现脏读、不可重复读(同一个事务,两次查询结果不一样、幻读

                读已提交:不可重复读(同一个事务,两次查询结果不一样)、幻读

                可重复读:幻读

                序列化:不会产生上面的情况

        set  globle  transaction  isolation  level  设置事务等级        globle全局

持久性:所有数据的修改都必须要持久化到介质中,不会因为应用程序的关闭而导致数据丢失

四个特性中,哪个是最关键的?

        所有事务中都是为了保证数据的一致性,所以一致性是最终的追求,事务中的一致性是通过原子性、隔离性、持久性来保证的

锁的机制:

为了解决再并发访问的时候,数据不一致的问题,需要给数据加锁

加锁对的同时需要考虑《粒度》的问题:

        操作的对象

                数据库

                表

                行

一般情况下,锁的粒度越小,效率越高,粒度越大,效率越低

                在实际的工作环境中,大部分都是锁行

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值