在Sqlite中使用的B-Tree中,每个节点可以拥有的最大节点数是多少?这些数字与其他关系数据库相似吗?
发布于 2019-12-24 22:31:25
SQLite使用固定的页面大小,缺省为4096字节,但可以设置为512到65536之间的2的任意幂。每页有一些固定的开销(叶页有8字节,内部页有12字节),每槽有一些固定的开销(间接向量中的2个字节加上不同的数量,这取决于页面类型以及它是索引还是表),键/记录占用的空间大小取决于它们的结构和内容,以及内容是否已经溢出到溢出页面中。在这一点上,SQLite中B树页面的布局类似于许多其他关系数据库中使用的布局,并且它实现了类似的占用级别。
让SQLite有点与众不同的是大量使用变量、可变长度整数(varint)和准通用行溢出功能。这引入了如此多的变量,以至于大小/占用率估计远不像MS SQL Server中的传统B树表那样简单、准确和可靠。不幸的是,这肯定超出了我有限的能力范围。
您可以在sqlite.org上的Database file format文档的B-tree Pages部分中阅读整个故事。
附言:请注意肖恩对sqlite3 analyser项目的评论。我详细地告诉过你为什么很难确定上帝是否存在,肖恩给你看了一个程序,它会简单地给你他该死的电话号码。;-)
https://stackoverflow.com/questions/59469714
复制相似问题