(源码)基于C++的BusTub存储引擎.zip

上传者: m0_62153576 | 上传时间: 2025-11-02 02:35:57 | 文件大小: 363KB | 文件类型: ZIP
# 基于C++的BusTub存储引擎 ## 项目简介 BusTub是卡内基梅隆大学CMU 15445课程的Lab项目,旨在实现一个基础的存储引擎。该项目涵盖了缓冲池管理、索引管理、并发控制、日志记录与恢复等多个核心功能模块,帮助学生深入理解数据库系统的内部工作原理。 ## 项目的主要特性和功能 ### 1. 缓冲池管理(Buffer Pool) 缓冲池(Buffer Pool)负责将物理页面从主内存来回移动到磁盘,允许DBMS支持大于系统可用内存量的数据库。 LRU缓存替换策略使用LRU(Least Recently Used)策略减少磁盘IO次数,提高性能。 线程安全性使用互斥锁保证缓冲池的线程安全性。 ### 2. 索引管理(Index) B+树索引使用B+树作为底层数据结构,实现多级索引,支持快速随机查找和有序记录的高效访问。 节点粒度锁在多线程并发访问下,使用节点粒度的锁保证线程安全性。

文件下载

资源详情

[{"title":"( 192 个子文件 363KB ) (源码)基于C++的BusTub存储引擎.zip","children":[{"title":".clang-tidy <span style='color:#111;'> 94B </span>","children":null,"spread":false},{"title":"b_plus_tree.cpp <span style='color:#111;'> 31.06KB </span>","children":null,"spread":false},{"title":"executor_test.cpp <span style='color:#111;'> 26.33KB </span>","children":null,"spread":false},{"title":"table_page.cpp <span style='color:#111;'> 23.76KB </span>","children":null,"spread":false},{"title":"b_plus_tree_internal_page.cpp <span style='color:#111;'> 15.49KB </span>","children":null,"spread":false},{"title":"string_util.cpp <span style='color:#111;'> 14.75KB </span>","children":null,"spread":false},{"title":"smallint_type.cpp <span style='color:#111;'> 14.63KB </span>","children":null,"spread":false},{"title":"decimal_type.cpp <span style='color:#111;'> 14.30KB </span>","children":null,"spread":false},{"title":"bigint_type.cpp <span style='color:#111;'> 13.39KB </span>","children":null,"spread":false},{"title":"tinyint_type.cpp <span style='color:#111;'> 12.51KB </span>","children":null,"spread":false},{"title":"transaction_test.cpp <span style='color:#111;'> 12.50KB </span>","children":null,"spread":false},{"title":"integer_type.cpp <span style='color:#111;'> 12.07KB </span>","children":null,"spread":false},{"title":"lock_manager.cpp <span style='color:#111;'> 11.81KB </span>","children":null,"spread":false},{"title":"log_recovery.cpp <span style='color:#111;'> 11.27KB </span>","children":null,"spread":false},{"title":"b_plus_tree_concurrent_test.cpp <span style='color:#111;'> 11.10KB </span>","children":null,"spread":false},{"title":"recovery_test.cpp <span style='color:#111;'> 10.78KB </span>","children":null,"spread":false},{"title":"varlen_type.cpp <span style='color:#111;'> 10.62KB </span>","children":null,"spread":false},{"title":"b_plus_tree_leaf_page.cpp <span style='color:#111;'> 10.41KB </span>","children":null,"spread":false},{"title":"value.cpp <span style='color:#111;'> 10.29KB </span>","children":null,"spread":false},{"title":"type.cpp <span style='color:#111;'> 10.12KB </span>","children":null,"spread":false},{"title":"b_plus_tree_delete_test.cpp <span style='color:#111;'> 9.05KB </span>","children":null,"spread":false},{"title":"lock_manager_test.cpp <span style='color:#111;'> 8.73KB </span>","children":null,"spread":false},{"title":"table_heap.cpp <span style='color:#111;'> 8.23KB </span>","children":null,"spread":false},{"title":"MurmurHash3.cpp <span style='color:#111;'> 8.23KB </span>","children":null,"spread":false},{"title":"starter_test.cpp <span style='color:#111;'> 7.81KB </span>","children":null,"spread":false},{"title":"disk_manager.cpp <span style='color:#111;'> 7.80KB </span>","children":null,"spread":false},{"title":"buffer_pool_manager.cpp <span style='color:#111;'> 7.07KB </span>","children":null,"spread":false},{"title":"timestamp_type.cpp <span style='color:#111;'> 6.58KB </span>","children":null,"spread":false},{"title":"log_manager.cpp <span style='color:#111;'> 6.27KB </span>","children":null,"spread":false},{"title":"table_generator.cpp <span style='color:#111;'> 6.13KB </span>","children":null,"spread":false},{"title":"tuple.cpp <span style='color:#111;'> 5.91KB </span>","children":null,"spread":false},{"title":"executor_factory.cpp <span style='color:#111;'> 5.78KB </span>","children":null,"spread":false},{"title":"b_plus_tree_insert_test.cpp <span style='color:#111;'> 5.69KB </span>","children":null,"spread":false},{"title":"b_plus_tree_print_test.cpp <span style='color:#111;'> 5.55KB </span>","children":null,"spread":false},{"title":"transaction_manager.cpp <span style='color:#111;'> 5.37KB </span>","children":null,"spread":false},{"title":"buffer_pool_manager_test.cpp <span style='color:#111;'> 4.62KB </span>","children":null,"spread":false},{"title":"linear_probe_hash_table.cpp <span style='color:#111;'> 4.51KB </span>","children":null,"spread":false},{"title":"boolean_type.cpp <span style='color:#111;'> 4.40KB </span>","children":null,"spread":false},{"title":"header_page.cpp <span style='color:#111;'> 4.35KB </span>","children":null,"spread":false},{"title":"index_iterator.cpp <span style='color:#111;'> 3.98KB </span>","children":null,"spread":false},{"title":"b_plus_tree_index.cpp <span style='color:#111;'> 3.97KB </span>","children":null,"spread":false},{"title":"hash_table_page_test.cpp <span style='color:#111;'> 3.97KB </span>","children":null,"spread":false},{"title":"type_test.cpp <span style='color:#111;'> 3.79KB </span>","children":null,"spread":false},{"title":"clock_replacer_test.cpp <span style='color:#111;'> 3.58KB </span>","children":null,"spread":false},{"title":"table_iterator.cpp <span style='color:#111;'> 3.45KB </span>","children":null,"spread":false},{"title":"linear_probe_hash_table_index.cpp <span style='color:#111;'> 3.42KB </span>","children":null,"spread":false},{"title":"hash_table_test.cpp <span style='color:#111;'> 3.41KB </span>","children":null,"spread":false},{"title":"tuple_test.cpp <span style='color:#111;'> 3.35KB </span>","children":null,"spread":false},{"title":"b_plus_tree_page.cpp <span style='color:#111;'> 3.32KB </span>","children":null,"spread":false},{"title":"hash_table_block_page.cpp <span style='color:#111;'> 3.31KB </span>","children":null,"spread":false},{"title":"disk_manager_test.cpp <span style='color:#111;'> 2.90KB </span>","children":null,"spread":false},{"title":"rwlatch_test.cpp <span style='color:#111;'> 2.49KB </span>","children":null,"spread":false},{"title":"delete_executor.cpp <span style='color:#111;'> 2.46KB </span>","children":null,"spread":false},{"title":"lru_replacer_test.cpp <span style='color:#111;'> 2.34KB </span>","children":null,"spread":false},{"title":"clock_replacer.cpp <span style='color:#111;'> 2.29KB </span>","children":null,"spread":false},{"title":"schema.cpp <span style='color:#111;'> 2.20KB </span>","children":null,"spread":false},{"title":"limit_executor.cpp <span style='color:#111;'> 2.17KB </span>","children":null,"spread":false},{"title":"lru_replacer.cpp <span style='color:#111;'> 2.12KB </span>","children":null,"spread":false},{"title":"nested_index_join_executor.cpp <span style='color:#111;'> 2.11KB </span>","children":null,"spread":false},{"title":"index_scan_executor.cpp <span style='color:#111;'> 2.10KB </span>","children":null,"spread":false},{"title":"tmp_tuple_page_test.cpp <span style='color:#111;'> 2.08KB </span>","children":null,"spread":false},{"title":"integer_parent_type.cpp <span style='color:#111;'> 2.08KB </span>","children":null,"spread":false},{"title":"hash_table_header_page.cpp <span style='color:#111;'> 2.05KB </span>","children":null,"spread":false},{"title":"catalog_test.cpp <span style='color:#111;'> 2.03KB </span>","children":null,"spread":false},{"title":"update_executor.cpp <span style='color:#111;'> 2.02KB </span>","children":null,"spread":false},{"title":"nested_loop_join_executor.cpp <span style='color:#111;'> 1.99KB </span>","children":null,"spread":false},{"title":"aggregation_executor.cpp <span style='color:#111;'> 1.98KB </span>","children":null,"spread":false},{"title":"insert_executor.cpp <span style='color:#111;'> 1.95KB </span>","children":null,"spread":false},{"title":"column.cpp <span style='color:#111;'> 1.81KB </span>","children":null,"spread":false},{"title":"seq_scan_executor.cpp <span style='color:#111;'> 1.75KB </span>","children":null,"spread":false},{"title":"checkpoint_manager.cpp <span style='color:#111;'> 1.58KB </span>","children":null,"spread":false},{"title":"config.cpp <span style='color:#111;'> 1.21KB </span>","children":null,"spread":false},{"title":"Dockerfile <span style='color:#111;'> 399B </span>","children":null,"spread":false},{"title":"value_factory.h <span style='color:#111;'> 20.89KB </span>","children":null,"spread":false},{"title":"type_util.h <span style='color:#111;'> 9.66KB </span>","children":null,"spread":false},{"title":"transaction.h <span style='color:#111;'> 9.62KB </span>","children":null,"spread":false},{"title":"table_page.h <span style='color:#111;'> 8.20KB </span>","children":null,"spread":false},{"title":"catalog.h <span style='color:#111;'> 7.40KB </span>","children":null,"spread":false},{"title":"mock_buffer_pool_manager.h <span style='color:#111;'> 7.34KB </span>","children":null,"spread":false},{"title":"aggregation_executor.h <span style='color:#111;'> 7.15KB </span>","children":null,"spread":false},{"title":"logger.h <span style='color:#111;'> 7.08KB </span>","children":null,"spread":false},{"title":"p0_starter.h <span style='color:#111;'> 6.58KB </span>","children":null,"spread":false},{"title":"integer_parent_type.h <span style='color:#111;'> 6.49KB </span>","children":null,"spread":false},{"title":"value.h <span style='color:#111;'> 6.11KB </span>","children":null,"spread":false},{"title":"buffer_pool_manager.h <span style='color:#111;'> 6.02KB </span>","children":null,"spread":false},{"title":"log_record.h <span style='color:#111;'> 5.97KB </span>","children":null,"spread":false},{"title":"lock_manager.h <span style='color:#111;'> 5.25KB </span>","children":null,"spread":false},{"title":"index.h <span style='color:#111;'> 5.10KB </span>","children":null,"spread":false},{"title":"b_plus_tree.h <span style='color:#111;'> 4.85KB </span>","children":null,"spread":false},{"title":"aggregation_plan.h <span style='color:#111;'> 4.30KB </span>","children":null,"spread":false},{"title":"type.h <span style='color:#111;'> 4.24KB </span>","children":null,"spread":false},{"title":"column.h <span style='color:#111;'> 3.85KB </span>","children":null,"spread":false},{"title":"table_heap.h <span style='color:#111;'> 3.85KB </span>","children":null,"spread":false},{"title":"exception.h <span style='color:#111;'> 3.63KB </span>","children":null,"spread":false},{"title":"linear_probe_hash_table.h <span style='color:#111;'> 3.39KB </span>","children":null,"spread":false},{"title":"b_plus_tree_leaf_page.h <span style='color:#111;'> 3.37KB </span>","children":null,"spread":false},{"title":"transaction_manager.h <span style='color:#111;'> 3.25KB </span>","children":null,"spread":false},{"title":"schema.h <span style='color:#111;'> 3.22KB </span>","children":null,"spread":false},{"title":"b_plus_tree_internal_page.h <span style='color:#111;'> 3.21KB </span>","children":null,"spread":false},{"title":"hash_table_block_page.h <span style='color:#111;'> 3.21KB </span>","children":null,"spread":false},{"title":"......","children":null,"spread":false},{"title":"<span style='color:steelblue;'>文件过多,未全部展示</span>","children":null,"spread":false}],"spread":true}]

评论信息

免责申明

【只为小站】的资源来自网友分享,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,【只为小站】 无法对用户传输的作品、信息、内容的权属或合法性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论 【只为小站】 经营者是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。
本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二条之规定,若资源存在侵权或相关问题请联系本站客服人员,zhiweidada#qq.com,请把#换成@,本站将给予最大的支持与配合,做到及时反馈和处理。关于更多版权及免责申明参见 版权及免责申明