Berkeley DB 源代码分析 (1) --- 代码特征与游标的实现

本文深入分析Berkeley DB源代码,探讨内部如何使用游标连接锁、事务和缓存管理。详细阐述了页面锁定、解锁及从内存池获取、释放页面的过程,并介绍游标调整的事务日志记录,以及键/数据对删除时的逻辑删除和物理删除策略。同时,讨论了离页重复数据(opd)的存储结构和访问方式。
摘要由CSDN通过智能技术生成


I. General Notes
1. use a cursor to access db internally. cursor connects lock/txn/logging/AM, etc.
To get a page, first create a cursor if don't have one, then call __db_lget to lock the page, then call __memp_fget to get the page from cache,
then you have the page's pointer. after use, call __TLPUT  OR __LPUT to release lock, then call __memp_fput to release page.

2. How to lock/unlock a page and get/put a page from mpool?
See __bam_read_lock.

3. Cursor Ajudgement
Cursor adjustments are logged if they are for subtransactions.  This is
because it's possible for a subtransaction to adjust cursors which will
still be active after the subtransaction aborts, and so which must be
restored to their previous locations.  Cursors that can be both affected
by our cursor adjustments and active after our transaction aborts can
only be found in our parent transaction -- cursors in other transactions,
including other child transactions of our parent, must have conflicting
locker IDs, and so cannot be affected by adjustments in this transaction.


When an key/data pair is deleted, there can be other cursors pointing to it so
we don't physically delete it immediately, but mark the key/data pair deleted, and mark
all cursors pointing at this k/d with C_DELETED (which is called a logical
delete).

BDB 专业版 v3.6 -- 索引 1. 关于BDB 2. 系统要求 3. 如何购买 4. 联系我们 5. 感谢 1.关于BDB __________________________________________________________ BDB是贝恩软件(www.bainsoft.com)发布的数据库设计和数据库部署软件, 支持Oracle,MS SQLServer,Access,MySQL,SQLAnyWhere和Sybase数据库。 您可以通过BDB来简化软件开发和部署过程: 1,数据库设计。 通过BDB快速建立数据库模型。支持正向工程和反向工程, 以及数据库模型和实体数据库之间的比对更新和双向同步。 2,数据库部署。 通过BDB创建数据库部署程序。 除了常规调用外,在BDB中还提供了外部命令行调用数据库自动安装支持, 您可以通过该功能把数据库部署集成到您的安装程序中。 3,数据库自动升级。 可在不影响原有数据表数据的前提下进行数据库自动升级。 此外,可方便快捷进行数据库自动升级部署,只需更新BDB自动生成的资源文件即可。 4,数据库迁移。 提供了完整的数据库迁移方案,可进行跨数据库平台迁移。可迁移的数据对象包括: 数据表,索引,约束,缺省值,触发器,视图,存储过程,函数以及数据表数据。 5,查询分析 数据库快速查询分析功能。可进行数据表数据查询,编辑及导出操作: A,提供专用的SQL编辑器。支持语法高亮,脚本预定义。 B,支持脚本快速选择输入。 C,提供了不同数据库平台下统一的快速查询语法支持(如“DESC”)。 D,数据表数据和Excel文件之间的双向导入导出操作。 E,提供特定的数据文件格式,用于不同数据库之间的数据导入,导出。 6,SQL脚本预输出 数据库模型或实体数据库有所改动时,可预输出更新SQL脚本,同时还可以 进行数据库重建SQL脚本预览。 7,支持跨数据库平台。 您只需按熟悉的数据库平台进行数据库设计,在部署到其他数据库平台时, 系统会进行数据类型转换及不同数据库平台下的语法差异处理。 8,采用方案模式。 支持同时进行多个数据库管理。 9,支持可重用属性定义及同步。 10,开发语言支持。 开放的数据库物理结构文件格式(XML标准格式),并提供了外部调用数据库结构源程序 (包含C#/Delphi/JAVA三个版本)。 11,支持多语言。 可根据需要增加新的语言包。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值