数据库锁机制(一)——概述
注:内容为自己的推理认知+网络,如有错误和不合理之处,敬请指出。
在多线程环境中我用使用线程锁处理并发问题,而在数据库系统中,并发问题可以细化到事务级别,而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关键字的加锁优先级要高于事务隔离级别。
数据库锁机制(一)——概述的更多相关文章
- 数据库锁机制(以MySQL为例)
选自:https://blog.csdn.net/aluomaidi/article/details/52460844 https://www.zhihu.com/question/51513268/ ...
- [MySQL数据库之事务、读现象、数据库锁机制、多版本控制MVCC、事务隔离机制]
[MySQL数据库之事务.读现象.数据库锁机制.多版本控制MVCC.事务隔离机制] 事务 1.什么是事务: 事务(Transaction),顾名思义就是要做的或所做的事情,数据库事务指的则是作为单个逻 ...
- 传智播客JavaWeb day11--事务的概念、事务的ACID、数据库锁机制、
1. 什么叫做事务? 2.默认情况下每一条sql语句都是一个事务,然后自动提交事务 ps:如果想多条语句占一个事务,则可以手动设置SetAutoCommit为false 3.关键字 start tr ...
- [数据库锁机制] 深入理解乐观锁、悲观锁以及CAS乐观锁的实现机制原理分析
前言: 在并发访问情况下,可能会出现脏读.不可重复读和幻读等读现象,为了应对这些问题,主流数据库都提供了锁机制,并引入了事务隔离级别的概念.数据库管理系统(DBMS)中的并发控制的任务是确保在多个事务 ...
- SQL Server数据库锁机制及类型
原文地址:http://blog.csdn.net/zp752963831/article/details/3906477
- MySQL数据库锁机制之MyISAM引擎表锁和InnoDB行锁详解
转 http://blog.csdn.net/hsd2012/article/details/51112009 转 http://blog.csdn.net/e421083458/article/de ...
- mysql数据库锁的机制-one
锁概念 : 当高并发访问同一个资源时,可能会导致数据不一致,需要一种机制将用户访问数据的顺序进行规范化,以保证数据库数据的一致性.锁就是其中的一种机制. 举例 :以买火车票为例,火车票可面向广大消费者 ...
- (转)MySQL优化笔记(八)--锁机制超详细解析(锁分类、事务并发、引擎并发控制)
当一个系统访问量上来的时候,不只是数据库性能瓶颈问题了,数据库数据安全也会浮现,这时候合理使用数据库锁机制就显得异常重要了. 原文:http://www.jianshu.com/p/163c96983 ...
- MySQL数据库锁类型
锁概念 : 当高并发访问同一个资源时,可能会导致数据不一致,需要一种机制将用户访问数据的顺序进行规范化,以保证数据库数据的一致性.锁就是其中的一种机制. 一个栗子 :以买火车票为例,火车票可面向广大消 ...
随机推荐
- shell 学习基地
http://blog.csdn.net/column/details/shell-daily-study.html?&page=2
- MAC 13信道
房东的路由器一直连不上,手机却能连上,前天设置了13信道,后来又忘了,最后找到个连接WIFI的方法,在网络偏好设置里选择向导,诊断中可以连上wifi.
- Asp.Net原理Version1.0
Asp.Net原理Version2.0 Asp.Net原理Version3.0_页面声明周期
- 输入一个链表,输出该链表中倒数第k个结点。
// test14.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> #include< ...
- qsort/bsearch的应用
问题描述: Description You have just moved from Waterloo to a big city. The people here speak an incompre ...
- HDOJ 3547 DIY Cube 解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3547 题目大意:求用$C$种颜色给立方体的8个顶点染色的本质不同的方法.两种方法本质不同即不能通过旋转 ...
- 【BZOJ】【1412】【ZJOI2009】狼和羊的故事
网络流/最小割 一开始我是将羊的区域看作连通块,狼的区域看作另一种连通块,S向每个羊连通块连一条无穷边,每个狼连通块向T连一条无穷边,连通块内部互相都是无穷边.其余是四连通的流量为1的边……然后WA了 ...
- 【HDOJ】【4405】Aeroplane chess飞行棋
概率DP/数学期望 kuangbin总结中的第4题 啊还是求期望嘛……(话说Aeroplane chess这个翻译怎么有种chinglish的赶脚……) 好像有点感觉了…… 首先不考虑直飞的情况: f ...
- Codeforces Round #362 (Div. 2)->B. Barnicle
B. Barnicle time limit per test 1 second memory limit per test 256 megabytes input standard input ou ...
- Kafka之Purgatory Redesign Proposal (翻译)
Purgatory是Kafka server中处理请求时使用的一个重要的数据结构.正好研究ReplicaManager源码的时候发现了这篇文章,顺便翻译下.由于这个proposal里的很多东西需要看源 ...