YashanDB混合存储揭秘:行式存储如何为高效TP业务保驾护航(下)

2023-09-22 11:02:46

上一篇文章https://mp.weixin.qq.com/s/mQLzi2PSZxqwwACSsq49ng为大家讲述了行式存储中事务并发控制的关键设计和优化。YashanDB采用了In-place Update 的块级 MVCC,能极大提高事务并发处理能力。本篇文章,我们将会详解插入性能优化和宽行存储的设计。


插入性能优化

YashanDB行式存储主要从提供并发度、批量化处理以及减少日志产生三方面对事务处理过程中的插入性能进行了优化:

1

提高并发度

单线程插入的速度是有限的,在资源充足的场景下,我们希望通过增加线程来提高导入数据的速度。由于数据块不能同时写入,如果两个线程要在同一个数据块上插入数据,就会产生等待。因此我们希望多个线程插入数据的时候,尽量离散到不同的数据块上。

YashanDB对空闲空间管理进行了深度优化,通过引入多候选数据块机制,减少了空间搜索次数,有效提升了并发场景下的空闲空间查找效率。通过数据块智能分配机制,将数据块根据不同实例、不同会话进行散列,降低数据块冲突,有效提升了并发度。


2

批量插入

如果插入数据时,选择一条一条插入会产生多次重复工作,每插入一条数据,就要写一次数据块、一条Redo、一条Undo, 因此我们将多行数据合并,一次写入数据块,同时合并Redo、 Undo,减少写操作的次数,Redo、Undo合并也可以减少Redo/Undo的头信息占用的空间。


3

Nologging

YashanDB通过记录Redo日志来保证事务持久性,通过记录Undo日志来实现事务并发控制,但是对于离线数据迁移场景,数据完整性可以通过其他机制保证,但如果继续产生大量的Redo和Undo对迁移的性能影响非常严重。


对于这种场景,YashanDB提供了一种简单高效的Nologging导入方式,极大的减少了Redo和Undo产生量,并通过全量检查点保证数据的持久性。


行存储结构


YashanDB的单行最大长度远大于单个数据块的大小,因此需要将单行存储在不同的数据块上。同时在update操作时,原始的行有可能会变长,导致当前数据块没有足够的存储空间,需要分配分配新的空间。YashanDB针对宽行设计了行链接、行迁移机制:

1

行迁移

当行数据经过Update变大,有可能行所在数据块的空闲空间不足,需要将行数据迁移到另一个数据块,原位置保留一个行头。 33abd9684bf7a7f373b9b004d4520be6.jpeg

图4 行迁移机制

2

行链接

当行长度超过单个数据块的最大容量时会将行切分成多个分片,存储在不同的数据块上。

5d2f60205dcc39d03e5c760165629f2d.jpeg

图5 行链接机制

行的每个分片可以单独修改,分片在行数据发生变化后,也可以自动收缩,这样在操作宽行时可以按需访问,有效 保证了宽行数据的访问处理性能。


总结

YashanDB采用了细粒度并发控制、免锁事务优化等先进技术,进行了高效的行式存储设计,能够实现快速查询、数据一致性以及高效的数据访问,这对于数据库系统的性能和可靠性具有极其重要的意义。
未来YashanDB将从数据压缩、数据分层存储、行列混合计算等方面优化行式存储能力,进一步提升数据库事务处理能力以及混合负载能力,降低数据存储成本,提高数据处理性能。



更多推荐

NK试剂盒使用注意事项及NK细胞培养攻略

NK细胞自然杀伤细胞(Naturalkillercell,NK细胞),是除T细胞、B细胞之外的第三大类淋巴细胞,不表达T细胞和B细胞所特有的膜表面分子。无需抗原的预先刺激与活化即可直接杀伤被病毒感染的自身细胞或肿瘤细胞,与抗肿瘤、抗感染和免疫调节有关,是固有免疫最重要的组成成分之一。NK细胞大概约占外周血淋巴细胞的10

MongoDB性能分析

mongostatmongostat是mongdb自带的状态检测工具,在命令行下使用。它会间隔固定时间获取mongodb的当前运行状态,并输出。如果你发现数据库突然变慢或者有其他问题的话,你第一手的操作就考虑采用mongostat来查看mongo的状态。它的输出有以下几列:inserts/s:每秒插入次数query/s

nvm下载安装教程

前言nvm官网地址:https://nvm.uihtm.com一、nvm下载进入nvmgithub地址,下载最新版本:https://github.com/coreybutler/nvm-windows/releases点击选择当前最新版本。滑动到底部,点击nvm-setup.exe下载安装文件。接受,下一步。选择nv

中国式现代化落地社区的“3510”模式示范点在烟台正式启动

第一个中国式现代化落地社区(村居)、家庭和养老(托幼)的“3510”模式示范点——烟台市莱山区迎春佳苑智慧社区、智慧家庭、智慧养老综合服务中心于9月16日正式启动!山东省人大城环委原副主任委员尚龙江,淄博市卫健委原主任、二级巡视员宋晓东,烟台市民政局局长卢国栋,莱山区区委书记罗建,莱山区区长蒋海华,河北省山东商会副会长

使用postman做接口测试

1.接口测试:针对软件对外提供服务的接口的输入输出进行测试,以及接口间相互逻辑的测试,验证接口功能与接口描述文档的一致性2.接口测试流程:1)获取接口信息:通过接口文档或抓包来获取接口的基本调用方式和返回,抓包可以通过fiddler、charles或者chrome的开发者工具等2)接口测试用例设计:根据获取到的接口信息

PMP考试备考:两个月时间足够吗?

PMP(ProjectManagementProfessional)认证是全球范围内最受认可的项目管理专业资格之一。对于想要提升项目管理技能和职业发展的人来说,PMP认证是一个重要的里程碑。然而,很多人担心备考时间不足以充分准备PMP考试。那么,两个月的备考时间足够吗?答案并不是简单的肯定或否定。两个月的备考时间对于P

Bigemap如何添加mapbox图源?

会使用到的工具bigemapgisoffice,下载链接:BIGEMAPGISOffice-全能版打开软件,要提示需要授权和添加地图,然后去点击选择地图这个按钮,列表中有个添加按钮点进去选择添加地图的方式。第一种方式:通过地图配置文件批量解析添加地图第二种方式:通过以下在线地图的网址输入添加。mapbox:https:

爆款产品的秘诀:海外网红营销策略

近年来,随着社交媒体的兴起和全球互联网的普及,海外网红营销已成为一种极具影响力的市场推广方式。通过与知名网红合作,企业可以迅速将其产品或服务推向国际市场,实现爆款产品的目标。本文Nox聚星将和大家深入探讨海外网红营销打造爆款产品的原理,以及如何通过这一策略来创造成功的爆款产品。1、网红的选择要打造爆款产品,首先要选择合

ai智能生成文章-智能生成文章软件

您是否曾为创作内容而感到头疼不已?是否一直在寻找一种能够帮助您轻松生成高质量文章的解决方案?什么是AI智能生成文章,特别是147SEO智能原创文章生成。这是一种先进的技术,利用人工智能和自然语言处理,能够自动生成各种类型的文章。这包括了新闻报道、博客文章、产品描述、营销内容等等。这项技术的妙处在于,它可以帮助您在几分钟

python抠图(去水印)开源库lama-cleaner入门应用实践

1.关于LamaCleanerLamaCleaner是由SOTAAI模型提供支持的免费开源图像修复工具。可以从图片中移除任何不需要的物体、缺陷和人,或者擦除并替换(poweredbystablediffusion)图片上的任何东西。特征:完全免费开源,完全自托管,支持CPU&GPU&M1/2Windows一键安装程序本

六、决策树算法(DT,DecisionTreeClassifier)(有监督学习)

决策树(DT)是一种用于分类和回归的非参数监督学习方法。其目标是创建一个模型,通过学习从数据特征中推断出的简单决策规则来预测目标变量的值。一棵树可以看作是一个片断常数近似值。一、算法思路具体可参考博文:七、决策树算法和集成算法基尼系数Gini:衡量选择标准的不确定程度;说白了,就是越不确定Gini系数越高需要选择最小的

热文推荐