美文网首页
Sql server中的事务与锁

Sql server中的事务与锁

作者: 你猜我猜你猜我猜不猜啊i | 来源:发表于2018-06-19 13:07 被阅读0次

    了解事务和锁

    事务:保持逻辑数据一致性与可恢复性,必不可少的利器。

    锁:多用户访问同一数据库资源时,对访问的先后次序权限管理的一种机制,没有他事务或许将会一塌糊涂,不能保证数据的安全正确读写。

    死锁:是数据库性能的重量级杀手之一,而死锁却是不同事务之间抢占数据资源造成的。


    先说事务--概念,分类

    用华仔无间道中的一句来给你诠释下:去不了终点,回到原点。

    举例说明:

    在一个事务中,你写了2条sql语句,一条是修改订单表状态,一条是修改库存表库存-1 。 如果在修改订单表状态的时候出错,事务能够回滚,数据将恢复到没修改之前的数据状态,下面的修改库存也就不执行,这样确保你关系逻辑的一致,安全。。

    事务就是这个样子,倔脾气,要么全部执行,要么全部不执行,回到原数据状态。

    书面解释:事务具有原子性,一致性,隔离性,持久性。

    原子性:事务必须是一个自动工作的单元,要么全部执行,要么全部不执行。

    一致性:事务结束的时候,所有的内部数据都是正确的。

    隔离性:并发多个事务时,各个事务不干涉内部数据,处理的都是另外一个事务处理之前或之后的数据。

    持久性:事务提交之后,数据是永久性的,不可再回滚。

    然而在SQL Server中事务被分为3类常见的事务:

    自动提交事务:是SQL Server默认的一种事务模式,每条Sql语句都被看成一个事务进行处理,你应该没有见过,一条Update 修改2个字段的语句,只修该了1个字段而另外一个字段没有修改。。

    显式事务:T-sql标明,由Begin Transaction开启事务开始,由Commit Transaction 提交事务、Rollback Transaction 回滚事务结束。

    隐式事务:使用Set IMPLICIT_TRANSACTIONS ON 将将隐式事务模式打开,不用Begin Transaction开启事务,当一个事务结束,这个模式会自动启用下一个事务,只用Commit Transaction 提交事务、Rollback Transaction 回滚事务即可。


    显示事务的运用

    常用语句就四个。

    Begin Transaction:标记事务开始。

    Commit Transaction:事务已经成功执行,数据已经处理妥当。

    Rollback Transaction:数据处理过程中出错,回滚到没有处理之前的数据状态,或回滚到事务内部的保存点。

    Save Transaction:事务内部设置的保存点,就是事务可以不全部回滚,只回滚到这里,保证事务内部不出错的前提下。

    相关文章

      网友评论

          本文标题:Sql server中的事务与锁

          本文链接:https://www.haomeiwen.com/subject/njdaeftx.html