一种数据库的分库分表方法及数据库系统技术方案

技术编号:39677735 阅读:22 留言:0更新日期:2023-12-11 18:55
本申请公开了一种数据库的分库分表方法及数据库系统,包括,

【技术实现步骤摘要】
一种数据库的分库分表方法及数据库系统


[0001]本申请涉及数据库
,尤其涉及一种数据库的分库分表方法及数据库系统


技术介绍

[0002]现有的分库分表方案,需要先获取应用程序执行的
SQL
语句,进行解析,然后通过图谱交集比对计算等一系列操作后,才得到合适的分库分表方案,实现过程较为复杂,会消耗很大的系统内存,同时成本较高,反应速度慢,不能保证
SQL
执行性能,从而也不能保证应用系统性能

[0003]在高并发情况下,会造成
IO
读写频繁,相继会造成数据库读写缓慢,甚至是宕机,当数据库中的数据量非常庞大的时候,也会造成查询非常缓慢,给应用系统使用造成了很大的影响


技术实现思路

[0004]本申请实施例提供一种数据库的分库分表方法及数据库系统,用以在保证应用系统稳定运行的前提下,提高数据库和应用系统的性能

[0005]本申请实施例提供一种数据库的分库分表方法,包括:利用预先定义的分库分表方案进行分库分表,所述分库分表方案包括
SQL
解析
、SQL
路由
、SQL
改写
、SQL
执行

以及结果归并,其中,
[0006]SQL
解析,对接收的第一
SQL
语句进行分解,得到不可再分的原子符号;
[0007]SQL
路由,基于所述原子符号,解析上下文匹配数据库和表的分片策略,生成
SQL
路由路径,根据生成的
SQL
路由路径将相应逻辑表的数据操作映射到对应的数据库节点,其中一个数据库节点至少设置有一个底层数据库;
[0008]SQL
改写,将第一
SQL
语句改写为可在真实数据库中正确执行的第二
SQL
语句;
[0009]SQL
执行,将
SQL
路由路径和改写的第二
SQL
语句发送至底层数据库执行;
[0010]结果归并,将从各个数据库节点获取的多数据结果集进行合并,得到完整的结果集,以完成分库分表

[0011]可选的,
SQL
解析,分解所述第一
SQL
语句是根据不同数据库的字典

表达式和关键字来实现的

[0012]可选的,
SQL
路由生成的
SQL
路由路径,用以访问相应的数据表的数据

[0013]可选的,
SQL
改写,具体包括:
[0014]根据所述第一
SQL
语句分解的原子符号,确定所述第一
SQL
语句的分片键;
[0015]基于所述分片键,以及
SQL
路由路径相应的路由目标,将第一
SQL
语句改写为第二
SQL
语句

[0016]可选的,
SQL
执行具体包括:
[0017]将所述的
SQL
路由路径和改写的第二
SQL
语句并发发送至底层数据库,并根据当前
数据库节点服务器的内存占用情况进行执行

[0018]可选的,在得到完整的结果集之后,还包括,将获得的结果集进行封装为逐条访问的数据结果集,并返回

[0019]本申请实施例还提出一种数据库系统,包括处理器和存储器,所述存储器上存储有计算机程序,所述计算机程序被处理器执行时实现如前述的数据库的分库分表方法的步骤

[0020]本申请实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如前述的数据库的分库分表方法的步骤

[0021]本申请实施例通过的分库分表方法能够在保证应用系统稳定运行的前提下,提高数据库和应用系统的性能

[0022]上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的

特征和优点能够更明显易懂,以下特举本申请的具体实施方式

附图说明
[0023]通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了

附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制

而且在整个附图中,用相同的参考符号表示相同的部件

在附图中:
[0024]图1为本申请实施例的分库分表方法的分库分表方案示意;
[0025]图2为本申请实施例的分库分表方法的基本流程示意

具体实施方式
[0026]下面将参照附图更详细地描述本公开的示例性实施例

虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制

相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员

[0027]本申请实施例提供一种数据库的分库分表方法,包括:利用预先定义的分库分表方案进行分库分表

[0028]本申请实施例提出数据库的分库分表方案,在通过事先设定的分库分表方案进行分库分表,提高
SQL
执行效率,同时提高应用系统的运行性能

如图1所示,本申请实施例的方法中分库分表方案可以分为两种垂直拆分和水平拆分

垂直拆分用以将一个数据库的数据拆分到多个数据库中,例如将业务库拆分成商品库

订单库

用户库等三个数据库,这样应用系统可以做微服务,每块业务可以单独部署,互不影响;同样也可以根据业务维度将一张大数据量表拆分成多张子表,每张子表的结构都不一样,每张子表都包含部分字段,例如用户表,可以根据用户的性别

住址

爱好等维度拆分三张子表

[0029]水平拆分用以当数据库中某些表的数据量大了之后,根据时间

地区或者某个业务键维度将数据分为多张不同的表中进行存储,每张表的表结构一致,最后通过
SQL
路由访问不同表的数据

[0030]如图2所示,所述分库分表方案具体包括
SQL
解析
、SQL
路由
、SQL
改写
、SQL
执行

以及结果归并,其中,
[0031]SQL
解析,对接收的第一
S本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种数据库的分库分表方法,其特征在于,包括:利用预先定义的分库分表方案进行分库分表,所述分库分表方案包括
SQL
解析
、SQL
路由
、SQL
改写
、SQL
执行

以及结果归并,其中,
SQL
解析,对接收的第一
SQL
语句进行分解,得到不可再分的原子符号;
SQL
路由,基于所述原子符号,解析上下文匹配数据库和表的分片策略,生成
SQL
路由路径,根据生成的
SQL
路由路径将相应逻辑表的数据操作映射到对应的数据库节点,其中一个数据库节点至少设置有一个底层数据库;
SQL
改写,将第一
SQL
语句改写为可在真实数据库中正确执行的第二
SQL
语句;
SQL
执行,将
SQL
路由路径和改写的第二
SQL
语句发送至底层数据库执行;结果归并,将从各个数据库节点获取的多数据结果集进行合并,得到完整的结果集,以完成分库分表
。2.
如权利要求1所述的数据库的分库分表方法,其特征在于,
SQL
解析,分解所述第一
SQL
语句是根据不同数据库的字典

表达式和关键字来实现的
。3.
如权利要求1所述的数据库的分库分表方...

【专利技术属性】
技术研发人员:邱如如苗健吕新杰
申请(专利权)人:瀚高基础软件股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1