事务

简介:  事务处理: 1)开始事务(begin transaction)  2)提交事务(commit transaction)  3)回滚事务(rollback transaction) ...

 事务处理:

1)开始事务(begin transaction)

 2)提交事务(commit transaction) 

3)回滚事务(rollback transaction)

4)事务保存点(save transaction savepoint_name、rollback transaction savepoint_name、set implicit_transactions on/set implicit_transactions off)

并发控制(封锁/死锁):

封锁是并发控制的主要技术。其基本思想是:当需要查询或更新数据时,先对数据进行封锁,以避免来自其他事务的干扰。数据库管理系统一般提供三种封锁机制,即共享封锁、独占封锁和更新封锁。封锁的对象既可以使关系,也可以是元祖。1)共享封锁(S封锁)是为读操作设置的一种封锁,所以也称读封锁,在读数据的过程中,不允许其他用户对该数据进行任何修改操作。2)独占封锁(X封锁)是为修改操作设置的一种封锁,也称为写封锁,这是最严格的一类封锁。在需要对表进行插入、删除或更新操作时,应该使用独占封锁。3)在不插入或删除的情况下,当需要对一个记录或一组记录进行更新时使用更新封锁,该封锁的目的是防止其他用户在同一时刻修改同一记录。有些封锁在执行完相应操作后就自动释放封锁,有些封锁则保持到事务结束时才释放。

SQL Server的封锁操作通过WITH子句完成,该短语可以在select、insert、update和delete等语句中制定锁定的方式和范围。

如:select * from customers with(tablock holdlock)

tablock:表示共享封锁,在读完数据后立刻释放封锁。

holdlock:与tablock一起使用,可将共享锁保留到事务完成,而不是在读完数据后立即释放锁。

nolock:不进行封锁,此关键词仅应用于select语句。

tablockx:对表进行独占封锁。

updlock:对表中的制定元祖实施更新封锁,实施更新封锁后其他事务可以对同一表中的元祖也实施更新封锁,但是不允许对表进行共享封锁和独占封锁。


为了提高并发性能,数据库管理系统还支持一种意向锁(Intension Lock)的机制。

意向锁:

1)意向共享(IS)

2)意向排他(IX)

3)共享意向排他(SIX)。

为避免干扰而使用封锁,但是如果封锁不当,则会出现死锁问题。如两个事务A和B,为完成某个事务都需要封锁客户和产品两个关系,这两个事务正好按照交错序列执行,结果两个程序都因为等待对方释放资源而产生死锁。

为避免死锁,通常采取两种方法:

1)相同顺序法:所有的用户程序约定都按相同的顺序来封锁表。

2)一次封锁法:为了完成一个事务,一次性封锁所需要的全部表。

目录
相关文章
|
6月前
|
SQL 关系型数据库 MySQL
事务及事务的隔离级别
事务及事务的隔离级别
|
4月前
|
SQL Oracle 关系型数据库
第7章 事务
第7章 事务
27 0
|
6月前
|
存储 Java 中间件
事务一致性测试
事务一致性测试
52 0
|
6月前
|
SQL 前端开发 大数据
什么是大事务?以及大事务产生的问题
什么是大事务?以及大事务产生的问题
186 0
|
人工智能 关系型数据库 MySQL
事务详解
事务是逻辑上的一组操作,要么都执行,要么都不执行。
71 0
|
存储 Oracle 固态存储
深入理解事务
事务将应用程序的多个读、写操作捆绑在一起成为一个逻辑执行单元。即事务中的所有读写是一个执行的整体,整 个事务要么成功(提交)、要么失败(中止 或者 回滚)。如果失败,应用程序可以安全地重试。
16432 0
深入理解事务
|
SQL 存储 关系型数据库
|
SQL Java 大数据
事务详解(2)
你好看官,里面请!今天笔者讲的是事务。不懂或者觉得我写的有问题可以在评论区留言,我看到会及时回复。 注意:本文仅用于学习参考,不可用于商业用途,如需转载请跟我联系。
167 1
|
数据库
什么时候需要使用事务
什么时候需要使用事务
594 0
|
Oracle 安全 Java
事务详解(1)
你好看官,里面请!今天笔者讲的是事务。不懂或者觉得我写的有问题可以在评论区留言,我看到会及时回复。 注意:本文仅用于学习参考,不可用于商业用途,如需转载请跟我联系。
104 2