SQL Server从入门到精通(七)

哈喽好久不见呐

最近太忙了都没时间写博客,呜呜呜,排名一直没上升,落后了,今天抽空更新一篇博客吧,顺带涨涨粉,哈哈哈,涨不涨粉不重要,重要的是我想写博客

往期精选
SQL Server从入门到精通(一)
SQL Server从入门到精通(二)
SQL Server从入门到精通(二)精讲
SQL Server从入门到精通(三)
SQL Server从入门到精通(四)

1.事务的概念
事务(TRANSACTION)是:使一个事务内的语句成为一个整体来执行,作为单个逻辑工作单元执行的一系列操作作为一个整体向系统提,要么都执行、要么都不执行,事务是一个不可分割的工作逻辑单元在创建存储过程使用,事务是保证数据完整性的最小的一个单位要不都成功要不都失败

2.事务的特性(ACID)
原子性:完整的整体,要么都执行,要么都不执行
一致性:事务完成时,数据必须处于一致状态
隔离性:张三和李四的转账,王五和赵二的转账之间相互独立
永久性:事务完成后他对数据库的修改被永久的保存

3.事务分类
(1)显式事务:又叫用户定义事务,指用户执行SQL事务语句而定的事务

1.启动事务:
 通过发出begin transaction语句显示启动事务
 begin transaction [事务的名称 @变量] [with mark['描述标记的字符串']]]
2.提交事务
  commit transaction[事务的名称@变量]
  或
  commit [work]
3.取消事务(回滚事务)
  rollback transaction[事务的名称 @变量|保存点|@保存点变量]
  或
  rollback work
4.设置事务保存点
save transaction <保存点|@保存点变量>

@保存点变量,必须使用char,varchar,nchar,navrchar数据类型声明该变量
隐式事务:不需要使用begin transaction语句启动事务

 通过set implicit_transactions on 语句,将隐式事务打开
 通过set implicit_transactions off 语句,将隐式事务关闭

自动事务:当一个语句成功执行后,被自动提交。产生错误后,被自动回滚

4.事务控制
(1)开始事务:BEGIN TRANSACTION
(2)提交事务:COMMIT TRANSACTION
(3)回滚(撤销)事务:ROLLBACK TRANSACTION一旦事务提交或回滚,则事务结束
(4)设置事务保存点:
(5)当前事务嵌套:通过全局变量@@TRANCOUNT
使用begin transaction,加1
使用commit,减1
(6)事务处理过程中的错误:
具体的例子大家就到书上自己寻找吧,哈哈哈,太懒了,我就不往上写了

5.事务的相关问题
(1)事务的分类
串行执行方式:
事务1结束执行事务2才开始执行,是一个接一个执行
系统资源利用率低,对用户的响应比较慢
在这里插入图片描述
并发执行方式:
单处理机执行
可能1没执行完后2就开始执行
在这里插入图片描述
多处理机执行
多个事务同时访问
在这里插入图片描述
数据库必须进行有效管理

(2)事务并发所产生的问题
数据丢失更新:两个事务同时一组数据项更新,导致后面的更新覆盖前面的更新
读脏数据:一个事务正在读拎一个更新事务尚未提交的数据
不可重复读:当一个事务读取某一个数据后,另一事务对该数据执行了更新操作,使得第一个事务无法再次读取与前一次相同的结果
(3)解决并发事务的问题的解决方案——封锁
共享锁:一个数据对象已存在共享锁时,其他事务可以读取数据。但不能修改数据。
排他锁:他锁定的资源,其他事物不能读取也不能修改
更新锁:在修改操作的初始化阶段用来锁定可能被修改的资源
意向锁:意向锁表示一个事务为了访问数据库对象层这些底层资源而加共享锁或排它锁的意向

缩写 锁模式 内部代码 描述
S 共享锁 4 允许其他进程读,但不允许修改锁封的资源
X 排他锁 6 阻止其他进程修改或读取被封锁的资源
U 更新锁 5 阻止其他资源申请更新锁或排它锁
IS 意向共享锁 7 表示资源的一部分被施加共享锁,他只能用于表及或页级
IU 意向更新锁 8 表示资源的一部分被施加更新锁,他只能用于表及或顶级

查询相关锁信息
sp_lock[[@spid1=]‘spid1’][,[@spid2=] ‘spid2’]
在这里插入图片描述
锁这一块就不进行详细讲解了因为看了一下许多资源都没有详细讲解锁这一块估计不重要吧,那我也就偷懒了

猜你喜欢

转载自blog.csdn.net/m0_46315852/article/details/104919907