SQLite中的B-Tree实现细节
在SQLite的实现中,一个文件可以含有1个或的过独立的BTree。每一个BTree由它的根页的索引来标识。所有入口的key和数据组成了有效
SQLite在存储在外部的数据库是以B-Tree来组织的。关于B-tree的细节,,参考
**
** Donald E. Knuth, THE ART OF COMPUTER PROGRAMMING, Volume 3:
** "Sorting And Searching", pages 473-480. Addison-Wesley
** Publishing Company, Reading, Massachusetts.
**
基本思想是文件包含的每一页都包括N个数据库入口和N+1个指向子页的指针。文件分成很多页存储。为什么这么干,因为内存分页管理机制闹得。外存中每个页就是B树的一个节点。
----------------------------------------------------------------
| Ptr(0) | Key(0) | Ptr(1) | Key(1) | ... | Key(N-1) | Ptr(N) |
----------------------------------------------------------------
Ptr(0)指向的页上的所有的key的值都小于Key(0)。所有Ptr(1)指向的页和子页的所有的key的值都大于Key(0),小于Key(1)。所有Ptr(N)指向的页和子页的key的值都大于Key(N-1),等等。
为了知道一个特定的key,需要从磁盘上以O(long(M))来读取,其中M是树的阶数。内存中找不到了,就发生缺页中断。
上一篇: 用PHP实现登陆条行码验证码
推荐阅读
-
js从10种颜色中随机取色实现每次取出不同的颜色_javascript技巧
-
解析php中session的实现原理以及大网站应用应注意的问题_PHP
-
实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。
-
Java中实现1到100的随机数的简单示例
-
PHP中数据库单例模式的实现代码分享_php实例
-
php中利用post传递字符串重定向的实现代码
-
php实现指定字符串中查找子字符串的方法,字符串中查找
-
node.js中实现kindEditor图片上传功能的方法教程
-
mysql中sql实现查询当天、昨天、本月、季度的语句
-
php中实现记住密码下次自动登录的例子