Database 为什么对数据库索引使用B树而不是AVL树 我听到一些语句,例如,考虑AVL树的高度和AVL树节点所能包含的最大密钥,因为磁盘IO,AVL树的搜索将是费时的。 但是,假设一个索引文件包含整个AVL树结构,然后索引文件的大小小于风扇大小,我们只需在一次磁盘io中读取整个AVL树

Database 为什么对数据库索引使用B树而不是AVL树 我听到一些语句,例如,考虑AVL树的高度和AVL树节点所能包含的最大密钥,因为磁盘IO,AVL树的搜索将是费时的。 但是,假设一个索引文件包含整个AVL树结构,然后索引文件的大小小于风扇大小,我们只需在一次磁盘io中读取整个AVL树,database,indexing,data-structures,Database,Indexing,Data Structures,似乎使用AVL树不会带来额外的磁盘io,您如何解释B树更好?数据库使用平衡二叉树(plus)AVL只是这些平衡树的一个特例,所以不需要它数据库使用平衡二叉树(plus)AVL只是这些平衡树的一个特例,因此,没有必要这样做 我们只能在一次磁盘io中读取整个AVL树 是的,它可以这样工作。从本质上讲,整个数据结构将被放入内存中。IO将不再是一个问题 有些数据库使用这种策略。例如,内存中的SQL Server“Hekaton”可以做到这一点,并为OLTP提供约100倍的正常吞吐量 Hekaton使用两

似乎使用AVL树不会带来额外的磁盘io,您如何解释B树更好?

数据库使用平衡二叉树(plus)AVL只是这些平衡树的一个特例,所以不需要它

数据库使用平衡二叉树(plus)AVL只是这些平衡树的一个特例,因此,没有必要这样做

我们只能在一次磁盘io中读取整个AVL树

是的,它可以这样工作。从本质上讲,整个数据结构将被放入内存中。IO将不再是一个问题

有些数据库使用这种策略。例如,内存中的SQL Server“Hekaton”可以做到这一点,并为OLTP提供约100倍的正常吞吐量

Hekaton使用两种索引数据结构:哈希表和树。我认为这些树被称为cw树,类似于b树

对于通用数据库工作负载,不需要内存中的所有内容是非常理想的。在这些情况下,B-树是一个很好的设计权衡

我们只能在一次磁盘io中读取整个AVL树

是的,它可以这样工作。从本质上讲,整个数据结构将被放入内存中。IO将不再是一个问题

有些数据库使用这种策略。例如,内存中的SQL Server“Hekaton”可以做到这一点,并为OLTP提供约100倍的正常吞吐量

Hekaton使用两种索引数据结构:哈希表和树。我认为这些树被称为cw树,类似于b树

对于通用数据库工作负载,不需要内存中的所有内容是非常理想的。在这些情况下,B-树是一个很好的设计权衡