`
guoxinzz
  • 浏览: 431522 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

MySQL锁表研究

 
阅读更多

杨涛在他的blog中关于MySQL锁表机制的简单总结,列举了各种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的事务,我们会深入探讨事务的定义、ACID属性、事务的相关隔离级别以及事务的执行流程等...

    夏日PHP Mysql留言本 v0.3 bulid2016.zip

    制作目的是一个功能齐全,实用美观,便于嵌入网站的小型留言本,另一个目的是帮助新手用户学习研究使用。 本程序是由夏日博客独立设计完成,源码完全开源免费,程序你可以进行随意修改使用,但如果要进行商业用途,...

    乐观锁悲观锁及事务及行锁表锁

    mysql锁,与事务,以及各种级别锁,和乐观锁悲观锁的研究使用

    精简美观的PHP Mysql留言板 V.01.zip

    本程序是夏日留言本的PHP Mysql版本,版本号是V.01,基于PHP Mysql架构,本留言板源码简单,结构小巧,有独立的后台管理,可进行在线回复,删除,锁定与解锁等功能,而且这个独立的管理后台也可以专门进行研究。...

    MySQL 事务(五).pdf

    锁机制:探讨MySQL中的锁类型和锁争用问题。 死锁处理:如何识别和解决事务中的死锁问题。 事务日志:事务日志的作用和恢复机制。 批量操作和事务:在执行大量数据插入或更新时如何有效使用事务。 分布式事务:涉及...

    MySQL内核:InnoDB存储引擎 卷1.pdf

    《MySQL内核:InnoDB存储引擎 卷1》由资深MySQL专家,机工畅销图书作者亲自执笔,在以往出版的两本InnoDB介绍性图书的基础之上,更深入地介绍InnoDB存储引擎的内核,例如latch、B+树索引、事务、锁等,从源代码的...

    夏日PHP留言本MYSQL版 v0.3.rar

     夏日PHP留言本MYSQL版源另可进行在线回复,删除,锁定、解锁、审核等功能,而且独立的管理后台也可以专门进行研究。制作目的是一个功能齐全,实用美观,便于嵌入网站的小型留言本,另一个目的是帮助新手用户学习...

    夏日PHPMysql留言本v0.3bulid2016

    程序是夏日留言本的PHP Mysql版本,版本号是V0.3,基于PHP Mysql架构,本留言板源码简单,结构小巧,有独立的后台管理,后台可进行设置每页显示留言条数,是否开启留言审核,是否过滤 html 代码等。 另可进行在线...

    MySQL 快速删除大量数据(千万级别)的几种实践方案详解

    笔者最近工作中遇见一个性能瓶颈问题,MySQL表,每天大概新增776万条记录,存储周期为7天,超过7天的数据需要在新增记录前老化。连续运行9天以后,删除一天的数据大概需要3个半小时(环境:128G, 32核,4T硬盘),而...

    MySQL的性能优化及自动化运维实践

    所以我们要去了解缓存/线程、SQL优化、存储引擎以及SQL审计以及锁与实务、体系结构更深一点,就去研究内核原理和源码定制,DBA有这么多工作,他们就像一个小怪兽一样等着我们去解决。今天我站在更加全面的角度跟大家...

    很用心的为你写了 9 道 MySQL 面试题

    MySQL 一直是本人很薄弱的部分,后面会多输出 MySQL 的文章贡献给大家,毕竟 MySQL 涉及到数据存储、锁、磁盘寻道、分页等操作系统概念,而且互联网对 MySQL 的注重程度是不言而喻的,后面要加紧对 MySQL 的研究。...

    PHP+Mysql留言板精简版 v0.1

    摘要:PHP源码,聊天留言,留言板 风格简洁的PHP+Mysql留言板,源码开源免费,操作简易方便,支持的功能有:在线回复,删除,锁定与解锁等功能,便于嵌入网站的小型留言本,另外也可为PHP新手学习研究使用。...

    php和mysql开发的报刊订阅管理系统

    VB+sql房屋的中介管理 VC调度机制对网络QoS影响的研究分析 VB+SQL企业人力资源管理系统 VC+SQL学生成绩管理系统 VB+SQL铁岭香河商贸有限公司销售管理系统 VC人脸识别系统设计 VB+SQL物流管理系统2 VB+SQL物流管理...

    缺陷管理系统。Apache+PHP+MySQL

    VB+sql房屋的中介管理 VC调度机制对网络QoS影响的研究分析 VB+SQL企业人力资源管理系统 VC+SQL学生成绩管理系统 VB+SQL铁岭香河商贸有限公司销售管理系统 VC人脸识别系统设计 VB+SQL物流管理系统2 VB+SQL物流管理...

    DBA的MySQL性能优化及自动化运维实践

    所以我们要去了解缓存/线程、SQL优化、存储引擎、SQL审计以及锁与实务;体系结构更深一点,就去研究内核原理和源码定制。DBA有这么多工作,它们就像一个小怪兽一样等着我们去解决。性能优化让我们的MySQL跑的更快、...

    基于微信小程序的图书馆座位管理系统设计与实现(论文+程序设计+数据库文件)

    2.4mysql数据库介绍 2.5Hbuilder开发工具 2.6章节小结 第3章 图书馆座位预约系统设计 3.1 需求分析 3.2 可行性分析 3.2.1 技术可行性 3.2.2 经济可行性 3.2.3 社会可行性 3.2 学生端系统结构设计 3.3 管理...

Global site tag (gtag.js) - Google Analytics