2022-09-01 mysql/stonedb-多线程并行遍历元组遇到的问题分析

本文针对多线程并行遍历MySQL/StoneDB元组时遇到的问题进行深入分析,包括线程切换后数据丢失的现象、原因探讨以及可能的解决方案。问题主要集中在多线程对同一数据结构的访问,导致的并发控制和数据一致性挑战。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

摘要:

此前的文章中介绍了使用多核cpu去分子集的访问元组并解析数据,以提升访问性能的一般性思想。但是在工程实践中遇到了很多现实性的问题。

本文对遇到的问题做追踪。

数据结构决定算法

采用何种数据结构,决定了所能执行的操作。或者说,就是在设计程序时的数据模型,甚至于说是数学模型,决定了其上的操作。

重提这句话是目的, 在于说明做多线程并行时,困难点不在于线程的任务的包装,而在于更底层的模块中包含的数据,这些数据被封装在不同的类之后,模块的抽象级别和内聚程度。

这决定了在物理存储引擎之上的逻辑层,被限制到了何种程度,以及以何种粒度来使用物理引擎的数据结构。

依赖倒置: 下层决定了上层的逻辑,而非上层决定了下层的逻辑

设计模式的这个原则,目的首先是为了从横向对功能进行分解,其实也很好理解,更下层面临更多的要处理的细节,给上层提供的接口,必然是本层抽象之后的。必须首先对更底层的进行建模,然后逐层抽象,如果直接由上层的逻辑来决定下层模块的内部逻辑,表面上看起来符合问题分解和分治原则,但是现实情况是更上层由于受业务需求影响更大,导致承载的需求变动距离,架构设计层面更多考虑灵活性,这种灵活对于底层的数据模型而言是灾难性的。难以想象由于逻辑层的需求调整࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悟世者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值