database - Sqlite中B-Tree的度数是多少?
问题描述
Sqlite 中使用的 B-Tree 中每个节点可以拥有的最大节点数是多少?这些数字与其他关系数据库相似吗?
解决方案
SQLite 使用固定的页面大小,默认为 4096 字节,但可以设置为 512 和 65536 之间的任何 2 的幂。每页有一些固定开销(叶页为 8 个字节,内部页为 12 个字节),一些固定开销每个插槽(间接向量中的 2 个字节加上不同的数量,具体取决于页面类型以及它是索引还是表)和键/记录占用不同数量的空间,具体取决于它们的结构和内容,以及内容是否溢出溢出页。在这方面,SQLite 中 B-tree 页面的布局类似于许多其他关系数据库中使用的布局,并且达到了相似的占用率。
使 SQLite 与众不同的是大量使用变体、可变长度整数 (varint) 和准通用行溢出功能。这引入了如此多的变量,以至于大小/占用率估计远不如 MS SQL Server 中的经典 B 树表那样简单、准确和可靠。不幸的是,这肯定超出了我的能力范围......
您可以在sqlite.org上的数据库文件格式文档的B-tree Pages部分阅读整个故事。
PS:请注意 Shawn 关于sqlite3 分析器程序的评论。我详细告诉了你为什么很难确定上帝是否存在,肖恩指给你一个程序,它简单地给你他的电话号码。;-)
推荐阅读
- node.js - Objection.js WHERE IN 查询是否会减慢我的 Node.js 应用程序速度?
- mysql - SQL按列中的数字排序
- android - 将带有嵌套对象的 JSON 对象展平为展平字段
- javascript - 承诺异步代码不起作用 puppeteer
- javascript - 类型定义文件
- javascript - 当在反应中选择项目时,不会调用下拉 onclick
- r - read.csv 带有标题但忽略第二行
- javascript - 在 Jquery Clone 中更改复杂的 id 值
- android - oreo(8.0) 或更高版本中的 GCMBroadcastReceiver 无法正常工作
- database - 自定义店铺数据库结构