[发明专利]一种用于数据库遍历的方法与设备有效
申请号: | 201710050584.7 | 申请日: | 2017-01-23 |
公开(公告)号: | CN107193857B | 公开(公告)日: | 2021-01-01 |
发明(设计)人: | 刘良友;张远;赵建伟;彭立勋;田英鹤 | 申请(专利权)人: | 阿里巴巴集团控股有限公司 |
主分类号: | G06F16/242 | 分类号: | G06F16/242;G06F16/2455;G06F16/22 |
代理公司: | 上海百一领御专利代理事务所(普通合伙) 31243 | 代理人: | 陈贞健;邵栋 |
地址: | 英属开曼群岛大开*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 用于 数据库 遍历 方法 设备 | ||
本申请的目的是提供一种用于数据库遍历的方法与设备。与现有技术相比,本申请先获取数据库中待遍历的数据表所对应的目标索引,其中,通过所述目标索引进行遍历时的IOPS最小;然后,基于所述目标索引对所述数据表中的各数据块执行块遍历操作,并在遍历所述数据表的过程中,通过确定所述数据表中下一数据块的块尺寸信息来达到精确控制IOPS的目的,提升用户体验。进一步地,本申请在当前数据块为所述数据表中的最后一块时,结束所述数据表的遍历操作,从而避免遍历进入死循环,提升安全性。
技术领域
本申请涉及计算机领域,尤其涉及一种用于数据库遍历的技术。
背景技术
在云数据库场景下,多个用户的数据库实例会占用不同的内存、CPU和IOPS(Input/Output Operations Per Second,每秒进行读写操作的次数,表示访问磁盘的频率)等资源,有时需要遍历用户的数据,一个典型的例子是在MySQL数据库场景下去遍历用户数据检查用户实例的主库和其各个备库是否存在数据不一致。如果是用户去遍历自己的数据,当然在其所购买的资源限制范围内,不会再另行限制,保证用户用够自己的资源;但是如果云计算的提供商想要遍历用户的数据,就必须加以限制,例如,使其访问不超过用户购买资源的指定百分比,而这样的限制是已有的如cgroups等进程级资源限制工具所无法满足的,因为对数据库进行遍历往往是线程级或会话级,且与用户访问是并行的,无法用进程级访问来进行限制。而在数据库遍历的场景下,每次访问的数据量是有限的,且不会有大量的计算,所以占用用户的内存和CPU是极少的,而占用的IOPS资源却是十分明显的。对于云计算的提供商而言,在与用户并行访问数据库时,如何在面对各种规格的云数据库用户以及各种类型的数据库和表时,控制遍历时所用的IOPS,使其被限制在用户所拥有资源的指定百分比内,不影响其他业务,已成为关乎用户体验的重要问题。
为应对该技术问题,现有的工具通常采用如下方法:(1)设置一个最大线程数max-load,当连接到主库并执行SQL的线程数超过该值时,停止检查数据;(2)当检查的表为InnoDB时,设置其锁等待时间为1s,即当用户有引起锁表的SQL时,若锁表超过1s,会产生报警,从而中断检查;(3)设置一个最大块行数,当要检查的块行数超过该值时,跳过检查当前块;(4)通过统计历史平均行数来推测下一块应该的检查行数,这种推测不是表级别的,而是所有表所有分块的平均行数,即通过历史平均行数和上一块的行数加权来判断当前系统性能表现,来决定下一块行数。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于阿里巴巴集团控股有限公司,未经阿里巴巴集团控股有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710050584.7/2.html,转载请声明来源钻瓜专利网。