前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >内存数据库的自动优化怎么做?

内存数据库的自动优化怎么做?

原创
作者头像
定向
修改2022-08-24 16:57:48
7240
修改2022-08-24 16:57:48
举报
文章被收录于专栏:IT科技

以柏睿数据内存分布式数据库RapidsDB来说明的话,自动优化体现在2个阶段:数据入库过程和数据入库后。我这里重点分享一下数据入库后。

基本实现手段如下:我们都知道如果表中的行在所有行段中都是全局排序的,那么列式表的性能最好。实际上,在连续写入的情况下,维持这样的顺序是极难的。

RapidsDB使用了一种高级的算法,允许它在新增或更新数据时尽可能保持有序。这个过程被称为background merger,并且为使行段的数据顺序能够得到持续优化,则该过程会一直在后台自动运行。

当background merger在运行过程中,在库内数据被增删改等改变时,它会停止到当前任务并且重新开始。鉴于每次只处理一小块行段数据,所以被停止的任务影响的只是少量的数据。只有在大量的更新工作负载下,重新排序处理效率才会显著减慢,这是因为另一个机制pessimistic merger会锁定当前正在处理的行段。用户也可以通过运行命令OPTIMIZE TABLE手动触发pessimistic merger。我们将在下面解释如何决定是否有必要进行该指令,并如何运行它。

RapidsDB使用sorted row segment group(排序行段组)的概念来描述参与排序的一组行段。即行段重新排序的过程,并且对于一个行段而言,其最小的行号不小于其之前的任何行段中最大的行号,则这些行段形成排序的行段组。这里所描述的一行比另一行小,是代表该行的CLUSTERED COLUMNSTORE键的列值比另一行的列值小。

如果数据有一个完美的全局顺序,它将由一个排序的行段组组成。如果刚入库的原始数据是以完全随机的顺序排列的,那么它会包含与行段一样多的排序行段组。background merger的任务逻辑就是重新组织行段之间的行,即尽量减少排序的行段组的数量。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
分布式数据库 TDSQL
分布式数据库(以下简称 TDSQL)是腾讯打造的一款企业级数据库产品,具备强一致高可用、全球部署架构、高 SQL 兼容度、分布式水平扩展、高性能、完整的分布式事务支持、企业级安全等特性,同时提供智能 DBA、自动化运营、监控告警等配套设施,为客户提供完整的分布式数据库解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档