一种提升MySQL数据库在分布式文件系统中运行性能的方法与流程

文档序号:32443916发布日期:2022-12-06 23:13阅读:72来源:国知局
一种提升MySQL数据库在分布式文件系统中运行性能的方法与流程
一种提升mysql数据库在分布式文件系统中运行性能的方法
技术领域
1.本发明涉及数据库系统技术领域,具体为一种提升mysql数据库在分布式文件系统中运行性能的方法。


背景技术:

2.mysql是一款安全、跨平台、高效的,并与php、java等主流编程语言紧密结合的数据库系统。目前mysql被广泛地应用在internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,使得很多公司都采用mysql数据库以降低成本,mysql5.5开始,默认采用innodb作为存储引擎,它位于mysql架构的第三层,负责对mysql中的数据进行存储和提取,是与文件打交道的子系统,它是根据底层提供的文件访问层抽象接口定制的一种文件访问机制,innodb存储引擎主要分为内存结构和磁盘结构两大部分。
3.分布式文件系统(distributedfilesystem,dfs)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点(可简单的理解为一台计算机)相连;或是若干不同的逻辑磁盘分区或卷标组合在一起而形成的完整的有层次的文件系统,计算机通过文件系统管理、存储数据,而信息爆炸时代中人们可以获取的数据成指数倍的增长,单纯通过增加硬盘个数来扩展计算机文件系统的存储容量的方式,在容量大小、容量增长速度、数据备份、数据安全等方面的表现都差强人意。分布式文件系统可以有效解决数据的存储和管理难题:将固定于某个地点的某个文件系统,扩展到任意多个地点/多个文件系统,众多的节点组成一个文件系统网络,由于分布文件系统具有易扩展,高可用,低成本,弹性存储等特点,越来越多的用户将mysql运行在分布式文件系统之上。
4.开源的文件系统并没有针对mysql数据库场景做特定的优化处理,一次写操作伴随着一次下刷操作,目的是保证数据的安全可靠。而在分布式文件系统中,我们发现下刷数据的操作,是很影响性能的,为此,我们提出了一种提升mysql数据库在分布式文件系统中运行性能的方法。


技术实现要素:

5.针对现有技术的不足,本发明提供了一种提升mysql数据库在分布式文件系统中运行性能的方法,解决了上述背景技术中提出的问题。
6.为实现以上目的,本发明通过以下技术方案予以实现:一种提升mysql数据库在分布式文件系统中运行性能的方法,包括以下步骤:
7.步骤1:客户端向分布式存储数据节点(以下简称oss节点)发送写redolog请求;
8.步骤2:oss节点以直接落盘的方式将数据写入本地磁盘,返回给客户端结果;
9.步骤3:客户端向oss节点发送写bin log请求;
10.步骤4:oss节点将缓冲区bin log数据下刷到磁盘;
11.步骤5:oss节点返回给客户端结果。
12.本发明提供了一种提升mysql数据库在分布式文件系统中运行性能的方法,具备以下有益效果:
13.该提升mysql数据库在分布式文件系统中运行性能的方法,在redolog的写入操作是固定文件内的循环写,io是512字节对齐的。而binlog则是文件的追加写,io不对齐。
14.于是在oss节点写redolog时,直接将文件写改为direct写(也就是数据直接落盘),后续客户端不再需要对其执行数据下刷操作。
15.当oss节点执行binlog写入时,由于io非对齐,不能采用direct写,所以将数据写入缓冲区,然后紧接着执行数据下刷操作,后续客户端也不需要再对其执行数据下刷操作,进而增加速度。
附图说明
16.图1为本发明的流程示意图;
17.图2为本发明现有技术的对比示意图。
具体实施方式
18.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
19.本发明提供一种技术方案:一种提升mysql数据库在分布式文件系统中运行性能的方法,如图1所示:包括以下步骤:
20.步骤1:客户端向分布式存储数据节点(以下简称oss节点)发送写redolog请求;
21.步骤2:oss节点以直接落盘的方式将数据写入本地磁盘,返回给客户端结果;
22.步骤3:客户端向oss节点发送写bin log请求;
23.步骤4:oss节点将缓冲区bin log数据下刷到磁盘;
24.步骤5:oss节点返回给客户端结果。
25.但是在现有技术中,
26.如图2所示,包括以下步骤:
27.①
:客户端向分布式存储数据节点(以下简称oss节点)发送写redolog请求;
28.②
:oss节点把数据写入到本地缓冲中,返回给客户端结果;
29.③
:客户端向oss节点发送下刷redolog数据请求;
30.④
:oss节点将缓冲区redolog数据下刷到磁盘;
31.⑤
:oss节点返回给客户端结果;
32.⑥
:客户端向oss节点发送写binlog请求;
33.⑦
:oss节点把数据写入到本地缓冲中,返回给客户端结果;
34.⑧
:客户端向oss节点发送下刷binlog数据请求;
35.⑨
:oss节点将缓冲区binlog数据下刷到磁盘;
36.⑩
:oss节点返回给客户端结果。
37.综上所述,从图2可以看出,一次写操作伴随着一次下刷操作,目的是保证数据的安全可靠。而在分布式文件系统中,我们发现下刷数据的操作,是很影响性能的,对应步骤中的
③④⑤

⑧⑨⑩
。这其中
③⑤

⑧⑩
是多两次网络延迟,
④⑨
是写盘操作,跟盘的快慢
有直接关系,而在本申请中redolog的写入操作是固定文件内的循环写,io是512字节对齐的。而binlog则是文件的追加写,io不对齐。
38.于是在oss节点写redolog时,直接将文件写改为direct写(也就是数据直接落盘),后续客户端不再需要对其执行数据下刷操作。
39.当oss节点执行binlog写入时,由于io非对齐,不能采用direct写,所以将数据写入缓冲区,然后紧接着执行数据下刷操作,后续客户端也不需要再对其执行数据下刷操作,新方案下,mysql的一次insert写入,节省了一次数据拷贝和两次网络开销,io延迟将会大大缩短。
40.以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。


技术特征:
1.一种提升mysql数据库在分布式文件系统中运行性能的方法,其特征在于:包括以下步骤:步骤1:客户端向分布式存储数据节点(以下简称oss节点)发送写redo log请求;步骤2:oss节点以直接落盘的方式将数据写入本地磁盘,返回给客户端结果;步骤3:客户端向oss节点发送写bin log请求;步骤4:oss节点将缓冲区bin log数据下刷到磁盘;步骤5:oss节点返回给客户端结果。

技术总结
本发明公开了一种提升MySQL数据库在分布式文件系统中运行性能的方法,涉及数据库系统技术领域,包括以下步骤:步骤1:客户端向分布式存储数据节点(以下简称OSS节点)发送写Redo log请求;步骤2:OSS节点以直接落盘的方式将数据写入本地磁盘,返回给客户端结果;步骤3:客户端向OSS节点发送写Bin log请求;步骤4:OSS节点将缓冲区Bin log数据下刷到磁盘;步骤5:OSS节点返回给客户端结果。OSS节点返回给客户端结果。OSS节点返回给客户端结果。


技术研发人员:胡川川 张文涛 李勇 彭德跃
受保护的技术使用者:北京焱融科技有限公司
技术研发日:2022.09.14
技术公布日:2022/12/5
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1