写偏斜(Write Skew)和丢失更新(Lost Updates)区别

写偏斜(Write Skew)

写偏斜可以理解为事务commit之前写前提被破坏,导致写入了违反业务一致性的数据,网上有个很好的简称为写前提困境,也就是读出某些数据,作为另一些写入的前提条件,但是在提交前,读入的数据就已被别的事务修改并提交,这个事务并不知道,然后commit了自己的另一些写入,写前提在commit前就被修改,导致写入结果违反业务一致性。

写偏斜发生在写前提与写入目标不相同的情境下

这是业务开发中最容易出错地方,如果开发者不太理解隔离级别,也不知道目前使用的是哪个隔离级别,很可能写出有写偏斜的代码,造成业务不一致。

举个例子:

信用卡系统对不同等级的会员有积分加成,3级会员则每次都3倍积分,同时,会有定时任务检查当积分不满足要求时,就会降级。

首先,会员进行了刷卡消费,此时要计算积分,开启了事务A,读到会员等级为3,与此同时定时任务也开始了,读到会员积分为2800,已经不满足3000分应该降级为2级,然后将会员等级降级为2并且commit,由于事务A读到的等级为3,它还是按照3倍积分为会员增加了积分,会员赚了,多亏那个程序员不理解他使用的事务隔离级别,出现了业务不一致。

丢失更新(Lost Updates)

由于未提交事务之间看不到对方的修改,因此都以一个旧前提去更新同一个数据,导致最后的提交结果是错误值。

假设有支付宝账户X,余额100元,事务A、B同时向X分别充值10元、20元,最后结果应该为130元,但是由于丢失更新,最后是110元。

丢失更新与写偏斜很相似,都是由于写前提被改变,

他们区别是,丢失更新是在同一个数据的最终不一致,而写偏斜的冲突不在同一个数据,在不同数据中的最终不一致

https://zhuanlan.zhihu.com/p/80369623

在进行FPGA SerDes接口设计时,控制时钟偏斜(clock skew数据偏斜(dataskew)是保证数据传输可靠性的重要环节。为了解决这些问题,建议参考以下专业建议: 参考资源链接:[FPGA SerDes深度解析:接口提升与SSN挑战](https://wenku.csdn.net/doc/6471b175543f844488ea3ee4?spm=1055.2569.3001.10343) 1. 对于clock skew,应尽量保证时钟信号在每个接收点都有相同的传播延迟。这可以通过精心设计的PCB布线使用具有不同长度补偿的微带线或带状线来实现。此外,采用差分信号传输方式可以减小clock skew的影响。 2. 而dataskew可以通过源同步技术来处理,即在数据信号旁边同时传输一个时钟信号,以确保数据时钟在接收端对齐。这种方法在处理高速数据传输时尤其有效,因为它有助于解决数据时钟之间可能出现的时间偏差问题。 3. 在设计SerDes接口时,还需要关注信号完整性。例如,可以通过布线布局优化、减少信号路径长度使用更低电感的封装来减少信号干扰噪声。 4. 实施信号预加重去加重技术,可以在数据传输过程中调整信号波形,以补偿高频信号衰减并减少数据间干扰。 5. 通过使用FPGA芯片内的延迟锁环(DLL)或数字延迟调整(DDA)功能,可以精确调整数据时钟的对齐,以消除skew。 6. 使用时钟数据恢复(CDR)技术可以提供一个与数据同步的时钟,进一步减少时钟数据之间的偏差。 通过实施上述技术措施,可以在设计FPGA SerDes接口时有效控制时钟偏斜数据偏斜,从而确保高速数据传输的稳定性可靠性。在深入研究这些技术细节时,可以参考《FPGA SerDes深度解析:接口提升与SSN挑战》这一资料,它将为你提供系统化的理论基础实践经验,帮助你全面掌握高速接口设计的挑战解决方案。 参考资源链接:[FPGA SerDes深度解析:接口提升与SSN挑战](https://wenku.csdn.net/doc/6471b175543f844488ea3ee4?spm=1055.2569.3001.10343)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

软件工程小施同学

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

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

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

打赏作者

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

抵扣说明:

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

余额充值