在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是树的阶数。内存中找不到了,就发生缺页中断。
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号