微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

像 MySQL 和 PostgreSQL 这样的 RDB 是否为每个索引存储数据副本?或者只是带有指向真实对象的链接的 B 树?

如何解决像 MySQL 和 PostgreSQL 这样的 RDB 是否为每个索引存储数据副本?或者只是带有指向真实对象的链接的 B 树?

MysqL 和 Postgresql 这样的 RDB 如何管理新索引的内存?

我猜测 RDB 创建 B 树(或其他索引),并带有引用/链接到内存中的真实对象。 另一种猜测是它复制每个新索引的所有数据。

所以基本上这个问题是关于“B 树由什么组成?引用,还是真实对象?”

关于数据库主题和 RDMS 产品的 Google 搜索过热。所以,我也会非常感谢关于这方面的好文章

解决方法

细节各不相同,但 B 树索引是一种存储在磁盘上的树结构。它包含索引项的重复项(索引键)和一个(直接或间接)指向表中索引行的指针。

B 树索引表示允许快速搜索的索引键的排序列表。树形结构加快了搜索列表的速度,并允许插入和删除条目而不会造成过多的数据混乱。

不清楚您所说的“真实对象”是什么意思。索引键肯定是真实的,它们存储在索引中。但是如果你的意思是整个表格行,那只是从索引中引用的。

,

对于 MySQL 的 Engine=InnoDB,它是这样工作的:

数据以PRIMARY KEY的顺序存储在B+Tree中。这使得基于 PK 的查找和范围非常有效。

每个二级键也是一个 B+Tree,但按二级键列给出的顺序排序。每个“行”也有 PK 的列,从而提供对数据 BTree 的引用(链接)。

如果辅助键的列加上PK是您唯一需要的列,则仅使用辅助键的BTree执行查询。

没有在其他一些数据库品牌中找到的“ROWNUM”。

如果您没有达到某些限制,您可以将表的所有列都包含在二级索引中。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。