use*_*027 7 rdbms data-structures
在RDBMS中使用什么数据结构来存储我们输入的实际数据,firstname lastname等等,我知道B和B +树对于索引等是有效的,但我还没有得到一个明确的答案,请请原谅我的无知.
这通常取决于存储引擎,原始数据将存储为不同的数据库数据分类,其中至少有三个常见的分区:
我将在此处包含的大部分信息都将基于MySQL的知识.
例如,MySQL 有几个,包括:
据我所知,InnoDB和MyISAM 使用B树索引,而内存存储引擎允许您指定b树或哈希索引.
文档甚至包含一个页面,比较它如何使用每个文档.
其他RDBMS将使用他们自己的规范,但我认为B树很常见.
通常,索引就像一个自己的小表; 索引值是主键,值是包含该值的行的主键列表.
这个答案再次变得复杂并且取决于存储引擎.如果您对实现细节感兴趣,我会阅读存储引擎.
行以数据格式存储,可以通过某些主键快速查找.行通常具有相对较小(认为2 16字节)的固定限制,之后将进一步的数据推送到扩展数据页.
始终对主键建立索引,并且可以选择索引其他值.如果不是,那么存储引擎找到它们的唯一方法就是"表扫描" - 从字面上看,循环遍历将列值与您要查找的值进行比较的所有数据.
可以将blob数据看作是一个没有特殊索引属性的大文件系统,除了能够通过主键为其行查找.它们也失去了每行分配固定空间的好处,这是一种能够存储大量任意数据的权衡.