知识大全 SQL Server 中的事务

Posted

篇首语:学习知识要善于思考,思考,再思。我就是靠这个方法成为科学家的。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 SQL Server 中的事务相关的知识,希望对你有一定的参考价值。

SQL Server 中的事务  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  事务的含义

  事务要有非常明确的开始和结束点 SQL Server 中的每一条数据操作语句 例如SELECT INSERT UPDATE和DELETE都是隐式事务的一部分 即使只有一条语句 系统也会把这条语句当做一个事务 要么执行所有的语句 要么什么都不执行

  事务开始之后 事务所有的操作都会写到事务日志中 写到日志中的事务 一般有两种 一是针对数据的操作 例如插入 修改和删除 这些操作的对象是大量的数据;另一种是针对任务的操作 例如创建索引 当取消这些事务操作时 系统自动执行这些操作的反操作 保证系统的一致性 系统自动生成一个检查点机制 这个检查点周期的检查事务日志 如果在事务日志中事务全部完成 那么检查点事务日志中的事务提交到数据库中 并且在事务日志中做一个检查点提交标识;如果在事务日志中 事务没有完成 那么检查点不会将事务日志中的事务提交到数据库中 并且在事务日志中做一个检查点未提交的标识 事务的恢复及检查点保证了系统的完整和可恢复

  事务的属性

  事务是作为单个逻辑工作单元执行的一系列操作 一个逻辑工作单元必须有 个属性 称为原子性(Atomic) 一致性(Consistent) 隔离性(Isolated) 持久性(Durable) 简称ACID属性 只有这样才能构成一个事务

  原子性

  整个事务中的所有操作 要么全部完成 要么全部不完成 不可能停滞在中间某个环节 事务在执行过程中发生错误 会被回滚(Rollback)到事务开始前的状态 就像这个事务从来没有执行过一样

  一致性

  在事务开始之前和事务结束以后 数据库的完整性约束没有被破坏

  隔离性

  两个事务的执行是互不干扰的 一个事务不可能看到其他事务运行时 中间某一时刻的数据

  持久性

  在事务完成以后 该事务所对数据库所作的更改便持久的保存在数据库之中 并不会被回滚

  由于一项操作通常会包含许多子操作 而这些子操作可能会因为硬件的损坏或其他因素产生问题 要正确实现ACID并不容易 ACID建议数据库将所有需要更新 以及修改的资料一次操作完毕 但实际上并不可行

  事务管理的常用语句

  BEGIN TRANSACTION——建立一个事务

  MITTRANSACTION——提交事务

  ROLLBACK TRANSACTION——事务失败时执行回滚操作

  SAVE TRANSACTION——保存事务

  BEGIN TRANSACTION 和MIT TRANSACTION同时使用 用来表示事务的开始和结束

  事务的隔离级别

  事务具有隔离性 不同事务中所使用的时间必须要和其他事务进行隔离 在同一时间可以有很多个事务正在处理数据 但是每个数据在同一时刻只能有一个事务进行操作 如果将数据锁定 使用数据的事务就必须要排队等待 这样可以防止多个事务互相影响 但是如果有几个事务因为锁定了自己的数据 同时又在等待其他事务释放数据 则造成死锁

  为了提高数据的并发使用效率 可以为事务在读取数据时设置隔离状态 SQL Server 中的事务隔离状态由低到高分为 个级别

  未授权读取

  也称为读未提交(Read Unmitted) 允许脏读取 但不允许更新丢失 如果一个事务已经开始写数据 则另外一个数据则不允许同时进行写操作 但允许其他事务读此行数据 该隔离级别可以通过“排他写锁”实现

  授权读取

  也称为读提交(Read Committed) 允许不可重复读取 但不允许脏读取 这可以通过“瞬间共享读锁”和“排他写锁”实现 读取数据的事务允许其他事务继续访问该行数据 但是未提交的写事务将会禁止其他事务访问该行

  可重复读取

  可重复读取(Repeatable Read) 禁止不可重复读取和脏读取 但是有时可能出现幻影数据 这可以通过“共享读锁”和“排他写锁”实现 读取数据的事务将会禁止写事务(但允许读事务) 写事务则禁止任何其他事务

  序列化

cha138/Article/program/SQLServer/201311/22347

相关参考

知识大全 关于SQL Server事务日志的问题汇总

关于SQLServer事务日志的问题汇总  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  用BAC

知识大全 MS SQL Server数据库事务锁机制分析

MSSQLServer数据库事务锁机制分析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  锁是网

知识大全 SQL Server应用程序中的高级SQL注入

SQLServer应用程序中的高级SQL注入  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  摘要

知识大全 SQL Server 中的时间算法

SQLServer中的时间算法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  DECLARE@D

知识大全 Microsoft SQL Server 2000 中的位图

MicrosoftSQLServer2000中的位图  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 SQL Server 2008 中的hierarchyid类型应用

SQLServer2008中的hierarchyid类型应用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看

知识大全 如何识别SQL Server中的IO瓶颈

如何识别SQLServer中的IO瓶颈  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  问题  我

知识大全 使用 SQL Server 2005中的 CLR 集成(2)

使用SQLServer2005中的CLR集成(2)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 使用 SQL Server 2005中的 CLR 集成(3)

使用SQLServer2005中的CLR集成(3)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 使用 SQL Server 2005中的 CLR 集成(1)

使用SQLServer2005中的CLR集成(1)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!