zoukankan      html  css  js  c++  java
  • sql server 事务和锁的作用

    事务

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

    代码实例

     数据库脚本

     

     转账事务

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

    锁的目的是什么?

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

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

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

     锁的粒度有哪些?

    • 数据库锁:锁定整个数据库,这通常发生在整个数据库模式改变的时候。
    • 表锁:锁定整个表,这包含了与该表相关联的所有数据相关的对象,包括实际的数据行(每一行)以及与该表相关联的所有索引中的键。
    • 区段锁:锁定整个区段,因为一个区段由8页组成,所以区段锁定是指锁定控制了区段、控制了该区段内8个数据或索引页以及这8页中的所有数据行。
    • 页锁:锁定该页中的所有数据或索引键。
    • 行或行标识符:虽然从技术上将,锁是放在行标识符上的,但是本质上,它锁定了整个数据行。
  • 相关阅读:
    Java学习——文件和IO流
    Java多线程——ThreadLocal类的原理和使用
    Java多线程——线程八锁案例分析
    Django 模版语法 一
    Django 命令行调用模版渲染
    Django 使用 locals() 函数
    Django 加载 app 中的urls
    Django 传递额外参数及 URL别名
    Django 无名参数与有名参数
    Django 项目中添加静态文件夹
  • 原文地址:https://www.cnblogs.com/baili-luoyun/p/11132295.html
Copyright © 2011-2022 走看看