预写日志写入过程中

常出现锁争用问题

影响写入效率

Vastbase只需两步

轻松缓解锁争用问题

STEP1 引入免锁的CAS操作

Vastbase首先通过引入CAS操作来避免锁争用,CAS(Compare-And-Swap)是一种原子操作,它允许线程在无需加锁的情况下,安全地修改数据库中的数据。

当线程想要修改数据库中的某个值时,CAS会确认当前值是否与预期值相等,若相等,则会将当前值变更为新值,CAS操作成功;若不相等,则会返回重新计算,便于后续的重试。

这样一来,Vastbase就巧妙地绕开了锁争用的泥潭,让数据库操作更加流畅。

 

虽然利用CAS替换了自旋锁

但在冲突很高的情况下

CAS操作耗时还是会非常长

这就来到了第二步

STEP2  引入WAL分组写入机制

Vastbase引入WAL分组写入机制来降低CAS操作发生冲突的可能,WAL(Write-Ahead Logging)即预写日志系统。

当事务生成日志后,会首先加入到写入组。第一个加入组的线程成为Leader,后续的加入者成为Follower。

Leader负责处理所有的读写操作,拷贝自身和Follower的日志条目到WAL BUFFER中。

因为Follower的日志条目早已被Leader写入,就无需再进行CAS操作了。

通过引入CAS操作和WAL分组写入机制

Vastbase精妙的缓解了锁争用的问题

这将减少I/O操作次数

提升日志写入效率

确保了数据库在高负载下

依然能保持出色的吞吐量和稳定性

真正做到高并发

Logo

鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。

更多推荐