锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(如CPU、RAM、I/O 等)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访 问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。本章我们着重讨论MySQL锁机制的特点,常见的锁问题,以及解决 MySQL锁问题的一些方法或建议。
MySQL锁概述
相对其他数据库而言,MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制。比 如,MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking);BDB存储引擎采用的是页面锁(page-level locking),但也支持表级锁;InnoDB存储引擎既支持行级锁(row-level locking),也支持表级锁,但默认情况下是采用行级锁。
MySQL这3种锁的特性可大致归纳如下。
  • 表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。
  • 行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。
  • 页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般。
从上述特点可见,很难笼统地说哪种锁更好,只能就具体应用的特点来说哪种锁更合适!仅从锁的角度来说:表级锁更适合 于以查询为主,只有少量按索引条件更新数据的应用,如Web应用;而行级锁则更适合于有大量按索引条件并发更新少量不同数据,同时又有并发查询的应用,如 一些在线事务处理(OLTP)系统。这一点在本书的“开发篇”介绍表类型的选择时,也曾提到过。下面几节我们重点介绍MySQL表锁和InnoDB行锁的 问题,由于BDB已经被InnoDB取代,即将成为历史,在此就不做进一步的讨论了。

转载于:https://www.cnblogs.com/Alight/p/3941282.html

01 MySQL锁概述相关推荐

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

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

  2. 史上最全MySQL锁机制

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

  3. 深入理解 Mysql 锁

    如何保证数据并发访问的一致性.有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素.从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂.本章我们着重讨论MySQL锁 ...

  4. MYSQL 锁表 查询语句

    MySQL锁概述 相对其他数据库而言,MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制.比如,MyISAM和MEMORY存储引擎采用的是表级锁(table-level loc ...

  5. 最全MySQL锁讲解:页锁、共享锁、行锁、表锁、悲观锁、乐观锁

    我们在操作数据库的时候,可能会由于并发问题而引起的数据的不一致性(数据冲突),如何保证数据并发访问的一致性.有效性,是所有数据库必须解决的一个问题,锁的冲突也是影响数据库并发访问性能的一个重要因素,从 ...

  6. 【宋红康 MySQL数据库】【01】数据库概述

    持续学习&持续更新中- 学习态度:守破离 [宋红康 MySQL数据库][01]数据库概述 1. 为什么要使用数据库 2. 数据库与数据库管理系统 2.1 数据库的相关概念 2.2 数据库与数据 ...

  7. MySQL锁表解决方法(转)

    MySQL锁表解决方法 一.我的处理过程 1.查进程,主要是查找被锁表的那个进程的ID SHOW PROCESSLIST; 2.kill掉锁表的进程ID KILL 10866;//后面的数字即时进程的 ...

  8. mysql 锁表详解

    为了给高并发情况下的MySQL进行更好的优化,有必要了解一下mysql查询更新时的锁表机制. 一.概述 MySQL有三种锁的级别:页级.表级.行级. MyISAM和MEMORY存储引擎采用的是表级锁( ...

  9. MySQL锁机制:高并发场景下该如何保证数据读写的安全性?

    锁!这个词汇在编程中出现的次数尤为频繁,几乎主流的编程语言都会具备完善的锁机制,在数据库中也并不例外,为什么呢?这里牵扯到一个关键词:高并发,由于现在的计算机领域几乎都是多核机器,因此再编写单线程的应 ...

最新文章

  1. 13-flutter 加载图片
  2. 写给程序员的 18 幅对联,你能看懂几个?
  3. Propel项目改为基于TensorFlow.js
  4. DateTimePicker 日期时间选择器报错 Cannot read property ‘getHours‘ of undefined, 无法选中`[__ob_: observer__]`时做判断
  5. web.xml 文件中的配置节的加载顺序
  6. 加入 Git 版本管理(git的基本使用)
  7. Android批量图片加载经典系列——使用二级缓存、异步网络负载形象
  8. android 录像 源代码,android安卓视频录制摄像拍摄源码(测试可用)
  9. 自动网络设计(NAS)Randomly Wired Neural Networks 何凯明团队
  10. vue项目封装腾讯TcPlayer播放器
  11. 比较两个txt文件的差异
  12. WPS for linux 安装及windows字体添加
  13. 2021爱分析·中国人工智能应用趋势报告——新基建助推,人工智能应用迈入新阶段
  14. Cocos Creator人物血条渐变舒缓实现
  15. Sping Cloud专栏:路由Gateway有效避免 Only one connection receive subscriber allowed问题
  16. Vue 钩子函数activated未触发
  17. ROS 2 Humble Hawksbill 环境基础
  18. 快捷餐饮之店家后台OSS文件管理实现
  19. AMBA协议介绍(1)——APB协议
  20. 读书笔记——我的学习与研究经历(杨振宁/2012)

热门文章

  1. 8.1 matlab图形窗口与坐标轴(图形对象的句柄和属性、坐标轴的操作、图形窗口的操作)
  2. 鼠标马赛克图像部分区域
  3. java易语言_java程序员,0基础学习开发易语言。
  4. Mallet Java【Windows下配置】(解决Ant安装可能会失败的解决方案)
  5. 洛谷P2522 [HAOI2011]Problem b(莫比乌斯反演)
  6. 自定义UICollectionView
  7. selenium python (七)层级定位(二次定位)
  8. Codeforces Round #297 (Div. 2)C. Ilya and Sticks 贪心
  9. 云计算平台(检索篇)-Elasticsearch
  10. UA MATH567 高维统计 专题0 为什么需要高维统计理论?——理解稀疏向量与hard-threshold