It's worth noting that only a subset of "known good ideas" is implemented in any given DBMS. For example, SQLite doesn't even do hash joins, it only does nested loops (ack!!). But then, it's an easily embeddable dbms, and it does its work very well, so there's something to be said for the lack of complexity.
优秀数据库的关键之一是如何管理其 I/O 缓冲区。但它基本上匹配 RAM 块和磁盘块。使用现代的虚拟内存管理器,更简单的数据库几乎可以依赖 VM 作为其内存缓冲区管理器。这些都是高端数据库自己做的。
索引是如何存储的?
通常是 B + T 树,你应该查一下。这种直截了当的技术已经存在很多年了。它的好处与大多数平衡树共享: 对节点的一致访问,加上所有叶子节点都链接起来,因此您可以按键顺序轻松地从一个节点遍历到另一个节点。因此,对于索引,可以考虑对数据库中特定字段的行进行“排序”,数据库可以利用这些信息进行优化。这不同于为索引使用散列表,后者只允许您快速访问特定的记录。在 B-Tree 中,您不仅可以快速访问特定的记录,还可以访问已排序列表中的某个点。