当前位置:首页 > 数码 > 树之外的其他探索-数据库索引的类型-B

树之外的其他探索-数据库索引的类型-B

admin8个月前 (04-11)数码28

数据存储在磁盘或内存中时,我们需要高效的数据结构来访问和获取数据。本文将介绍 8 种常用的数据库索引结构,并讨论它们的优点和缺点。

B 树

数据库索引的类型

B 树是一种流行的基于磁盘的索引数据结构,以其稳定高效的读写性能著称。与传统的二叉树不同,B 树的每个节点可以存储大量键值,从而降低树的高度,加快搜索和插入元素的速度,并减少磁盘 I/O 操作。B 树的时间复杂度为 O(logN)。

哈希索引

哈希索引是一种基于哈希表的数据结构,哈希值映射到存储桶,存储桶存储数据的偏移量。因此,我们可以根据键值快速查找数据。

跳表

跳表是一种常用的内存索引类型,常用于 SortedSet 中。跳表解决了链表搜索效率低下的问题。每个节点包含多个前向指针,因此我们可以跳过一些节点来加快搜索速度,而不受步长限制。

SSTable

SSTable(SortedStringTable)是 Cassandra 和其他 NoSQL 数据库使用的持久性文件格式。它可以对内存数据进行排序,以便快速访问,并将其存储在磁盘上的一组持久有序不可变的文件中。不可变意味着 SSTable 永远不会被修改,它们稍后会合并到新的 SSTable 中,或者随着数据的更新而被删除。SSTable 与 LSM 树一起使用。

LSM 树

LSM 树(Log-Structured Merge Tree)在 SSTable 的基础上提供一整套存储解决方案。它由两层结构组成:内存中的 memtable 和磁盘上的 SSTable。新数据首先写入 memtable,如果 memtable 过大,就会刷新到磁盘上的 SSTable。各个 SSTable 上可能有重复的键值,在一段时间后会进行合并压缩。由于每个写入请求实际上都只在内存中进行,因此 LSM 树的写入吞吐量明显高于 B 树。

后缀树

后缀树通常用于存储字符串列表,也称为 Trie 的压缩版本。后缀树常用于字符串的搜索和匹配,例如容忍一定输入错误的字符搜索、正则表达式匹配、最长子串问题等。

倒排索引

倒排索引用于高效的文档索引,例如 Lucene。在倒排索引中,索引按单词进行组织,每个单词都指向包含该单词的文档列表。

R 树

R 树用于搜索多维信息,包括地理坐标、矩形、多边形等。我们可以借助这种索引来搜索附近的餐馆、找到最近的加油站、检索附近所有路段等。

选择合适的索引结构

选择合适的索引结构取决于以下因素:

  • 数据的类型和大小
  • 对数据的典型访问模式(例如范围查询、精确匹配、模糊搜索)
  • 数据库的性能目标(例如读取速度、写入吞吐量、存储空间)

没有一种索引结构适用于所有情况。通过了解每种索引结构的优点和缺点,我们可以做出明智的选择,优化数据库的性能。


SQL SERVER中索引类型包括的三种类型分别是哪三种?

三种索引类型分别是:

1、主键索引:不允许具有索引值相同的行,从而禁止重复的索引或键值。系统在创建该索引时检查是否有重复的键值,并在每次使用 INSERT 或 UPDATE 语句添加数据时进行检查。

2、聚集索引:指数据库表行中数据的物理顺序与键值的逻辑(索引)顺序相同。一个表只能有一个聚集索引,因为一个表的物理顺序只有一种情况。

3、非聚集索引:索引中索引的逻辑顺序与磁盘上行的物理存储顺序不同。非聚集索引的叶层不包含数据页。 相反,叶节点包含索引行。

扩展资料

聚集索引对于那些经常要搜索范围值的列特别有效。使用聚集索引找到包含第一个值的行后,便可以确保包含后续索引值的行在物理相邻。

频繁更改的列 这将导致整行移动,因为 SQL Server 必须按物理顺序保留行中的数据值。这一点要特别注意,因为在大数据量事务处理系统中数据是易失的。来自聚集索引的键值由所有非聚集索引作为查找键使用,因此存储在每个非聚集索引的叶条目内。

为什么数据库使用B树索引而非散列索引

数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。 索引的实现通常使用B树及其变种B+树。 在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法。 这种数据结构,就是索引。 为表设置索引要付出代价的:一是增加了数据库的存储空间,二是在插入和修改数据时要花费较多的时间(因为索引也要随之变动)。

免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。

标签: 数据库

“树之外的其他探索-数据库索引的类型-B” 的相关文章

过去一年数据库领域的十大发展趋势 (往年数据)

过去一年数据库领域的十大发展趋势 (往年数据)

作者:朱洁 | 策划:李冬梅 前言 2023年对数据库行业来说是充满挑战的一年。行业信心跌至冰点,各行各业都在艰难恢复,裁员加剧,就业率创新低。但2023年也见证了数据库行业的一些重要...

连接表时出现重复数据的方法-INNER-JOIN-数据库中避免 (表连接类型)

连接表时出现重复数据的方法-INNER-JOIN-数据库中避免 (表连接类型)

在进行 SQL 查询时,我们经常需要联合多个表来获取更全面的数据。在使用 INNER JOIN 连接表时,有时会遇到重复数据的问题,这可能会导致查询结果不准确或者性能下降。 使用 DISTI...

年未来数据库-2024-值得关注的八个趋向 (未来数据库发展方向)

年未来数据库-2024-值得关注的八个趋向 (未来数据库发展方向)

相关型数据库治理系统在数据库技术畛域占据主导位置曾经多年了。当SQL在1970年代初次出现时,相关型数据库治理系统的经常使用和受欢迎水平迅速优化。很快,成为了大少数公司和团队首选的数据库。...

vs-数据库-SQL-理解它们之间的关键差异-数据仓库 (Vs数据库打断点)

vs-数据库-SQL-理解它们之间的关键差异-数据仓库 (Vs数据库打断点)

概念定义 数据库软件 一种可见且可操作的软件 实现数据库的逻辑功能 属于物理层 数据库 一种逻辑概念,用于存储数据 通过...

三种方法-数据库和缓存数据一致性维护策略 (三种方法数据比较)

三种方法-数据库和缓存数据一致性维护策略 (三种方法数据比较)

在现代web开发中,缓存已经成为提高应用程序读性能的标准做法。通过引入缓存,我们可以暂时存储经常访问的数据,避免频繁查询数据库,从而显著减少应用程序的响应时间。 引入缓存也带来了一些挑战,其...

流行的支持多数据库的ORM库 (主流支持和扩展支持的区别)

流行的支持多数据库的ORM库 (主流支持和扩展支持的区别)

Sequelize is a popular Node.js ORM (Object-Relational Mapping) library that makes it easy to inter...

数据库中的VARBINARY类型-从正确转换到优化措施的综合指南 (数据库中的VALUES是什么意思)

数据库中的VARBINARY类型-从正确转换到优化措施的综合指南 (数据库中的VALUES是什么意思)

在数据库中,字符串类型的数据非常常见。虽然char和varchar类型是最常用的字符串类型,但有时候我们需要存储二进制数据,这时候就需要使用varbinary类型。 varbinary类型和...

数据库SQL小技巧大揭秘-IGNORE选项让你的数据处置更冷静 (数据库sql server安装教程)

数据库SQL小技巧大揭秘-IGNORE选项让你的数据处置更冷静 (数据库sql server安装教程)

在中,IGNORE是一种在拔出或降级数据时处置抵触的选项。详细来说,在INSERT|UPDATE语句中,IGNORE的作用是在拔出或降级数据时疏忽特定的失误,而不造成整个操作失败。另外,IGNOR...