数据库的读现象浅析中介绍过,在并发访问情况下,可能会出现脏读、不可重复读和幻读等读现象,为了应对这些问题,主流数据库都提供了锁机制,并引入了事务隔离级别的概念。

并发控制

在计算机科学,特别是程序设计、操作系统、多处理机和数据库等领域,并发控制(Concurrency control)是确保及时纠正由并发操作导致的错误的一种机制。

数据库管理系统(DBMS)中的并发控制的任务是确保在多个事务同时存取数据库中同一数据时不破坏事务的隔离性和统一性以及数据库的统一性。下面举例说明并发操作带来的数据不一致性问题:

现有两处火车票售票点,同时读取某一趟列车车票数据库中车票余额为 X。两处售票点同时卖出一张车票,同时修改余额为 X -1写回数据库,这样就造成了实际卖出两张火车票而数据库中的记录却只少了一张。 产生这种情况的原因是因为两个事务读入同一数据并同时修改,其中一个事务提交的结果破坏了另一个事务提交的结果,导致其数据的修改被丢失,破坏了事务的隔离性。并发控制要解决的就是这类问题。

封锁、时间戳、乐观并发控制(乐观锁)和悲观并发控制(悲观锁)是并发控制主要采用的技术手段。

当并发事务同时访问一个资源时,有可能导致数据不一致,因此需要一种机制来将数据访问顺序化,以保证数据库数据的一致性。锁就是其中的一种机制。

在计算机科学中,锁是在执行多线程时用于强行限制资源访问的同步机制,即用于在并发控制中保证对互斥要求的满足。

锁的分类(oracle)

一、按操作划分,可分为DML锁DDL锁

二、按锁的粒度划分,可分为表级锁行级锁页级锁(mysql)

三、按锁级别划分,可分为共享锁排他锁

四、按加锁方式划分,可分为自动锁显示锁

五、按使用方式划分,可分为乐观锁悲观锁

DML锁(data locks,数据锁),用于保护数据的完整性,其中包括行级锁(Row Locks (TX锁))、表级锁(table lock(TM锁))。 DDL锁(dictionary locks,数据字典锁),用于保护数据库对象的结构,如表、索引等的结构定义。其中包排他DDL锁(Exclusive DDL lock)、共享DDL锁(Share DDL lock)、可中断解析锁(Breakable parse locks)

转载于:https://www.cnblogs.com/gudi/p/8298047.html

【转】数据库的锁机制相关推荐

  1. 并发编程(四):也谈谈数据库的锁机制

    首先声明,本次文章基本上都是从其他人的文章中或者论坛的回复中整理而来.我把我认为的关键点提取出来供自己学习.所有的引用都附在文后,在这里也就不一一表谢了. 第二个声明,我对于Internel DB并没 ...

  2. 详解数据库的锁机制及原理

    详解数据库的锁机制及原理 1.数据库锁的分类 2.行锁 共享锁(读锁S锁) 排他锁(写锁X锁) 更新锁 3.意向锁(IX/IS锁) 4.锁机制解释数据库隔离级别 5.元数据锁(MDL锁) 6.间隙锁 ...

  3. 数据库的锁机制(悲观锁/乐观锁)

    在数据库的锁机制中介绍过,数据库管理系统(DBMS)中的并发控制的任务是确保在多个事务同时存取数据库中同一数据时不破坏事务的隔离性和统一性以及数据库的统一性. 乐观并发控制(乐观锁)和悲观并发控制(悲 ...

  4. MySQL数据库:锁机制

    当数据库中多个事务并发存取同一数据的时候,若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性.MySQL锁机制的基本工作原理就是,事务在修改数据库之前,需要先获得相应的锁,获得锁的 ...

  5. 数据库中锁机制的学习

           我们在做很多项目时都要涉及到数据库,特别是一些比较大型的web项目,更是有较大的并发处理,所以对数据库的操作有可能会产生死锁,对于数据库的死锁,一般数据库系统都会有一套机制去解锁,一般不 ...

  6. 数据库的锁机制理解和运用

    [为什么要锁]   数据库是一个多用户使用的共享资源,比如一个用户表t_user,两个浏览器前面的人登录了同个一个账号,把电话号码改了.当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同 ...

  7. 1. 请简述mysql数据库的锁机制_【MySQL入门】之MySQL数据库的锁机制(二)

    上篇文章主要聊了全局锁和表锁,并详细分析MDL锁的作用以及可能带来的问题.今天我们主要来聊一聊Innodb存储引擎的行锁.MySQL的行锁是在引擎层由引擎自己实现的,并不是所有的引擎都支持行锁,MyI ...

  8. 【数据库】聊一下数据库的锁机制

    为什么需要锁 作为一个程序员,我们知道,后端系统无时无刻不在支撑用户请求,而如果所有的组件都是一个串行化执行的,在对同一个资源进行并发访问的时候,只能A执行完毕,B在执行.但是这样显然对于一个高并发. ...

  9. 幂等性概念及数据库乐观锁机制

最新文章

  1. HanLP 关键词提取算法分析详解
  2. 奖学金pascal程序
  3. 把URL参数解析成一个Json对象
  4. 天涯明民显示连接不上服务器,关于无法正常登录天涯的N种解决办法
  5. GC解释:收集器概述
  6. Taro+react开发(13)--多加/不然不能跳转
  7. 如何:添加缺少的 ContentPlaceHolder
  8. arp协议属于哪一层_网络工程师(3):详解ARP协议
  9. tp5使用layui表格_tp5+layui增、删、改、查。
  10. Shell编程之一:Shell基础编程
  11. String及其常用API
  12. Linux红外驱动重点解析
  13. spss变量视图转数据视图_SPSS的数据视图和变量视图
  14. ORACLE 的 ADD_MONTHS函数常用来计算 上年同期
  15. leetcode每日一题-字符串中的第一个唯一字符
  16. html css使用特殊自定义字体避免侵权
  17. java在线截图_JAVA之网页截屏
  18. 【算法面试】leetcode最常见的150道前端面试题 --- 中等题
  19. 云原生和云计算的区别介绍
  20. 主板是2011针服务器型号,华硕服务器主板 Z9PA-D8/C 双路2011针脚

热门文章

  1. tomcat 的安全规范
  2. 机会的度量:概率和分布
  3. 基于特征的推荐算法【转】
  4. 3 文件读写 计时 我的烂电脑在1S钟能写70多MB的数据
  5. jbpm binding类深入解析
  6. yield - python
  7. java创建线程的两种方法区别
  8. [ACM] hdu 1671 Phone List (字典树)
  9. freemarker第三篇
  10. jQuery Mobile和PhoneGap混合开发