文末有礼品,千万别错过
预写日志写入过程中
常出现锁争用问题
影响写入效率
Vastbase只需两步
轻松缓解锁争用问题
点击 一探究竟
STEP 1
引入免锁的CAS操作
Vastbase首先通过引入CAS操作来避免锁争用,CAS(Compare-And-Swap)是一种原子操作,它允许线程在无需加锁的情况下,安全地修改数据库中的数据。
当线程想要修改数据库中的某个值时,CAS会确认当前值是否与预期值相等,若相等,则会将当前值变更为新值,CAS操作成功;若不相等,则会返回重新计算,便于后续的重试。
这样一来,Vastbase就巧妙地绕开了锁争用的泥潭,让数据库操作更加流畅。
加入CAS操作前后对比(以WAL机制为例)
虽然利用CAS替换了自旋锁
但在冲突很高的情况下
CAS操作耗时还是会非常长
这就来到了第二步
STEP 2
引入WAL分组写入机制
Vastbase引入WAL分组写入机制来降低CAS操作发生冲突的可能,WAL(Write-Ahead Logging)即预写日志系统。
当事务生成日志后,会首先加入到写入组。第一个加入组的线程成为Leader,后续的加入者成为Follower。
Leader负责处理所有的读写操作,拷贝自身和Follower的日志条目到WAL BUFFER中。
因为Follower的日志条目早已被Leader写入,就无需再进行CAS操作了。
通过引入CAS操作和WAL分组写入机制
Vastbase精妙的缓解了锁争用的问题
这将减少I/O操作次数
提升日志写入效率
确保了数据库在高负载下
依然能保持出色的吞吐量和稳定性
真正做到高并发
• END •
关于海量数据
领取专属 10元无门槛券
私享最新 技术干货