首页 > 解决方案 > Sqlite中B-Tree的度数是多少?

问题描述

Sqlite 中使用的 B-Tree 中每个节点可以拥有的最大节点数是多少?这些数字与其他关系数据库相似吗?

标签: databasesqliteb-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 分析器程序的评论。我详细告诉了你为什么很难确定上帝是否存在,肖恩指给你一个程序,它简单地给你他的电话号码。;-)


推荐阅读