Lss-lmj
Results
1
issues of
Lss-lmj
### 1. 锁的管理优化 - **目标**:提高并发性能,避免死锁,减少锁的持有时间。 - **方案详情**: - 在 `insert_entry_into_parent` 函数中,创建新根节点时,先释放子节点的锁(`disk_buffer_pool_->unpin_page(frame); disk_buffer_pool_->unpin_page(new_frame);`),再进行根节点的加锁和更新操作。这样可以避免在创建根节点过程中长时间持有子节点的锁,提高并发性能,因为在创建新根节点时,子节点的修改已经完成,不需要再持有其锁。 - 递归调用 `insert_entry_into_parent` 之前,释放当前父节点的锁(`disk_buffer_pool_->unpin_page(parent_frame);`)。这是因为在递归调用过程中,当前父节点的操作已经完成,不需要继续持有锁,减少锁的持有时间,提高并发性能。 - 在 `split` 函数中,将新节点的初始化操作封装到 `initializeNewNode` 函数中,使锁的获取和节点初始化逻辑更清晰,便于维护和理解锁的使用范围。 ### 2. 资源管理优化 - **目标**:确保资源正确分配和释放,避免资源泄漏,提高资源使用效率。 - **方案详情**: -...