为什么80%的码农都做不了架构师?>>>   

数据库锁定机制简单来说就是数据库为了保证数据的一致性,而使各种共享资源在被并发访问时变得有序(不会使得数据的完整性和一致性被破坏)所设计的一种规则。

        MySQL的各种存储引擎使用了三种级别的锁机制: 行级锁,页级锁,表级锁。

  1.         行级锁   row-level

    1. 锁粒度最小
    2. 实现逻辑复杂
    3. 发生锁定资源争抢的概率小
    4. 提高应用程序的并发处理能力
  2. 表级锁   table_level
    1. ​​​​​​​锁粒度最大
    2. 实现逻辑简单
    3. 发生锁定资源争抢概率大
    4. 降低应用程序的并发处理能力
    5. 由于表级锁一次会锁定整个表,所以很好的避免死锁问题
  3.  页级锁定  page-level
    1. 锁粒度介于表级锁和行级锁之间
    2. 发生锁定资源争抢的概率介于表级锁和行级锁之间
    3. 应用程序的并发处理能力介于表级锁和行级锁之间
    4. 会发生死锁

MySQL中,使用表级锁的主要是MyISAM,Memory,CSV等一些非事务性存储引擎,使用行级锁的主要是 Innodb 存储引擎和 NDB Cluster 存储引擎,页级锁主要是 BerkeleyDB 存储引擎。

MySQL锁定机制演变:

最初,MySQL 希望设计一种完全独立于各种存储引擎的锁机制,而且早期的 MySQL 数据库中,MySQL 的存储引擎 MyISAM , Memory ,的设计是建立在 “任何表在任何时刻都只允许单个线程对其访问(包括读操作)”这个假设之上。在 MySQL 3.23 版本开发时,MySQL 开发人员不得不修正之前的假设,开发人员发现一个线程正在读取某个表时,另一个线程可以对该表进行 INSERT 操作,只不过只能 INSERT 到数据文件的最尾部。这就是从 MySQL 3.23 版本开始我们所说的 Concurrent Insert 。

此时并没有对整体架构进行改动,随着 BerkeleyDB 存储引擎的引入,之前的锁定机制受到了挑战。因为 BerkeleyDB 没有 MyISAM , Memory 的同一时刻单线程访问一个表的限制,而是将这个限制控制到了单个 page 级别,这就迫使 MySQL 再一次修改锁定机制。

由于新的存储引擎的引入,导致锁定机制不能满足要求。让 MySQL 意识到已经不可能实现一种完全独立的满足各种存储引擎要求的锁定机制。所以放弃了最初设计的初衷,在锁定实现机制中做出修改,允许存储引擎自己改变 MySQL 通过接口传入的锁定类型而自行决定该怎样锁定数据。

                

转载于:https://my.oschina.net/j4love/blog/809775

MySQL锁定机制简介相关推荐

  1. mysql数据库锁定机制

    为什么80%的码农都做不了架构师?>>>    前言 为了保证数据的一致完整性,任何一个数据库都存在锁定机制.锁定机制的优劣直接应想到一个数据库系统的并发处理能力和性能,所以锁定机制 ...

  2. 易语言mysql锁表_MySQL的3种锁定机制

    MySQL各存储引擎使用了3种类型的锁定机制: 1. 行级锁定(row-level) --- MyISAM.Memory.CSV *锁定对象颗粒度最小,发生资源争用的概率最小,在并发处理能力上有较大优 ...

  3. 第 3 章 MySQL 存储引擎简介

    3.1 MySQL 存储引擎概述 MyISAM存储引擎是MySQL默认的存储引擎,也是目前MySQL使用最为广泛的存储引擎之一.他的前身就是我们在MySQL发展历程中所提到的 ISAM,是ISAM的升 ...

  4. mysql 锁机制及实现原理_MySQL-深入浅出锁分类及实现原理

    个人公众号『码农札记』,欢迎关注,查看更多精彩文章. 背景 数据库是一个多用户并发使用的共享资源.当多个并发读写数据时,在数据库中就会产生多个事务同时读写同一数据的情况. 若对并发操作不加控制就可能会 ...

  5. mysql映射表_[玩转MySQL之四]MySQL缓存机制

    一.前言 在当今的各种系统中,缓存是对系统性能优化的重要手段.MySQL Query Cache(MySQL查询缓存)在MySQL Server中是默认打开的,但是网上各种资料以及有经验的DBA都建议 ...

  6. MySQL性能调优与架构设计(二)—— MySQL存储引擎简介

    什么是存储引擎 mysql中的数据用各种不同的技术存储在文件(或者内存)中. 这些技术中每一种技术都使用不同的存储机制.索引技巧.锁定水平并且最终提供广泛的不同的功能和能力. 通过选择不同的技术,你能 ...

  7. MySQL之MVVC简介

    MySQL之MVVC简介 一丶什么是MVVC? MVVC (Multi-Version Concurrency Control) (注:与MVCC相对的,是基于锁的并发控制,Lock-Based Co ...

  8. 大厂面试官必问的Mysql锁机制

    前言 前几天有粉丝和我聊到他找工作面试大厂时被问的问题,因为现在疫情期间,找工作也特别难找.他说面试的题目也比较难,都偏向于一两年的工作经验的面试题. 他说在一面的时候被问到Mysql的面试题,索引那 ...

  9. mysql三锁,mysql锁机制之表锁(三)

    顾名思义,表锁就是一锁锁一整张表,在表被锁定期间,其他事务不能对该表进行操作,必须等当前表的锁被释放后才能进行操作.表锁响应的是非索引字段,即全表扫描,全表扫描时锁定整张表,sql语句可以通过执行计划 ...

最新文章

  1. spring4 整合 mybatis3 配置文件
  2. python27文件夹_为什么python27.dll不是python安装文件夹的一部分,而是在Windows系统文件夹中...
  3. 香甜的黄油 Sweet Butter
  4. 肝!用 Highcharts 绘制饼图,也很强大
  5. Linux云服务器卸载安装MySql
  6. 华工网络教育C语言校考答案,计算机应用基础(统考)随堂练习2017秋华工答案.docx...
  7. 【转】Android加密算法:AES、Base64加密算法
  8. 双linux共用swap,在Linux和FreeBSD系统上共享swap空间
  9. 一文读懂类加载机制 --- ClassLoader
  10. python 矩阵库_NumPy 矩阵库(Matrix)
  11. [刨根问底] 五分钟搞懂组合评价模型—模糊Borda (以2021 年大学生数模国赛C题为例)
  12. Axure 8 Tab制作
  13. 曝Redmi Note 9系列下周发布:最便宜的一亿像素手机
  14. mongodb创建数据库用户名和密码_Linux运维老司机,教你MongoDB 的不同连接方式
  15. 评分卡模型开发(四)--定量指标筛选
  16. unix服务器上传文件,Unix lrzsz命令 上传本地文件到服务器 / 发送文件到客户端...
  17. 一个简单的搜索应用程序(http://www.ibm.com/developerworks/cn/java/j-lo-lucene1/)
  18. version `GLIBC_2.14' not found 解决方法.
  19. Mac OS Catalina 如何连接老旧的惠普 HP Laser Jet 1020 plus 打印机
  20. 计算机空格键作用,笔记本电脑键盘上的空格键和Enter键不起作用. 怎么办?

热门文章

  1. -bash-4.1问题
  2. Android IOS WebRTC 音视频开发总结(六二)-- 大数据解密国外实时通讯行业开发现状...
  3. Visual Studio 2013 Xamarin for iOS 环境搭建
  4. 简单mysql数据库备份一例及crontab说明
  5. Lync Server 2013群聊天室创建和简单测试
  6. leetcode224. 基本计算器
  7. ReactJs 第二章 JSX
  8. redis lru和lfu的实现
  9. oracle的table是什么,oracle – 什么是XMLTABLE
  10. mysql命令_MySql常用命令