fastdb中记录的插入,更新,和删除,查询
2010-01-12 10:46
260 查看
记录的插入
记录的插入首先从内存中的dbTableDescriptor链表中找到对应的表oid,从硬盘上读取dbTable,之后分配记录空间,把记录存入硬盘,分配记录的oid,根据dbTable中的lastRow,把新的记录链入双向链表中,如果有索引的话,找出对应的字段更新索引,dbTableDescriptor链表相录于数据字典的作用,
更新和删除,也是这个过程,
查询的过程,大致也是如此,
从dbTableDescriptor链表-->硬盘上的dbTable-->根据dbTable中的firstRow找到第一个记录的oid--->之后就是按照链表,依次遍历的过程,当有索引时,就是不遍历,直接根据索引找到记录的oid,
查询用到了cursor,这里面有个列表用于保存满足查询条件的oid,里面并没有保存对录,只保留了oid
上面全部都用到了oid,因为知道oid之后,就知道了对象在文件中的偏移位置,而且对象本身是保存了记录大小的,根据这两项就能把记录读出来,
记录的插入首先从内存中的dbTableDescriptor链表中找到对应的表oid,从硬盘上读取dbTable,之后分配记录空间,把记录存入硬盘,分配记录的oid,根据dbTable中的lastRow,把新的记录链入双向链表中,如果有索引的话,找出对应的字段更新索引,dbTableDescriptor链表相录于数据字典的作用,
更新和删除,也是这个过程,
查询的过程,大致也是如此,
从dbTableDescriptor链表-->硬盘上的dbTable-->根据dbTable中的firstRow找到第一个记录的oid--->之后就是按照链表,依次遍历的过程,当有索引时,就是不遍历,直接根据索引找到记录的oid,
查询用到了cursor,这里面有个列表用于保存满足查询条件的oid,里面并没有保存对录,只保留了oid
上面全部都用到了oid,因为知道oid之后,就知道了对象在文件中的偏移位置,而且对象本身是保存了记录大小的,根据这两项就能把记录读出来,
相关文章推荐
- 第二章 MySQL数据库基础-查询、插入、更新、删除表记录
- 安装Sequoiadb后,插入,查询,更新,删除记录
- DedeCms二次开发之简单的查询、插入、更新、删除操作实例
- mysql 每秒钟查询次数、插入次数、删除次数、更新次数的统计
- 处理查询、插入、删除等操作时,如何应对锁住的数据记录
- Linq的技术太强大了分享一下(linq to sql 的插入、更新、查询、删除)
- mysql 每秒钟查询次数、插入次数、删除次数、更新次数的统计
- Android sqlite 数据库查询,插入,删除,更新demo<第1章>
- Oracle数据库的概念(权限、角色)以及各种操作(创建表空间、创建表、查询、更新、删除、插入)和常用函数
- 嵌入式 sqlite3数据库创建、插入、更新、查询、删除、多线程等C编程示例以及多并发完成
- hiho 1333 : 平衡树 splay 区间删除,更新,查询,单点插入
- mybatis--day01动态查询、动态更新、动态删除、动态插入
- Mybatis一对一中的SQL(查询、删除、更新、插入)及表的设计
- ASP.NET2.0中插入、删除、查询、修改记录这么多方法,究竟哪种最通用,最常用?
- 插入、删除、更新后返回修改的记录,用output
- MongoDB-文档插入、更新、删除、查询
- java 操作MySQL,查询,插入,更新和删除操作
- Oracle查询优化-04插入、更新与删除数据
- VBS:SQL记录查询、更新、删除
- c#.net数据库连接 查询,删除 ,插入 ,更新