为什么需要锁

作为一个程序员,我们知道,后端系统无时无刻不在支撑用户请求,而如果所有的组件都是一个串行化执行的,在对同一个资源进行并发访问的时候,只能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;

【数据库】聊一下数据库的锁机制相关推荐

  1. mysql 事务 不同库_MYSQL数据库重点:事务与锁机制

    一.事务 一组连续的数据库操作,每一次操作都成功,整个事务就成功,只要有一步出错,整个事务就失败: MySQL事务与存储引擎相关 1.MyISAM:不支持事务,用于只读程序提高性能 2.InnoDB: ...

  2. 【数据库】MySQL中的锁机制

    MySQL中的锁机制 数据库锁定机制简单来说,就是数据库为了保证数据的一致性,而使各种共享资源在被并发访问变得有序所设计的一种规则. MySQL 数据库由于其自身架构的特点,存在多种数据存储引擎,每种 ...

  3. 关于锁机制:数据库锁

    一.什么是锁机制?数据库为什么要会有锁机制 数据库是一个多用户使用的共享资源.当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况.若对并发操作不加控制就可能会读取和存储不正确 ...

  4. 7、 MySQL锁机制:数据库核心技术之一

    为了保证数据并发访问时的一致性和有效性,任何一个数据库都存在锁机制. 锁机制的优劣直接影响到数据库的并发处理能力和系统性能,所以锁机制也就成为了各种数据库的核心技术之一. 锁机制是为了解决数据库的并发 ...

  5. MySQL数据库:锁机制

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

  6. 回滚机制_【巨杉数据库SequoiaDB】巨杉 Tech | 并发性与锁机制解析与实践

    01 概述 数据库是一个多用户使用的共享资源.当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况.若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性.加锁 ...

  7. 【直击DTCC】浪潮霍俊路详解数据库集群锁机制管理

    2016年5月12日-14日,第七届中国数据库技术大会(DTCC 2016)在北京国际会议中心拉开帷幕.今年的大会首次设立了"数据库内核技术"专场,着重突出"内核的实现技 ...

  8. 【巨杉数据库SequoiaDB】巨杉 Tech | 并发性与锁机制解析与实践

    01 概述 数据库是一个多用户使用的共享资源.当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况.若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性.加锁 ...

  9. MySQL锁机制(myisam表所与innoDB锁)

    目录 1.MySQL锁的基本介绍 2.MyISAM表锁 2.1写锁阻塞读 2.2读阻塞写 3.InnoDB锁 3.1.事务及其ACID属性 3.2.并发事务带来的问题 3.3.1.在不通过索引条件查询 ...

  10. mysql insert into select大量数据插入比较慢_史上最全MySQL锁机制

    本文主要记录学习MyISAM 和 InnoDB 这两个存储引擎. 为什么要学习锁机制 锁是计算机协调多个进程或线程并发访问某一资源的机制. 因为数据也是一种供许多用户共享的资源,如何保证数据并发访问的 ...

最新文章

  1. python【蓝桥杯vip练习题库】BASIC-18 矩形面积交(线段交)
  2. HDU1715 大菲波数(大数相加)(Java题解)
  3. mysql 业务账户_mysql的事务
  4. [Machine Learning]--无监督学习
  5. 乐视视频回应APP标注“欠122亿”:欠款大家都知道 不影响观看视频
  6. python教案 md文件_python操作pdf文件.md
  7. 惠普修复已存在8年的可蠕虫漏洞,影响150多款多功能打印机
  8. linux percpu机制解析
  9. 北斗导航 | RAIM算法之奇偶矢量法(原理讲解,附代码链接:可用性判定)
  10. 归并排序时间复杂度为什么是NlgN
  11. android 开发按键精灵,安卓按键精灵实现后台
  12. 软件是指示计算机运行所需的程序,计算机文化基础知识点
  13. canvas+audio+range 模拟音乐播放器
  14. 基因家族进化分析之CDS批量获取
  15. 网络搭建与应用2022国赛环境无误版
  16. matlab精品课程视频,MATLAB 在线课程与学习资源 (2019版)
  17. 2022-2027年中国家具电商市场竞争态势及行业投资前景预测报告
  18. 开分矿——青龙多容器的安装与使用
  19. elastic产品各个版本下载地址
  20. ipad能不能编写python_ipad 能做python开发吗

热门文章

  1. 如何保养COMAPQ/HP 电池
  2. 数据结构——栈和队列
  3. python孩子 哪里学_Python知识免费学!孩子提高逻辑思维,这样练就够了!
  4. xcode更新一直失败的解决办法
  5. flask中的可拨插视图
  6. Latex/overleaf表格旋转、表格高度宽度、表格行间距设置
  7. 你不曾了解的CVTE的某个部门
  8. WSL2 安装 CUDA(Win11)
  9. 给定一个不多于5位的正整数,判断它是几位数,并输出。 输入
  10. 安利这款软件给专注不下来的你