读《mysql性能调优与架构设计》笔记之mysql数据库锁定机制

读《mysql性能调优与架构设计》笔记之mysql数据库锁定机制

ID:33772519

大小:62.11 KB

页数:7页

时间:2019-03-01

读《mysql性能调优与架构设计》笔记之mysql数据库锁定机制_第1页
读《mysql性能调优与架构设计》笔记之mysql数据库锁定机制_第2页
读《mysql性能调优与架构设计》笔记之mysql数据库锁定机制_第3页
读《mysql性能调优与架构设计》笔记之mysql数据库锁定机制_第4页
读《mysql性能调优与架构设计》笔记之mysql数据库锁定机制_第5页
资源描述:

《读《mysql性能调优与架构设计》笔记之mysql数据库锁定机制》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、1.MySQL锁定机制简介MySQL各存储引擎使用了三种类型(级别)的锁定机制:行级锁定,页级锁走和表级锁定。下面我们先分析一下MySQL这三种锁定的特点和各自的优劣所在。•行级锁定(row-level)行级锁定最大的特点就是锁定对象的颗粒度很小,也是目前各大数据库管理软件所实现的锁定颗粒度最小的。由于锁定颗粒度很小,所以发生锁定资源争用的概率也最小,能够给予应用程序尽可能大的并发处理能力而提高一些需要高并发应用系统的整体性能。虽然能够在并发处理能力上面有较大的优势,但是行级锁定也因此带来了不少

2、弊端。由于锁走资源的颗粒度很小,所以每次获取锁和释放锁需要做的事情也更多,带来的消耗自然也就更大了。此外,行级锁定也最容易发生死锁。•表级锁定(tab丄e—丄evel)和行级锁定相反,表级别的锁定是MySQL各存储引擎中最大颗粒度的锁定机制。该锁定机制最大的特点是实现逻辑非常简单,带来的系统负面影响最小。所以获取锁和释放锁的速度很快。由于表级锁一次会将整个表锁定,所以可以很好的避免困扰我们的死锁问题。当然,锁走颗粒度大所带来最大的负面影响就是岀现锁走资源争用的概率也会最高,致使并大度大打折扣。•

3、页级锁定(page-level)页级锁定是MySQL中比较独特的一种锁定级别,在其他数据库管理软件中也并不是太常见。页级锁定的特点是锁定颗粒度介于行级锁定与表级锁之间,所以获取锁走所需要的资源开销,以及所能提供的并发处理能力也同样是介于上面二者之间。另外,页级锁定和行级锁定一样,会发生死锁。在数据库实现资源锁定的过程中,随着锁定资源颗粒度的减小,锁定相同数据量的数据所需要消耗的内存数量是越来越多的,实现算法也会越来越复杂。不过,随着锁定资源颗粒度的减小,应用程序的访问请求遇到锁等待的可能性也会随

4、之降低,系统整体并发度也随之提升。在MySQL数据库中,使用表级锁定的主要是MyISAM,MemoryzCSV等一些非事务性存储引擎,而使用行级锁定的主要是irmodb存储引擎和NDECluster存储引擎,页级锁走主要是Berke丄eyDB存储引擎的锁走方式。2.合理利用锁机制优化MySQL2.1.MylSAM表锁优化建议对于MyTSAM存储引擎,虽然使用表级锁定在锁定实现的过程中比实现行级锁定或者页级锁所带来的附加成本都要小,锁定本身所消耗的资源也是最少。但是由于锁定的颗粒度比较到,所以造成

5、锁定资源的争用情况也会比其他的锁走级别都要多,从而在较大程度上会降低并发处理能力。所以,在优化MylSAM存储引擎锁定问题的时候,最关键的就是如何让其提高并发度。由于锁走级别是不可能改变的了,所以我们首先需要尽可能让锁走的时间变短,然后就是让可能并发进行的操作尽可能的并发。1.缩短锁定时间缩短锁定时间,短短几个字,说起来确实听容易的,但实际做起来恐怕就并不那么简单了。如何让锁定时间尽可能的短呢?唯一的办法就是让我们的Query执行时间尽可能的短。△)尽两减少大的复杂Query,将复杂Query分

6、拆成几个小的Query分布进行;b)尽可能的建立足够高效的索引,让数据检索更迅速;c)尽量让MyISAM存储引擎的表只存放必要的信息z控制字段类型;d)利用合适的机会优化MyISAM表数据文件;1.分离能并行的操作说到MyISAM的表锁,而且是读写互相阻塞的表锁,可能有些人会认为在MyISAM存储引擎的表上就只能是完全的串行化,没办法再并行了。大家不要忘记了,MyISAM的存储弓摩还有一个非常有用的特性z那就是Concu"entInsert(并发插入)的特性。MyTSAM存储引擎有一个控制是否打

7、开ConcurrentInsert功能的参数选项:concurrent_insert,可以设置为0,1或者2。三个值的具体说明如下:a)concurrent_insert=2,无论MyISAM存储引擎的表数据文件的中间部分是否存在因为删除数据而留下的空闲空间,都允许在数据文件尾部进行ConcurrentInsert;b)concurrent_insert=l,当MyTSAM存储引擎表数据文件中间不存在空闲空间的时候/可以从文件尾咅B进行CorecurrentInsert;c)concurrent

8、_insert=0,无论MyISAM存储引擎的表数据文件的中间部分是否存在因为删除数据而留下的空闲空间z都不允许ConcumntInsert。3・合理利用读写优先级在本章各种锁定分析一节中我们了解到了MySQL的表级锁定对于读和写是有不同优先级设定的,默认情况下是写优先级要大于读优先级。所以,如果我们可以根据各自系统环境的差异决定读与写的优先级。如果我们的系统是一个以读为主,而且要优先保证查询性能的话,我们可以通过设置系统参数选项low_priority_updates=l,的优先级设置为比读的

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。