【数据库】聊一下数据库的锁机制
为什么需要锁
作为一个程序员,我们知道,后端系统无时无刻不在支撑用户请求,而如果所有的组件都是一个串行化执行的,在对同一个资源进行并发访问的时候,只能A执行完毕,B在执行。但是这样显然对于一个高并发、高性能的系统来说是不可接受的,所以,大多数的组件(Nginx、Spring、Servlet、MySQL、MQ、Redis)都直接或者间接支持高并发的访问。也就是对同一互斥资源访问时,通过一些机制,比如说Java提供的并发JUC并发包,以及Servlet 为每个请求创建单独的上下文。而MySQL大多数人并不会想到 原来它也一个能够支持并发访问的系统,原因在于它做的太牛的了,以至于你都不用关心内部具体实现机制,但是当遇到问题的时候,我们需要了解其内部机制才能更好的,解决具体问题,提供一种思路。
所以为什么需要锁,锁可以在并发访问共享资源的时候,保证数据的一致性,解决线程数据安全。比如读读不互斥,但是读写、写写之间互斥。
而在MySQL中主要就是三种锁,全局锁,表锁,行锁。
全局锁
全局锁就是对整个数据库实例加锁。MySQL 提供了一个加全局读锁的方法,命令是 Flush tables with read lock (FTWRL)
全局锁的典型使用场景是,做全库逻辑备份
表锁
MySQL 里面表级别的锁有两种:一种是表锁,一种是元数据锁(meta data lock,MDL)。
- 表锁的语法是 lock tables … read/write
行锁
InnoDB存储引擎有3种行锁的算法,其中分别是
- Record Lock:单个记录上的锁
- Gap Lock:间隙锁,锁定一个范围但不包含记录本身
- Next-Key Lock:GapLock Record Lock,锁定一个范围,并且锁定本身
以上Next-Key Lock是Record Lock+Gap Lock结合的,如果当在一个索引上有1,3,4,5,那么就会创建(-∞,1],(1,3],(3,4],(4,5],(5,+∞)而最根本是为了解决幻读问题。
传统的辅助索引使用的是Next-Key Locking技术加锁,然而当查询索引含有唯一索引时,InnoDB存储引擎会对Next-Key Lock进行优化,降级为Record Lock只锁定本身。
读锁(S锁,共享锁)select k from t where id=1 lock in share mode;
写锁(X锁,排他锁)select k from t where id=1 for update;
【数据库】聊一下数据库的锁机制相关推荐
- mysql 事务 不同库_MYSQL数据库重点:事务与锁机制
一.事务 一组连续的数据库操作,每一次操作都成功,整个事务就成功,只要有一步出错,整个事务就失败: MySQL事务与存储引擎相关 1.MyISAM:不支持事务,用于只读程序提高性能 2.InnoDB: ...
- 【数据库】MySQL中的锁机制
MySQL中的锁机制 数据库锁定机制简单来说,就是数据库为了保证数据的一致性,而使各种共享资源在被并发访问变得有序所设计的一种规则. MySQL 数据库由于其自身架构的特点,存在多种数据存储引擎,每种 ...
- 关于锁机制:数据库锁
一.什么是锁机制?数据库为什么要会有锁机制 数据库是一个多用户使用的共享资源.当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况.若对并发操作不加控制就可能会读取和存储不正确 ...
- 7、 MySQL锁机制:数据库核心技术之一
为了保证数据并发访问时的一致性和有效性,任何一个数据库都存在锁机制. 锁机制的优劣直接影响到数据库的并发处理能力和系统性能,所以锁机制也就成为了各种数据库的核心技术之一. 锁机制是为了解决数据库的并发 ...
- MySQL数据库:锁机制
当数据库中多个事务并发存取同一数据的时候,若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性.MySQL锁机制的基本工作原理就是,事务在修改数据库之前,需要先获得相应的锁,获得锁的 ...
- 回滚机制_【巨杉数据库SequoiaDB】巨杉 Tech | 并发性与锁机制解析与实践
01 概述 数据库是一个多用户使用的共享资源.当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况.若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性.加锁 ...
- 【直击DTCC】浪潮霍俊路详解数据库集群锁机制管理
2016年5月12日-14日,第七届中国数据库技术大会(DTCC 2016)在北京国际会议中心拉开帷幕.今年的大会首次设立了"数据库内核技术"专场,着重突出"内核的实现技 ...
- 【巨杉数据库SequoiaDB】巨杉 Tech | 并发性与锁机制解析与实践
01 概述 数据库是一个多用户使用的共享资源.当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况.若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性.加锁 ...
- MySQL锁机制(myisam表所与innoDB锁)
目录 1.MySQL锁的基本介绍 2.MyISAM表锁 2.1写锁阻塞读 2.2读阻塞写 3.InnoDB锁 3.1.事务及其ACID属性 3.2.并发事务带来的问题 3.3.1.在不通过索引条件查询 ...
- mysql insert into select大量数据插入比较慢_史上最全MySQL锁机制
本文主要记录学习MyISAM 和 InnoDB 这两个存储引擎. 为什么要学习锁机制 锁是计算机协调多个进程或线程并发访问某一资源的机制. 因为数据也是一种供许多用户共享的资源,如何保证数据并发访问的 ...
最新文章
- python【蓝桥杯vip练习题库】BASIC-18 矩形面积交(线段交)
- HDU1715 大菲波数(大数相加)(Java题解)
- mysql 业务账户_mysql的事务
- [Machine Learning]--无监督学习
- 乐视视频回应APP标注“欠122亿”:欠款大家都知道 不影响观看视频
- python教案 md文件_python操作pdf文件.md
- 惠普修复已存在8年的可蠕虫漏洞,影响150多款多功能打印机
- linux percpu机制解析
- 北斗导航 | RAIM算法之奇偶矢量法(原理讲解,附代码链接:可用性判定)
- 归并排序时间复杂度为什么是NlgN
- android 开发按键精灵,安卓按键精灵实现后台
- 软件是指示计算机运行所需的程序,计算机文化基础知识点
- canvas+audio+range 模拟音乐播放器
- 基因家族进化分析之CDS批量获取
- 网络搭建与应用2022国赛环境无误版
- matlab精品课程视频,MATLAB 在线课程与学习资源 (2019版)
- 2022-2027年中国家具电商市场竞争态势及行业投资前景预测报告
- 开分矿——青龙多容器的安装与使用
- elastic产品各个版本下载地址
- ipad能不能编写python_ipad 能做python开发吗