“上篇讲到:yche针对落幕不久的第一届POLARDB数据库性能大赛整理了一套详细的比赛攻略,(赛题:实现一个简化、高效的kv存储引擎,支持Write、Read以及Range接口),那么今天小天就要贡献出最核心的部分——关键代码~”接上文,感兴趣的同学也可以点击阅读原文查看哦!四、关键代码1. 随机写入1. 实现逻辑通过锁一个bucket使得key-value在bucket中一一对应, 并且使得bucket的meta-count被正确地更改; 写入之前先写bucket对应buffer, buffer满了之后进行阻塞的pwrite系统调用。大体逻辑如下代码所示:{ unique_lock lock(bucket_mtx_[bucket_id]); // Write value to the value file, with a tmp file as value_buffer. uint32_t val_buffer_offset = (mmap_meta_cnt_[bucket_id] % TMP_VALUE_BUFFER_SIZE) * VALUE_SIZE; char *value_buffer = mmap_va
………………………………