MySQL集群 堆机器提高性能_优化用于分布式数据库中间件取数的方法、系统及设备与流程...

本发明涉及数据库中间件,尤其涉及优化用于分布式数据库中间件取数的方法、系统及设备。

背景技术:

随着互联网业务量飞速发展,数据量猛增,单机MySQL无法满足互联网业务性能需求。同时scale-up方案通过提升硬件配置来提高性能,其方案昂贵,也只能满足一段时间业务量,无法从根本上解决问题,业界采用scale-out方案,通过将数据进行水平拆分,让数据均衡到后台多台MySQL机器中,通过增加机器来提升整个MySQL集群并发计算能力,来满足互联网快速发展的需求,其技术手段是分库分表,其中以MyCat为代表的分布式中间件技术最为典型。

然而,在使用MyCat过程中,并不支持ETL平台拉取海量数据,拉取时报OOM错误,然后MyCAT直接重启。

技术实现要素:

为了解决上述技术问题,本发明提出一种优化用于分布式数据库中间件取数的方法、系统及设备,其技术方案为:

优化用于分布式数据库中间件取数的方法,包括步骤:

以堆外内存加磁盘为存储媒介建立内存管理模型。

将所述堆外内存分成两块,其中一块用来存放所有对象完整的二进制数据,另一块用来存放指向所述对象完整的二进制数据的指针以及定长8 byte的序列化后的key。

优化用于分布式数据库中间件取数的系统,包括内存管理模型,所述内存管理模型以堆外内存加磁盘为存储媒介。

优化用于分布式数据库中间件取数的设备,包括存储有计算机程序的计算机可读介质,所述程序被运行用于执行:以堆外内存加磁盘为存储媒介建立内存管理模型。

本发明的有益效果是:利用Java堆外内存加磁盘文件的模式建立内存管理模型,能够支持ETL平台拉取海量数据。将实际的数据和指针加定长key分开存放有两个目的:第一,交换定长块(key+pointer)更高效,不用交换真实的数据也不用移动其他key和pointer。第二,这样做是缓存友好的,因为key都是连续存储在内存中的,可以大大减少cache miss。

附图说明

图1示出了根据本申请的实施例的以堆外内存加磁盘文件的模式建立的内存管理模型。

图2示出了根据本申请的实施例的拉取海量数据的工作过程示意图。

具体实施方式

为了更好的了解本发明的技术方案,下面结合附图1对本发明作进一步说明。

优化用于分布式数据库中间件取数的方法,包括步骤:

利用Java堆外内存加磁盘文件的模式建立内存管理模型,所述内存管理模型能够支持ETL平台拉取海量数据。

其中MyCat-X为能够支持ETL平台拉取海量数据的分布式数据库中间件。即为根据本发明技术方案对现有的MyCat进行改进后所获取的新的分布式数据库中间件,是基于社区MyCat基础做了二次开发,重新命名为MyCat-X。

MyCat-X的内存管理模型设计为:使用堆外内存+磁盘文件方式支持ETL拉取海量数据能力。

逻辑地址由一个64bits的long表示,地址的高13bits表示页编号,低51bits表示在改页内部的偏移。映射的过程,实际就是根据页编号去查询页表,然后得到该页的物理地址,然后在物理页地址上加上偏移就得到内存物理地址(这里说的虚拟和物理是在应用层面上进行的又一次抽象,不同于os的虚拟和物理地址,但是思想是一致的)。

如图1所示,MyCat-X支持ETL拉取海量数据的框架为:

从图1中可以得知,将整个内存区域分为二块,一块用来存放所有对象完整的二进制数据,另一块区域用来存放指向完整二进制数据的指针以及定长8byte的序列化后的key(key+pointer)。如果需要序列化的key是个变长类型,如String,则会取其前缀序列化。

将实际的数据和指针加定长key分开存放有两个目的。第一,交换定长块(key+pointer)更高效,不用交换真实的数据也不用移动其他key和pointer。第二,这样做是缓存友好的,因为key都是连续存储在内存中的,可以大大减少cache miss。

排序的关键是比大小和交换。Mycat,会先用8byte prefix sort key比大小,这样就可以直接用二进制的8byte prefix sort key比较而不需要反序列化出整个row。因为prefix sort key是定长的,所以如果prefix sort key相同(或者没有提供二进制key),那就必须将真实的row二进制数据反序列化出来,然后再做递归多排序关键col比较。之后,只需要交换key+pointer就可以达到排序的效果,真实的数据不用移动。

最后,访问排序后的数据,可以沿着排好序的key+pointer区域(longArray)顺序访问,通过pointer找到对应的真实二进制数据,写回Mycat Client或者磁盘中屏蔽分布式事务。

如图2所示为根据本申请的实施例的拉取海量数据的工作过程示意图。如图所示,相较于现有的模型:所以利用内存加磁盘实现大容量存储,解决堆外内存不够时将数据写入磁盘,以释放堆外内存。同时,该种处理方式还具备两个优点:第一,交换定长块(key+pointer)更高效,不用交换真实的数据也不用移动其他key和pointer。第二,这样做是缓存友好的,因为key都是连续存储在内存中的,可以大大减少cache miss。

优化用于分布式数据库中间件取数的系统,包括内存管理模型,所述内存管理模型以堆外内存加磁盘为存储媒介。

优化用于分布式数据库中间件取数的设备,包括存储有计算机程序的计算机可读介质,所述程序被运行用于执行:以堆外内存加磁盘为存储媒介建立内存管理模型。

以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值