`
sswh
  • 浏览: 163829 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

SQLServer数据库笔记(四)

阅读更多
数据库事务
SQLServer支持三类事务:自动提交事务、隐性事务和显式事务。其中,自动提交和隐性事务由“SET IMPLICIT_TRANSACTIONS {ON|OFF}”切换。
显式事务可以嵌套。按联机丛书的说明:
引用
这主要是为了支持存储过程中的一些事务,这些事务可以从事务中已有的进程中调用,也可以从没有活动事务的进程中调用。

嵌套事务本质上只有最外层事务起作用,内部事务的begin和commit被忽略了(可以看做是这样)。
SQLServer支持保存点,保存点用于回滚部分内部事务。
SQLServer支持SQL92的事务隔离级别(控制由连接发出的所有SELECT语句的默认事务锁定行为),分别是:
READ UNCOMMITTED
READ COMMITTED(缺省)
REPEATABLE READ
SERIALIZABLE

嵌套事务:“嵌套”只是一个形式,一个数据库连接上,最多同时只有一个事务存在。@@trancount变量用来决定内部事务的commit行为(究竟是该提交还是忽略)。
Begin transaction [name]只有最外层的语句才开启事务,事务内部的begin语句被忽略了。(仅仅使@trancount+1),也只有最外层的事务名称才有效(仅用于回滚时区分保存点名称),内部事务的名称仅仅是为代码更容易阅读。
Commit transaction [name]名称完全被忽略了。当@@trancount=1时提交事务,释放资源锁定。当事务不存在(@@trancount=0)时,将会引发一个错误。其他情况下,仅仅使@@trancount-1。
Rollback transaction [name]名称要么不写,如果写的话,必须是最外层事务名称或者保存点名称。其他任何名称都会引发一个错误。当事务不存在(@@trancount=0)时,引发一个错误。回滚保存点时,对事务计数(@@trancount)没有影响;否则回滚事务到事务起点,并令@@trancount=0(不管回滚前是多少)。
Save transaction <name>在事务内部设置一个保存点。名称是必须的。如果不在事务内部,将引发一个错误。
对存储过程的调用不应该导致@@trancount发生变化。联机丛书的描述:
引用
如果@@TRANCOUNT的值在存储过程完成时与过程执行时不同,则会生成一个266信息类错误。

再重述一下事务隔离级别控制由连接发出的所有SELECT语句的默认事务锁定行为的含义:
这句话的意思是说,insert/delete/update语句的锁定和自身的事务隔离级别没有关系,都是排他锁,并且直到事务结束才释放。
而select语句则按照事务隔离级别的不同,锁定方式不同。
READ UNCOMMITTED下,select不加锁,所以,可以读到其他事务未提交的数据,也就是允许脏读。
READ COMMITTED下,select语句加共享锁,如果其他事务在更新数据,同时尚未提交(排他锁还未释放),select语句就必须等待,所以,不会出现脏读。select语句执行完以后,共享锁就会释放(在事务提交前);但是和再次读取之间,其他事务可能会更改数据,也就是说存在不可重复读。
REPEATABLE READ下,共享锁的范围是本次读取影响的数据行或页。并且直到事务结束才释放锁,所以可以避免不可重复读。但是无法避免其他事务新增的记录也符合本次查询条件,所以会出现幻像读。
SERIALIZABLE下,采用的是键范围锁模式,直到事务结束才释放锁。这样可以避免幻像读。
下面摘自联机丛书:
引用
  • 共享锁:共享 (S) 锁允许并发事务读取 (SELECT) 一个资源。资源上存在共享 (S) 锁时,任何其它事务都不能修改数据。一旦已经读取数据,便立即释放资源上的共享 (S) 锁,除非将事务隔离级别设置为可重复读或更高级别,或者在事务生存周期内用锁定提示保留共享 (S) 锁。
  • 排它锁:用于数据修改操作,例如 INSERT、UPDATE 或 DELETE。排它 (X) 锁可以防止并发事务对资源进行访问。其它事务不能读取或修改排它 (X) 锁锁定的数据。
  • 键范围锁定:键范围锁定解决了幻像读并发问题,并支持可串行事务。键范围锁覆盖单个记录以及记录之间的范围,可以防止对事务访问的记录集进行幻像插入或删除。键范围锁仅用于代表在可串行隔离级别上操作的事务。
  • 锁升级:锁升级是将众多细粒度锁转换为较少的粗粒度的锁的过程,以削减系统开销。当事务超过它的升级极限时, SQL Server自动将行锁和页锁升级为表锁。

  • 大小: 15.7 KB
0
3
分享到:
评论

相关推荐

    sqlserver数据库笔记

    ### SQL Server 数据库基础知识与操作指南 #### 一、创建数据库 在 SQL Server 中创建数据库是一项基础但重要的技能。以下是一些关键步骤和语法示例: ```sql CREATE DATABASE ckgl ON PRIMARY ( -- 创建第一个...

    sqlserver数据库操作笔记

    ### SQL Server 数据库操作知识点详解 #### 一、SQL Server 的安装与配置 **1. 安装步骤:** - **准备阶段:** 首先确保安装环境中满足SQL Server的最低硬件要求,并且操作系统兼容。 - **安装介质:** 获取SQL ...

    SQLServer2005数据库学习笔记

    笔记是本人学习SQLServer一段时间后重新整理出来的,适合有一些入门基础的人学习。 ├─01 安装及使用 │ SQLServer2005安装及使用.txt │ ├─02 常用函数 │ function.sql ... Sqlserver数据库总结.sql

    sql server数据库笔记.zip

    这份"sql server数据库笔记.zip"包含了两个子文件,分别是"sql server数据库笔记01.enex"和"sql server数据库笔记02.enex",很可能记录了关于SQL Server的重要概念、操作技巧和实践经验。 首先,SQL(Structured ...

    SQL Server数据库基础学习笔记

    在SQL Server数据库的基础学习中,理解并掌握各个系统数据库的功能至关重要。首先,master数据库是整个SQL Server的核心,它存储了所有系统级别的信息,包括用户数据库的控制信息、账户设置、环境变量以及系统错误...

    Oracle SQLServer数据库 学习笔记

    二、SQL Server数据库系统 SQL Server是微软公司的产品,同样具有广泛的应用场景: 1. **T-SQL**:SQL Server使用Transact-SQL作为其扩展的SQL语言,支持事务处理和复杂的业务逻辑。 2. **SSMS(SQL Server ...

    SQL Server数据库技术大全:5小时多媒体视频讲解

    《SQL Server数据库技术大全:5小时多媒体视频讲解》是一份深度探讨SQL Server数据库技术的教程,旨在通过实例教学,帮助读者快速理解和掌握SQL Server的核心功能和高级特性。本教程覆盖了从基础操作到复杂查询、...

    SQL server 数据库笔记.zip

    SQL Server 作为一个关系型数据库管理系统,涉及到一些专业术语。以下是几个常见的 SQL Server 专业术语的解释: 数据库(Database): 在 SQL Server 中,数据库是一个包含相关数据和对象的容器。它是数据的集合,...

    sqlserver数据库学习笔记

    SQL Server 数据库学习笔记 SQL Server 是一种关系数据库管理系统,由 Microsoft 公司开发。它使用 Transact-SQL(T-SQL)语言来管理和操作数据库。本文将对 SQL Server 数据库的基本操作进行总结,涵盖创建数据库...

    SQL server2005笔记

    SQLserver 数据库学习笔记 欢迎大家下载学习,共同进步啊

    Tsql和sqlserver数据库知识笔记

    本人自学数据库精华笔记,学习课程是任何一个知识点都不敢遗漏,方便软件开发过程中查阅和学习。主要内容是T-sql和sqlserver数据库知识。希望下载了的小童鞋能耐心学习。

    SQL Server精华 (CHM)_sqlserver_SQLServer笔记_

    《SQL Server精华 (CHM)_sqlserver_SQLServer笔记_》是一部综合性的SQL Server学习资源,旨在帮助用户深入理解和掌握Microsoft SQL Server数据库管理系统的核心概念、功能和最佳实践。这部笔记涵盖了一系列关键知识...

    sql server 帮助文档官方版

    SQL Server 是 Microsoft 开发的一款关系数据库管理系统(RDBMS),它提供了广泛的功能和工具,以满足企业级数据库管理的需求。本文档提供了 SQL Server 的官方帮助文档,涵盖了从安装到部署、管理、安全和优化等...

    sql server 2008笔记

    SQL Server 2008是微软推出的一款关系型数据库管理系统,具有强大的数据处理能力和稳定性。在维护和优化SQL Server 2008时,我们需要注意以下几个关键知识点: 1. **RAID配置**: - RAID10:提供高读写速度和数据...

    SQL Server 学习笔记

    在本文中,我们将深入探讨SQL Server的学习笔记,涵盖其体系结构、数据库类型特点、OLTP与OLAP的区别,以及一些关键的管理工具。 首先,让我们了解Microsoft SQL Server 2008系统的体系结构。这个系统由四个主要...

    sql server语法笔记整理

    本笔记主要针对SQL Server的语法进行整理,旨在帮助初学者快速掌握基础概念和常用操作。 一、SQL简介 SQL(Structured Query Language)是用于管理和处理关系数据库的标准语言。在SQL Server中,你可以创建、更新、...

    sqlserver优化笔记

    通过对SQL Server查询和索引的优化,不仅可以显著提升数据库的性能,还能有效降低系统的运行成本。实践证明,合理的SQL编写习惯与良好的索引管理策略是实现这一目标的关键。此外,定期审查并调整现有的SQL脚本与索引...

    c#课程设计连接sqlserver数据库,笔记本,存储修改文字图片等_NoteBookIteration.zip

    c#课程设计连接sqlserver数据库,笔记本,存储修改文字图片等_NoteBookIteration

    SQLServer 2012性能学习笔记

    ### SQL Server 2012 性能学习笔记 #### SQL Server 2012 新特性及简介 SQL Server 2012 是微软推出的一个重要版本,它引入了许多新特性和改进,旨在提高数据库系统的可用性、安全性、可管理性以及性能。以下是几...

    SQL Server 笔记.docx

    SQL Server 数据库管理笔记 SQL Server 是一种关系型数据库管理系统,由 Microsoft 公司开发,广泛应用于各种行业和领域。作为一名 ITIndustry 大师,我将根据提供的文件信息,总结出相关的知识点,帮助您快速了解 ...

Global site tag (gtag.js) - Google Analytics