【技术实现步骤摘要】
本申请涉及数据库领域,具体涉及一种用于对MySQL数据库的并发操作进行控制的方法。本申请同时提供一种用于对MySQL数据库的并发操作进行控制的装置。
技术介绍
MySQL是一个开放源码的关系型数据库管理系统,通过将数据保存在不同的相互关联的数据表中,而不是将所有数据放在一个大仓库内,加快了数据访问速度并提高了灵活性。MySQL支持插件式的多种数据库引擎,其主流是支持事务机制的InnoDB存储引擎,此外还支持MyISAM、BDB、Memory等存储引擎。MySQL数据库的体系结构通常包括两层,第一层为MySQLserver层,在MySQL数据库系统处理底层数据之前的所有工作都是在这一层完成的,包括:客户端身份验证、连接管理、以及针对客户端的数据库操作请求进行解析、优化、查询高速缓存等操作;第二层就是存储引擎层(StorageEngineLayer),也就是底层数据存取操作实现部分,由多种存储引擎共同组成,负责执行数据的存储,读取,索引的建立等操作。通常情况下,来自客户端(例如:上层应用)的数据库操作请求是随机的,因此可能会出现大量请求并发的情况,现有技术针对这种情况通常采用两种方式来保障MySQL数据库的可用性:1)依赖上层应用限流进行保护,例如:当上层应用发现MySQl数据库的响应时间超过预先设置的阈值,则暂停或者减缓与MySQL数据库建立连接并发送数据库操作请求的动作;2)依赖底
【技术保护点】
一种用于对MySQL数据库的并发操作进行控制的方法,其特征在于,包括:接收针对MySQL数据库的数据库操作请求;判断表征MySQL数据库负载压力的指标值是否小于预先设置的第一阈值;若是,继续处理所述数据库操作请求并交由存储引擎执行;若否,结束对所述数据库操作请求的处理。
【技术特征摘要】
1.一种用于对MySQL数据库的并发操作进行控制的方法,其特征在于,
包括:
接收针对MySQL数据库的数据库操作请求;
判断表征MySQL数据库负载压力的指标值是否小于预先设置的第一阈值;
若是,继续处理所述数据库操作请求并交由存储引擎执行;若否,结束对
所述数据库操作请求的处理。
2.根据权利要求1所述的用于对MySQL数据库的并发操作进行控制的方
法,其特征在于,当所述判断表征MySQL数据库负载压力的指标值是否小于预
先设置的第一阈值的结果为“是”时,在继续处理所述数据库操作请求并交由
存储引擎执行之前,执行下述操作:
判断所述数据库操作请求的操作类型是否属于预先设置的第二限流类型中
的一种、且并发线程数目是否不小于预先设置的第二阈值;
当上述两个判断的结果都为“是”时,将对应于所述数据库操作请求的线
程分配到先进先出队列中等待;否则,执行继续处理所述数据库操作请求并交
由存储引擎执行的步骤,并且当所述数据库操作请求的操作类型属于预先设置
的第二限流类型中的一种时,将所述并发线程数目加一;
所述并发线程数目是指,其操作类型属于预先设置的第二限流类型中的一
种、并且被继续处理并交由存储引擎执行的数据库操作请求对应的线程的数目。
3.根据权利要求2所述的用于对MySQL数据库的并发操作进行控制的方
法,其特征在于,所述判断表征MySQL数据库负载压力的指标值是否小于预先
设置的第一阈值具体是指,判断MySQL数据库的threads_running变量的值是否
小于预先设置的第一阈值。
4.根据权利要求3所述的用于对MySQL数据库的并发操作进行控制的方
法,其特征在于,在所述判断MySQL数据库的threads_running变量的值是否小
于预先设置的第一阈值之前,执行下述操作:
判断所述数据库操作请求的操作类型是否属于预先设置的第一限流类型中
的一种;
若否,转到所述判断所述数据库操作请求的操作类型是否属于预先设置的
第二限流类型中的一种、且并发线程数目是否不小于预先设置的第二阈值的步
骤执行。
5.根据权利要求4所述的用于对MySQL数据库的并发操作进行控制的方
法,其特征在于,所述第一限流类型包括:查询操作。
6.根据权利要求5所述的用于对MySQL数据库的并发操作进行控制的方
法,其特征在于,在判断所述数据库操作请求的操作类型是否属于预先设置的
第一限流类型中的一种之前,执行下述操作:
判断所述数据库操作请求是否满足下述三个条件中的任意一个,若是,则
转到所述判断所述数据库操作请求的操作类型是否属于预先设置的第二限流类
型中的一种、且并发线程数目是否不小于预先设置的第二阈值的步骤执行:
所述数据库操作请求的发起方具有对数据库操作的超级权限;
所述数据库操作请求涉及操作所属的数据库事务已经启动;
所述数据库操作请求的操作类型是事务提交或者事务回滚中的一种。
7.根据权利要求3-6任一所述的用于对MySQL数据库的并发操作进行控
制的方法,其特征在于,所述第二限流类型包括:查询操作、插入操作、更新
操作和删除操作。
8.根据权利要求3-6任一所述的用于对MySQL数据库的并发操作进行控
制的方法,其特征在于,在判断所述数据库操作请求的操作类型是否属于预先
设置的第二限流类型中的一种、且并发线程数目是否不小于预先设定的第二阈
值时,首先执行下述操作:
判断所述数据库操作请求是否满足下述三个条件中的任意一个,若是,则
转到所述继续处理所述数据库操作请求并交由存储引擎执行的步骤执行:
所述数据库操作请求的发起方具有对数据库操作的超级权限;
所述数据库操作请求涉及操作所属的数据库事务已经启动;
所述数据库操作请求的操作类型为事务提交、事务回滚、或者数据定义语
言涉及的数据库操作中的一种。
9.根据权利要求3-6任一所述的用于对MySQL数据库的并发操作进行控
制的方法,其特征在于,所述数据库操作请求经由存储引擎执行完毕后,依次
唤醒所述先进先出队列中的等待线程继续处理所述线程对应的数据库操作请求
并交由存储引擎执行。
10.根据权利要求9所述的用于对MySQL数据库的并发操作进行控制的方
\t法,其特征在于,还包括:
监测每个线程在所述先进先出队列中的等待时间;
当所述等待时间大于预先设置的等待阈值时,向与该线程对应的数据库操
作请求的发起方返回拒绝执行的应答,并终止该线程的运行。
11.根据权利要求9所述的用于对MySQL数据库的并发操作进行控制的方
法,其特征在于,所述先进先出队列为多个,需要进入等待状态的线程依次被
分配到不同的先进先出队列中。
12.根据权利要求2所述的用于对MySQL数据库的并发操作进行控制的方
法,其特征在于,在所述接收数据库操作请求的步骤后,首先执行下述操作:
判断所述预先设置的第一阈值是否为零;若是,将所述预先设置的第一阈
值设置为MySQL数据...
【专利技术属性】
技术研发人员:黄欢欢,
申请(专利权)人:阿里巴巴集团控股有限公司,
类型:发明
国别省市:开曼群岛;KY
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。