博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sql server 事务和锁的作用
阅读量:4467 次
发布时间:2019-06-08

本文共 654 字,大约阅读时间需要 2 分钟。

事务

事务就是作为一个逻辑工作单元的SQL语句,如果任何一个语句操作失败那么整个操作就被失败,以后操作就会回滚到操作前状态,或者是上个节点。为了确保要么执行,要么不执行,就可以使用事务。而锁是实现事务的关键,锁可以保证事务的完整性和并发性。

代码实例

 
数据库脚本

 

 
转账事务

数据库中的锁也是为了解决在并发访问时出现各种冲突的一种机制

锁的目的是什么?

主要解决多个用户同时对数据库的并发操作时会带来以下数据不一致的问题:

  • 丢失更新,同时修改一条数据
  • 读脏,A修改了数据后,B读取后A又取消了修改,B读脏
  • 不可重复读,A用户读取数据,随后B用户读取该数据并修改,此时A用户再读取数据时发现前后两次的值不一致
  • 还有一种是幻读,这个情况好像不多。

并发控制的主要方法是封锁,锁就是在一段时间内禁止用户做某些操作以避免产生数据不一致

 锁的粒度有哪些?

  • 数据库锁:锁定整个数据库,这通常发生在整个数据库模式改变的时候。
  • 表锁:锁定整个表,这包含了与该表相关联的所有数据相关的对象,包括实际的数据行(每一行)以及与该表相关联的所有索引中的键。
  • 区段锁:锁定整个区段,因为一个区段由8页组成,所以区段锁定是指锁定控制了区段、控制了该区段内8个数据或索引页以及这8页中的所有数据行。
  • 页锁:锁定该页中的所有数据或索引键。
  • 行或行标识符:虽然从技术上将,锁是放在行标识符上的,但是本质上,它锁定了整个数据行。

转载于:https://www.cnblogs.com/baili-luoyun/p/11132295.html

你可能感兴趣的文章
Android简明开发教程二十四:总结及示例代码下载
查看>>
字符串面试题系列之二:连续最长数字串
查看>>
使用命令行将Excel数据表导入Mysql中的方法小结
查看>>
laravel tinker测试模型添加属性
查看>>
矩阵相乘
查看>>
gridview 全选及其选择项ID的传值
查看>>
曾国藩家书
查看>>
web自动化测试第9步:切换页面frame
查看>>
Eclipse创建第一个Servlet(Dynamic Web Project方式)、第一个Web Fragment Project(web容器向jar中寻找class文件)...
查看>>
Prim算法
查看>>
盒模型
查看>>
nginx
查看>>
稀疏表示介绍(下)
查看>>
10条Web可用性指南
查看>>
004_浅析Python的GIL和线程安全
查看>>
用户的环境变量
查看>>
OS + Ubuntu ARM Android
查看>>
算法的学习就像打副本
查看>>
中文自然语言处理(NLP)(四)运用python二维字典和jieba实现词频的统计
查看>>
Python连接oracle
查看>>