今天来简单总结一下MySQL的锁机制,不妥的欢迎拍砖!
1、对于MySQL来说,有三种锁的级别:页级、表级、行级。

页级的典型代表引擎为BDB。
表级的典型代表引擎为MyISAM,MEMORY以及很久以前的ISAM。
行级的典型代表引擎为INNODB。
2、我们实际应用中用的最多的就是行锁了。

行级锁的优点如下:
1)、当很多连接分别进行不同的查询时减小LOCK状态。
2)、如果出现异常,可以减少数据的丢失。因为一次可以只回滚一行或者几行少量的数据。
行级锁的缺点如下:
1)、比页级锁和表级锁要占用更多的内存。
2)、进行查询时比页级锁和表级锁需要的I/O要多,所以我们经常把行级锁用在写操作而不是读操作。
3)、容易出现死锁。
3、MySQL用写队列和读队列来实现对数据库的写和读操作。

对于写锁定如下:
1)、如果表没有加锁,那么对其加写锁定。
2)、否则,那么把请求放入写锁队列中。
对于读锁定如下:
1)、如果表没有加写锁,那么加一个读锁。
2)、否则,那么把请求放到读锁队列中。
当然我们可以分别用low_priority 以及high_priority在写和读操作上来改变这些行为。

4、下面我来一个简单的例子解释上面的说法。

我们来运行一个时间很长的查询
1)、客户端1:
   mysql> select count(*) from content group by content;
   ...
 客户端2:
   mysql> update content set content = 'I love you' where id = 444;
   Query OK, 1 row affected (30.68 sec)
   Rows matched: 1  Changed: 1  Warnings: 0
   用了半分钟。
2)、我们现在终止客户端1。
 此时客户端2:
   mysql> update content set content = 'I hate you' where id = 444;
   Query OK, 1 row affected (0.02 sec)
   Rows matched: 1  Changed: 1  Warnings: 0
 仅仅用了20毫秒。

这个例子很好的说明了读写队列的运行。
对于1中的客户端1,此时表没有加锁,当然也没有加写锁了,那么此时客户端1对表加了一个读锁。
对于1中的客户端2,此时因为表有一个读锁,所以把UPDATE请求放到写锁定队列中。
当读锁释放的时候,也就是SHOW PROCESSLIST中STATUS 为COPY TO TMP TABLE的时候,UPDATE操作开始执行。

5、可以在REPLICATION中对MASTER 和SLAVE运用不同的锁定使系统达到最佳的性能。(当然这个前提是SQL语句都是最优的。)

总结一下MySQL中的锁机制相关推荐

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

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

  2. MySQL中的锁机制详细说明

    一.MySQL锁机制起步 锁是计算机用以协调多个进程间并发访问同一共享资源的一种机制.MySQL中为了保证数据访问的一致性与有效性等功能,实现了锁机制,MySQL中的锁是在服务器层或者存储引擎层实现的 ...

  3. 阿里mysql锁_【mysql】mysql中的锁机制

    一.分类 MySQL的锁机制不同的存储引擎支持不同的锁机制,分为表级锁.行级锁.页面锁.MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking):BDB存储引擎采用的 ...

  4. MySQL中的锁机制、MyISAM表锁、MyISAM表级锁争用情况、MyISAM并发插入Concurrent Inserts、MyISAM的锁调度

    前言: 关于读锁.写锁.乐观锁.悲观锁.行锁.表锁的理解可以看看以前我写的: 读锁.写锁.乐观锁.悲观锁.行锁.表锁 内部锁:在MySQL服务器内部执行的锁,以管理多个会话对表内容的争用.这种类型的锁 ...

  5. mysql5.0锁定用户_MySQL系列(五)---总结MySQL中的锁

    MySQL中的锁 目录 概述 MyISAM支持表锁,InnoDB支持表锁和行锁,默认为行锁 表级锁:开销小,加锁快,不会出现死锁.锁定粒度大,发生锁冲突的概率最高,并发量最低 行级锁:开销大,加锁慢, ...

  6. 深入浅出MySQL事务处理和锁机制

    深入浅出MySQL事务处理和锁机制 2015-01-13 架构师之旅 1. 事务处理和并发性 1.1. 基础知识和相关概念 1 )全部的表类型都可以使用锁,但是只有 InnoDB 和 BDB 才有内置 ...

  7. 数据库概述09(数据库中的锁机制)

    Innodb中的锁机制 使用数据库的目的在于数据共享,需要考虑数据并发访问问题.解决方案就是锁机制 锁主要包括全局锁.表锁.行锁.乐观锁和悲观锁,需要解决的问题是死锁 存储引擎 存储引擎定义MySQL ...

  8. MySQL事务分析和锁机制分析

    MySQL事务分析和锁机制分析 事务 事务控制语句 目的 组成 特征 概念 redo日志 undo日志 MVCC多版本并发控制Multi version concurrency control ACI ...

  9. mysql innodb 的锁机制_Mysql之Innodb锁机制详解

    InnoDB与MyISAM的最大不同有两点:一是支持事务(TRANSACTION):二是采用了行级锁.关于事务我们之前有专题介绍,这里就着重介绍下它的锁机制. 总的来说,InnoDB按照不同的分类共有 ...

最新文章

  1. Ajax简单的请求数据以表格的形式渲染到页面
  2. pandas XLRDError Excel xlsx file; not supported 解决办法
  3. MySQL-5.5.28编译安装
  4. Scrum Meeting---Four(2015-10-28)
  5. git 强制更新远程_版本控制管理工具git的常见指令合集
  6. Oracle 数据库sql语句查看字符集,PG数据库查询字符集方法
  7. 【疑问】SD更新凭证流
  8. Groovy里的运行时元数据编程(metata programming)
  9. 用python绘制图形_python绘制图形
  10. 使用NoSQL实现实体服务–第1部分:概述
  11. Robust Point Cloud Registration Framework Based on Deep Graph Matching (RGM) 简略分析
  12. C语言 底层IO readwrite
  13. 记录linq.js神器之gorup by 多个字段的方法
  14. Facebook F8|闲鱼高级技术专家参会分享
  15. 基于逻辑回归的评分卡模型简单概述
  16. x86架构应用如何向Arm架构低成本迁移
  17. 转载:技术大停滞——范式春梦中的地球工业文明5:台阶前的坑:人类社会的宿命
  18. Android存储管理
  19. c++ 中关于引用(1)
  20. Elasticsearch教程---高亮搜索(十二)

热门文章

  1. 动态的根据一个资源名获得到对应的资源id
  2. NETSTAT日常应用归档
  3. SpockFS —— 基于 HTTP 的文件系统
  4. 正确重置MySQL密码
  5. SO做了Booked之后,一直处理于“已延交”,发运事务处理的活动区变灰
  6. 在silverlight中通过对话框把选择的图片插入到RichTextBox中
  7. Bitcoin Unlimited发布BCH新版客户端1.5.0.0,包括CTOR和CDSV
  8. 比特币现金(BCH)的百家争鸣时代
  9. Django中Mysql数据库的使用
  10. LeetCode第九题—— Palindrome Number(判断回文数)