gpt4 book ai didi

data-structures - 关系数据库系统中使用的数据结构

转载 作者:行者123 更新时间:2023-12-02 09:51:02 25 4
gpt4 key购买 nike

RDBMS中使用什么数据结构来存储我们输入的实际数据,名字姓氏等等,我知道B和B+树对于索引等是有效的,但我还没有得到一个令人信服的答案这个,请原谅我的无知。

最佳答案

这通常取决于存储引擎,原始数据将被存储为不同类别的数据库数据,其中至少有三个常见的划分:

  • 索引(指向包含该值的行的键)
  • 行数据(非 Blob 数据, some info here )
  • Blob 数据(通常为批量数据;将其视为您通常不搜索的扩展数据,但在通过其他键查找行后批量检索)

我在此处包含的大部分信息将基于 MySQL 知识。

索引

例如,MySQL has several ,包括:

据我所知,InnoDB 和 MyISAM use B-tree indexes ,而内存存储引擎允许您指定b树或哈希索引。

文档甚至包含一个页面 comparing how it uses each .

其他 RDBMS 将使用自己的规范,但我认为 B 树是常见的。

通常索引就像一个自己的小表;索引值是主键,值是包含该值的行的主键列表。

行数据

这个答案又很复杂并且取决于存储引擎。如果您对实现细节感兴趣,我会阅读存储引擎。

行以可以通过某些主键快速查找的数据格式存储。行通常具有相对较小(例如 216 字节)的固定限制,此后进一步的数据将被推送到扩展数据,这一事实有助于提高速度。

主键始终被索引,其他值也可以选择被索引。如果不是,那么存储引擎找到它们的唯一方法将是“表扫描”——字面意思是循环遍历所有数据,将列值与您要查找的值进行比较。

Blob 数据

将 blob 数据想象成一个大文件系统,除了能够通过其行的主键查找之外没有特殊的索引属性。它们还失去了每行分配固定空间的好处,这是为了能够存储大量、任意数量的数据而进行的权衡。

关于data-structures - 关系数据库系统中使用的数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19081744/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com