注:内容为自己的推理认知+网络,如有错误和不合理之处,敬请指出。

在多线程环境中我用使用线程锁处理并发问题,而在数据库系统中,并发问题可以细化到事务级别,而DBMS对此的处理方案就是使用锁。

为了适应不同的需求,完善的DBMS对于锁的粒度划分应该是细粒度的,比如行锁、页锁、表锁、数据库锁等。

被锁定的数据对象的表现行为当然和未被锁定的数据对象不同,有的锁可以指示已锁定数据对于其他事务只可读、不可修改,有的锁指示已锁定数据数据对于其他事务既不可读也不可写。

如何使用锁呢?DBMS提供给了我们可以直接在SQL语句上使用的关键字,例如MSSQL中的HOLDLOCK、TABLOCKX等,关键字比较适合于有特殊需求的业务,因为我们不可能为大量的SQL语句都标注关键字,所以DBMS为我们提供了另外的方法——事务隔离级别,相信大家也经常听到这个名词,但是实际项目中用到的却不多,因为业务系统中大部分都使用相同的隔离级别,我们只要在封装好的数据库访问层中写死或者配置在配置文件中就可以了。

 

对于事务隔离级别,大部分数据库都遵循统一的标准,ANSI/ISO SQL92标准中定义了四种隔离级别:

1、序列化(serializable):最高隔离级别,又称串行化,顾名思义,事务进入执行队列,必须一个个顺序执行,不能并发执行。

2:可重复读(repeatable read):不允许未提交读(脏读)和不可重复读(同一事务中对于同一数据任何时候查询到的结果是相同的)

3:已提交读(read committed):不允许未提交读(脏读),但是允许不可重复读

4:未提交读(read uncommitted):允许脏读,即当前事务可以获取到其他事务未提交的更改。

各大DBMS在实现上略有不同。

锁的粒度/隔离级别和并发性/数据一致性有如下的关系:

 

原因简单说一下,因为锁互斥性,所以并发事务会被阻塞,具体细节大家应该都能理解。

隔离级别的作用域是session级别的,对应到程序中就是同一个连接对象,大多数DBMS的默认隔离级别是已提交读(read committed),SQL关键字的加锁优先级要高于事务隔离级别。

数据库锁机制(一)——概述的更多相关文章

  1. 数据库锁机制(以MySQL为例)

    选自:https://blog.csdn.net/aluomaidi/article/details/52460844 https://www.zhihu.com/question/51513268/ ...

  2. [MySQL数据库之事务、读现象、数据库锁机制、多版本控制MVCC、事务隔离机制]

    [MySQL数据库之事务.读现象.数据库锁机制.多版本控制MVCC.事务隔离机制] 事务 1.什么是事务: 事务(Transaction),顾名思义就是要做的或所做的事情,数据库事务指的则是作为单个逻 ...

  3. 传智播客JavaWeb day11--事务的概念、事务的ACID、数据库锁机制、

    1. 什么叫做事务? 2.默认情况下每一条sql语句都是一个事务,然后自动提交事务  ps:如果想多条语句占一个事务,则可以手动设置SetAutoCommit为false 3.关键字 start tr ...

  4. [数据库锁机制] 深入理解乐观锁、悲观锁以及CAS乐观锁的实现机制原理分析

    前言: 在并发访问情况下,可能会出现脏读.不可重复读和幻读等读现象,为了应对这些问题,主流数据库都提供了锁机制,并引入了事务隔离级别的概念.数据库管理系统(DBMS)中的并发控制的任务是确保在多个事务 ...

  5. SQL Server数据库锁机制及类型

    原文地址:http://blog.csdn.net/zp752963831/article/details/3906477

  6. MySQL数据库锁机制之MyISAM引擎表锁和InnoDB行锁详解

    转 http://blog.csdn.net/hsd2012/article/details/51112009 转 http://blog.csdn.net/e421083458/article/de ...

  7. mysql数据库锁的机制-one

    锁概念 : 当高并发访问同一个资源时,可能会导致数据不一致,需要一种机制将用户访问数据的顺序进行规范化,以保证数据库数据的一致性.锁就是其中的一种机制. 举例 :以买火车票为例,火车票可面向广大消费者 ...

  8. (转)MySQL优化笔记(八)--锁机制超详细解析(锁分类、事务并发、引擎并发控制)

    当一个系统访问量上来的时候,不只是数据库性能瓶颈问题了,数据库数据安全也会浮现,这时候合理使用数据库锁机制就显得异常重要了. 原文:http://www.jianshu.com/p/163c96983 ...

  9. MySQL数据库锁类型

    锁概念 : 当高并发访问同一个资源时,可能会导致数据不一致,需要一种机制将用户访问数据的顺序进行规范化,以保证数据库数据的一致性.锁就是其中的一种机制. 一个栗子 :以买火车票为例,火车票可面向广大消 ...

随机推荐

  1. Careercup - Facebook面试题 - 5179916190482432

    2014-05-01 00:45 题目链接 原题: input [,,,] output [,,,] Multiply all fields except it's own position. Res ...

  2. shell 学习基地

    http://blog.csdn.net/column/details/shell-daily-study.html?&page=2

  3. 学习Ember遇到的一些问题

    1.在模板中不能省略结束标签: 在Ember的模板中,如果省略结束标签的话,会有好多无解的问题(可能是:不更新.更新后结构不对.model和view不同步等),苦苦找了很久.... 2.childVi ...

  4. 本地虚拟机中匿名ftp上传文件失败的问题

    在10.10.50.230中新建了一个匿名的ftp服务器,结果在10.10.50.241中上传文件时提示: local: README.txt remote: /var/ftp/pub/upload ...

  5. Eclipse 创建Maven工程

    前言 开发环境 sts-3.7.2.RELEASE 创建步骤 1.开启eclipse,右键new——>other,如下图找到maven project 2.选择maven project,显示创 ...

  6. BZOJ3550: [ONTAK2010]Vacation

    3550: [ONTAK2010]Vacation Time Limit: 10 Sec  Memory Limit: 96 MBSubmit: 91  Solved: 71[Submit][Stat ...

  7. table 与 div 固定宽高问题

    div {width:100px;height:200px;word-wrap: break-word;overflow:hidden;} 这个可以固定div的宽高,溢出内容会被剪除. table{t ...

  8. 电脑问题交流QQ群

    各种电脑问题交流QQ群号 164853622 系统重装 系统恢复 系统出问题 电脑主页 修改 主页 搜狗 软件卸载 顽固 病毒 讨论

  9. PE工具

    PE编辑工具 Stud_PE v. 2.4.0.1 PE工具,用来学习PE格式十分方便. http://www.cgsoftlabs.ro/ 汉化版:http://bbs.pediy.com/show ...

  10. 原 Linux搭建SVN 服务器

    原 Linux搭建SVN 服务器 发表于1年前(2014-08-05 17:55)   阅读(12257) | 评论(3) 31人收藏此文章, 我要收藏 赞3 摘要 Linux搭建SVN 服务器 目录 ...