数据库,高并发,死锁,解决方案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
1文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
数据库,高并发,死锁,解决方案
篇一:读《MySQL性能调优与架构设计》笔记之MySQL 数
据库锁定机制
1. MySQL锁定机制简介
MySQL 各存储引擎使用了三种类型(级别)的锁定机
制:行级锁定,页级锁定和表级锁定。下面我们先分析一下
MySQL 这三种锁定的特点和各自的优劣所在。
? 行级锁定(row-level)
行级锁定最大的特点就是锁定对象的颗粒度很小,也
是目前各大数据库管理软件所实现的锁定颗粒度最小的。由
于锁定颗粒度很小,所以发生锁定资源争用的概率也最小,
能够给予应用程序尽可能大的并发处理能力而提高一些需
要高并发应用系统的整体性能。
虽然能够在并发处理能力上面有较大的优势,但是行
级锁定也因此带来了不少弊端。由于锁定资源的颗粒度很小,
所以每次获取锁和释放锁需要做的事情也更多,带来的消耗
自然也就更大了。此外,行级锁定也最容易发生死锁。 ? 表
级锁定(table-level)
和行级锁定相反,表级别的锁定是MySQL 各存储引擎
中最大颗粒度的锁定机制。该锁定机制最大的特点是实现逻
辑非常简单,带来的系统负面影响最小。所以获取锁和释放
锁的速度很快。由于表级锁一次会将整个表锁定,所以可以
文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
2文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
很好的避免困扰我们的死锁问题。
当然,锁定颗粒度大所带来最大的负面影响就是出现
锁定资源争用的概率也会最高,致使并大度大打折扣。
? 页级锁定(page-level)
页级锁定是MySQL 中比较独特的一种锁定级别,在其
他数据库管理软件中
也并不是太常见。页级锁定的特点是锁定颗粒度介于行
级锁定与表级锁之间,所以获取锁定所需要的资源开销,以
及所能提供的并发处理能力也同样是介于上面二者之间。另
外,页级锁定和行级锁定一样,会发生死锁。
在数据库实现资源锁定的过程中,随着锁定资源颗粒
度的减小,锁定相同数据量的数据所需要消耗的内存数量是
越来越多的,实现算法也会越来越复杂。不过,随着锁定资
源颗粒度的减小,应用程序的访问请求遇到锁等待的可能性
也会随之降低,系统整体并发度也随之提升。
在MySQL 数据库中,使用表级锁定的主要是MyISAM,
Memory,CSV 等一些非事务性存储引擎,而使用行级锁定的
主要是Innodb 存储引擎和NDB Cluster 存储引擎,页级锁
定主要是BerkeleyDB存储引擎的锁定方式。
2. 合理利用锁机制优化MySQL
MyISAM表锁优化建议
对于MyISAM 存储引擎,虽然使用表级锁定在锁定实现
文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
3文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
的过程中比实现行级锁定或者页级锁所带来的附加成本都
要小,锁定本身所消耗的资源也是最少。但是由于锁定的颗
粒度比较到,所以造成锁定资源的争用情况也会比其他的锁
定级别都要多,从而在较大程度上会降低并发处理能力。
所以,在优化MyISAM 存储引擎锁定问题的时候,最关
键的就是如何让其提高并发度。由于锁定级别是不可能改变
的了,所以我们首先需要尽可能让锁定的时间变短,然后就
是让可能并发进行的操作尽可能的并发。
1. 缩短锁定时间
缩短锁定时间,短短几个字,说起来确实听容易的,但
实际做起来恐怕就并不那么简单了。如何让锁定时间尽可能
的短呢?唯一的办法就是让我们的Query 执行时间尽可能
的短。
a)尽两减少大的复杂Query,将复杂Query 分拆成几
个小的Query 分布进行;
b)尽可能的建立足够高效的索引,让数据检索更迅速;
c)尽量让MyISAM 存储引擎的表只存放必要的信息,控
制字段类型; d)利用合适的机会优化MyISAM 表数据文件;
2. 分离能并行的操作
说到MyISAM 的表锁,而且是读写互相阻塞的表锁,可
能有些人会认为在MyISAM 存储引擎的表上就只能是完全的
串行化,没办法再并行了。大家不要忘记了,MyISAM 的存
文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
4文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
储引擎还有一个非常有用的特性,那就是Concurrent Insert
(并发插入)的特性。
MyISAM 存储引擎有一个控制是否打开Concurrent
Insert 功能的参数选项:concurrent_insert,可以设置为
0,1 或者2。三个值的具体说明如下:
a)concurrent_insert=2,无论MyISAM 存储引擎的表
数据文件的中间部分是否存在因为删除数据而留下的空闲
空间,都允许在数据文件尾部进行Concurrent Insert;
b)concurrent_insert=1,当MyISAM 存储引擎表数据
文件中间不存在空闲空间的时候,可以从文件尾部进行
Concurrent Insert;
c)concurrent_insert=0,无论MyISAM 存储引擎的表
数据文件的中间部分是否存在因为删除数据而留下的空闲
空间,都不允许Concurrent
Insert。
3. 合理利用读写优先级
在本章各种锁定分析一节中我们了解到了MySQL 的表
级锁定对于读和写是有不同优先级设定的,默认情况下是写
优先级要大于读优先级。所以,如果我们可以根据各自系统
环境的差异决定读与写的优先级。如果我们的系统是一个以
读为主,而且要优先保证查询性能的话,我们可以通过设置
系统参数选项
文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
5文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
low_priority_updates=1,将写的优先级设置为比读
的优先级低,即可让告诉MySQL 尽量先处理读请求。当然,
如果我们的系统需要有限保证数据写入的性能的话,则可以
不用设置low_priority_updates参数了。
这里我们完全可以利用这个特性,将
concurrent_insert 参数设置为1,甚至如果数据被删除的
可能性很小的时候,如果对暂时性的浪费少量空间并不是特
别的在乎的话,将concurrent_insert 参数设置为2 都可
以尝试。当然,数据文件中间留有空域空间,在浪费空间的
时候,还会造成在查询的时候需要读取更多的数据,所以如
果删除量不是很小的话,还是建议将
concurrent_insert 设置为1 更为合适。 从以上的赋
值说明可以得出,在删除操作不是很多的情况下,可以选用
concurrent_insert =2 ,这样可以增大并发速度,但是会
浪费一部分数据文件的空间,因为中间删除的空隙得不到数
据填充。这个浪费在删除操作较多的情况下是非常可观的,
所以在删除操作较多的情况下应该选用
concurrent_insert =1,当然,假如你的对空间不是特
别在乎,而且能很好的处理备份问题,选用
concurrent_insert =2显然能提高你的MyISAM的并发读写
能力。
Innodb 行锁优化建议
文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
6文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
要想合理利用Innodb 的行级锁定,做到扬长避短,我
们必须做好以下工作: a)尽可能让所有的数据检索都通过
索引来完成,从而(来自: 小 龙 文档网:数据库,高并发,死
锁,解决方案)避免Innodb 因为无法通过索引键加锁而升级
为表级锁定;
b)合理设计索引,让Innodb 在索引键上面加锁的时候
尽可能准确,尽可能的缩小锁定范围,避免造成不必要的锁
定而影响其他Query 的执行;
c)尽可能减少基于范围的数据检索过滤条件,避免因
为间隙锁带来的负面影响而锁定了不该锁定的记录;
d)尽量控制事务的大小,减少锁定的资源量和锁定时
间长度;
e)在业务环境允许的情况下,尽量使用较低级别的事
务隔离,以减少MySQL 因为实现事务隔离级别所带来的附加
成本;
由于Innodb 的行级锁定和事务性,所以肯定会产生死
锁,下面是一些比较常用的减少死锁产生概率的的小建议,
读者朋友可以根据各自的业务特点针对性的尝试:
a)类似业务模块中,尽可能按照相同的访问顺序来访
问,防止产生死锁; b)在同一个事务中,尽可能做到一次
锁定所需要的所有资源,减少死锁产生概率;
c)对于非常容易产生死锁的业务部分,可以尝试使用
文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
7文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
升级锁定颗粒度,通过表级锁定来减少死锁产生的概率;
系统锁定争用情况查询
对于两种锁定级别,MySQL 内部有两组专门的状态变
量记录系统内部锁资源争用情况,我们先看看MySQL 实现的
表级锁定的争用状态变量:
篇二:某系统中有3个并发进程,都需要同类资源4个,
该系统不会发生死锁的最少资
一、整体解读
试卷紧扣教材和考试说明,从考生熟悉的基础知识入
手,多角度、多层次地考查了学生的数学理性思维能力及对
数学本质的理解能力,立足基础,先易后难,难易适中,强
调应用,不偏不怪,达到了“考基础、考能力、考素质”的
目标。试卷所涉及的知识内容都在考试大纲的范围内,几乎
覆盖了高中所学知识的全部重要内容,体现了“重点知识重
点考查”的原则。
1.回归教材,注重基础
试卷遵循了考查基础知识为主体的原则,尤其是考试
说明中的大部分知识点均有涉及,其中应用题与抗战胜利70
周年为背景,把爱国主义教育渗透到试题当中,使学生感受
到了数学的育才价值,所有这些题目的设计都回归教材和中
学教学实际,操作性强。
2.适当设置题目难度与区分度