总结一下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中的锁机制相关推荐
- 【数据库】MySQL中的锁机制
MySQL中的锁机制 数据库锁定机制简单来说,就是数据库为了保证数据的一致性,而使各种共享资源在被并发访问变得有序所设计的一种规则. MySQL 数据库由于其自身架构的特点,存在多种数据存储引擎,每种 ...
- MySQL中的锁机制详细说明
一.MySQL锁机制起步 锁是计算机用以协调多个进程间并发访问同一共享资源的一种机制.MySQL中为了保证数据访问的一致性与有效性等功能,实现了锁机制,MySQL中的锁是在服务器层或者存储引擎层实现的 ...
- 阿里mysql锁_【mysql】mysql中的锁机制
一.分类 MySQL的锁机制不同的存储引擎支持不同的锁机制,分为表级锁.行级锁.页面锁.MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking):BDB存储引擎采用的 ...
- MySQL中的锁机制、MyISAM表锁、MyISAM表级锁争用情况、MyISAM并发插入Concurrent Inserts、MyISAM的锁调度
前言: 关于读锁.写锁.乐观锁.悲观锁.行锁.表锁的理解可以看看以前我写的: 读锁.写锁.乐观锁.悲观锁.行锁.表锁 内部锁:在MySQL服务器内部执行的锁,以管理多个会话对表内容的争用.这种类型的锁 ...
- mysql5.0锁定用户_MySQL系列(五)---总结MySQL中的锁
MySQL中的锁 目录 概述 MyISAM支持表锁,InnoDB支持表锁和行锁,默认为行锁 表级锁:开销小,加锁快,不会出现死锁.锁定粒度大,发生锁冲突的概率最高,并发量最低 行级锁:开销大,加锁慢, ...
- 深入浅出MySQL事务处理和锁机制
深入浅出MySQL事务处理和锁机制 2015-01-13 架构师之旅 1. 事务处理和并发性 1.1. 基础知识和相关概念 1 )全部的表类型都可以使用锁,但是只有 InnoDB 和 BDB 才有内置 ...
- 数据库概述09(数据库中的锁机制)
Innodb中的锁机制 使用数据库的目的在于数据共享,需要考虑数据并发访问问题.解决方案就是锁机制 锁主要包括全局锁.表锁.行锁.乐观锁和悲观锁,需要解决的问题是死锁 存储引擎 存储引擎定义MySQL ...
- MySQL事务分析和锁机制分析
MySQL事务分析和锁机制分析 事务 事务控制语句 目的 组成 特征 概念 redo日志 undo日志 MVCC多版本并发控制Multi version concurrency control ACI ...
- mysql innodb 的锁机制_Mysql之Innodb锁机制详解
InnoDB与MyISAM的最大不同有两点:一是支持事务(TRANSACTION):二是采用了行级锁.关于事务我们之前有专题介绍,这里就着重介绍下它的锁机制. 总的来说,InnoDB按照不同的分类共有 ...
最新文章
- Ajax简单的请求数据以表格的形式渲染到页面
- pandas XLRDError Excel xlsx file; not supported 解决办法
- MySQL-5.5.28编译安装
- Scrum Meeting---Four(2015-10-28)
- git 强制更新远程_版本控制管理工具git的常见指令合集
- Oracle 数据库sql语句查看字符集,PG数据库查询字符集方法
- 【疑问】SD更新凭证流
- Groovy里的运行时元数据编程(metata programming)
- 用python绘制图形_python绘制图形
- 使用NoSQL实现实体服务–第1部分:概述
- Robust Point Cloud Registration Framework Based on Deep Graph Matching (RGM) 简略分析
- C语言 底层IO readwrite
- 记录linq.js神器之gorup by 多个字段的方法
- Facebook F8|闲鱼高级技术专家参会分享
- 基于逻辑回归的评分卡模型简单概述
- x86架构应用如何向Arm架构低成本迁移
- 转载:技术大停滞——范式春梦中的地球工业文明5:台阶前的坑:人类社会的宿命
- Android存储管理
- c++ 中关于引用(1)
- Elasticsearch教程---高亮搜索(十二)
热门文章
- 动态的根据一个资源名获得到对应的资源id
- NETSTAT日常应用归档
- SpockFS —— 基于 HTTP 的文件系统
- 正确重置MySQL密码
- SO做了Booked之后,一直处理于“已延交”,发运事务处理的活动区变灰
- 在silverlight中通过对话框把选择的图片插入到RichTextBox中
- Bitcoin Unlimited发布BCH新版客户端1.5.0.0,包括CTOR和CDSV
- 比特币现金(BCH)的百家争鸣时代
- Django中Mysql数据库的使用
- LeetCode第九题—— Palindrome Number(判断回文数)