P0性能优化:异步日志刷盘组提交 + B+树Latch Crabbing并发优化
P0-1 异步日志刷盘 + 组提交:
- LogManager 改为双缓冲 + 后台刷盘线程架构
- 新增 flush_thread_loop() 后台周期性刷盘(50ms)
- add_log_to_buffer() 缓冲区满时自动交换,非阻塞
- flush_log_to_disk(target_lsn) 支持组提交,多事务共享fsync
- TransactionManager::commit/abort 改用组提交API
- LogBuffer 增加 max_lsn_ 跟踪,支持精确的刷盘完成判断
P0-2 B+树 Latch Crabbing 并发优化:
- Page 类新增 RLock/RUnlock/WLock/WUnlock 读写锁接口
- root_latch_ 改为 std::shared_mutex,支持并发读
- find_leaf_page 重写为 Latch Crabbing 协议(读锁遍历)
- 新增 is_safe() 判断节点是否会发生分裂/合并
- insert_entry 乐观锁路径:读锁遍历+写锁升级,不安全回退悲观路径
- delete_entry 悲观策略(合并逻辑复杂,串行化保证正确性)
- 修复 get_value/lower_bound/upper_bound 的读锁释放
验证:5/5单元测试通过;8线程并发插入1600条无丢失;崩溃恢复完整