10、MSSQL事务与锁

https://www.cnblogs.com/xrq730/p/5087378.html

一:事务

原子性:事务中的全部内容,要么全部完成,要么全部不完成
一致性:无论事务完成成功还是中途失败,事务中的数据处于一致
隔离性:每个事务都与其他事务独立,一个事务中的行为,
		不会被另外的事务中的行为所干扰
持久性:当事务完成,数据库日志被更新,数据库将数据写入磁盘。
事务创建,暂存回滚点,回滚,提交
SELECT * FROM dbo.BookType;

BEGIN TRANSACTION  TRANS_NAME
UPDATE dbo.BookType SET BookTypeName='计算机01' WHERE Id=1;

SAVE TRANSACTION SAVE01
UPDATE dbo.BookType SET BookTypeName='英语02' WHERE Id=2;

ROLLBACK TRANSACTION SAVE01 -- 回滚保存的结点SAVE01z之后的修改不再保存
COMMIT TRANSACTION TRANS_NAME;

SELECT * FROM dbo.BookType;

保存的结果是SAVE01后的不再保存到数据库

二:数据库锁

WITH(NOLOCK)使用场景

什么时候可以使用WITH(NOLOCK)? 什么时候不能使用WITH(NOLOCK),这个要视你系统业务情况,综合考虑性能情况与业务要求来决定是否使用WITH(NOLOCK), 例如涉及到金融或会计成本之类的系统,出现脏读那是要产生严重问题的。关键业务系统也要慎重考虑。大体来说一般有下面一些场景可以使用WITH(NOLOCK)  1: 基础数据表,这些表的数据很少变更。  2:历史数据表,这些表的数据很少变更。  3:业务允许脏读情况出现涉及的表。  4:数据量超大的表,出于性能考虑,而允许脏读。

例子:下面开启了事务但是未提交

下面的是测试,nolock将事务未提交的数据去读取,readpast没有。

posted @ 2026-08-30 17:43  清哥的码农生活  阅读(3)  评论(0)    收藏  举报