索引组织表

简介: 说明聚集索引及索引组织表的关系及使用场景,优势。

目前的表存储方式主要分为两种:索引组织表( Index-Organized Tables) 堆表(heap-organized tables)

  • oracle:默认堆表,支持索引组织表。
  • mysql:只支持索引组织表,对应的索引叫做聚集索引(cluster index)。
  • postgresql:只支持堆表

简单的一句话来概括两者的区别就是一种数据是有序存储(按主键id聚集),一种是无序存储。并不一定是哪一种结构更好,还是要看具体的业务适合哪种形式。

Index-Organized Tables 索引组织表

定义:

索引组织的表具有作为主B树的变体的存储组织。与其数据以无序集合(堆)存储的普通(堆组织的)表不同,以主键排序的方式将索引组织表的数据存储在B树索引结构中。索引结构中的每个叶块都存储关键字列和非关键列。对应的主键索引也叫聚集索引,其他列的索引叫secondary index,也叫做二级索引。二级索引的每条记录都包含该行的主键值,InnoDB使用这个主键值来搜索聚集索引中的行。因此,较短的主键值是有利的,可以缩小二级索引的空间。

优势:

  • 主键快速随机访问,因为仅扫描索引就足够了(数据存在聚集索引中)。由于没有单独的表存储区,对表数据的更改(insert,update,delete)只更新索引就足够了。
  • 如果基于主键的范围查询访问,速度很快,因为数据是聚集在一起的。
  • 需要的存储空间更小,避免的主键的重复存储。而在堆表(heap-organized tables)中主键是存储两次的。

聚集索引 clustered index

以innodb引擎举例,每个表都有一个聚集索引,其中存储行的数据。通常来讲,聚集索引与主键是一个意思。但也有特殊情况。

  • 如果你没有为表定义一个primary key(意味着数据库就不知以何种形式存储数据),那么innodb将会定义第一个unique索引且其中的键列都是非null为聚集索引。
  • 如果该表没有primary key或何止的unique索引,则innodb会使用一个隐藏的GEN_CLUST_INDEX(包含行ID:行ID是一个6字节的字段,随着新行的插入而单调递增。)做为聚簇索引。

聚集索引的优势在于,访问行的速度更快。因为索引中就存储数据信息。比起二级索引,都必须从根节点通过分支节点导航到正确的叶节点,以获得主键值,然后对主键索引执行随机IO读取(再次从根节点通过分支节点到正确的叶节点)来获取数据行。其实为了解决这个问题,也有covering index 这个概念,简单讲就是数据在存在于索引当中,不需要去访问表。

相关文章
|
NoSQL Redis 数据安全/隐私保护
redis设置密码后如何实现主从复制
redis设置密码后如何实现主从复制
239 0
|
数据采集 人工智能 Rust
『GitHub项目圈选周刊01』一款构建AI数字人项目开源了!自动实现音视频同步!
『GitHub项目圈选周刊01』一款构建AI数字人项目开源了!自动实现音视频同步!
1974 0
|
编解码 安全 算法
全双工通信 | 带你读《5G系统关键技术详解》之三
本书深入介绍了 5G 无线网络的协议、网络架构和技术,包括无线接入网络、移动边 缘计算、全双工、大规模 MIMO、毫米波、NOMA、物联网、M2M 通信、D2D 通信、 移动数据分流、干扰抑制技术、无线资源管理、可见光通信和智能数据定价等关键主题。
全双工通信  | 带你读《5G系统关键技术详解》之三
|
SQL Oracle 关系型数据库
Oracle 分区表的新增、修改、删除、合并。普通表转分区表方法
一. 分区表理论知识 Oracle提供了分区技术以支持VLDB(Very Large DataBase)。分区表通过对分区列的判断,把分区列不同的记录,放到不同的分区中。分区完全对应用透明。 Oracle的分区表可以包括多个分区,每个分区都是一个独立的段(SEGMENT),可以存放到不同的表空间中。
1542 0
|
算法 数据安全/隐私保护
基于LS算法的OFDM+QPSK系统信道估计均衡matlab性能仿真
基于MATLAB 2022a的仿真展示了OFDM+QPSK系统中最小二乘(LS)算法的信道估计与均衡效果。OFDM利用多个低速率子载波提高频谱效率,通过循环前缀克服多径衰落。LS算法依据导频符号估计信道参数,进而设计均衡器以恢复数据符号。核心程序实现了OFDM信号处理流程,包括加性高斯白噪声的加入、保护间隔去除、快速傅立叶变换及信道估计与均衡等步骤,并最终计算误码率,验证了算法的有效性。
346 2
|
架构师 NoSQL 中间件
挑战架构师极限:分布式锁的四种实现方式,优劣对比让你一目了然!
【8月更文挑战第29天】在2024年软考架构师考试中,掌握分布式锁的实现方法极其重要。本文详细介绍了基于数据库、Redis及ZooKeeper三种常见分布式锁方案。数据库锁简单易懂但性能低;Redis锁性能优越且支持自动续期,但需引入中间件;ZooKeeper锁可靠性高,适用于分布式环境,但实现复杂。通过对比各方案优缺点,帮助考生更好地应对考试,选择最适合业务场景的分布式锁策略。
1191 0
|
安全 数据库 数据安全/隐私保护
撞库攻击是什么?如何有效阻止撞库攻击?
通过采取这些防护措施,可以有效降低撞库攻击的成功几率,保护用户的账户和数据安全。
636 0
撞库攻击是什么?如何有效阻止撞库攻击?
|
设计模式 安全 Java
深入理解Spring Boot AOP:CGLIB代理与JDK动态代理的完全指南
深入理解Spring Boot AOP:CGLIB代理与JDK动态代理的完全指南
3434 1
|
SQL 存储 缓存
手写数据库toadb 一起验证行列混合最佳实践
toadb是一个轻量级的、开源的关系型数据库,它提供了基本的SQL支持和数据存储管理功能。相比于其他成熟的数据库产品,toadb更加简单和易于理解,适合初学者和数据库内核开发人员使用。通过学习和使用toadb,我们可以更好地理解数据库的基本原理,掌握数据库的核心技术,为以后的数据库设计和优化工作打下坚实的基础。
1085 5
|
存储 关系型数据库 数据库
PostgreSQL技术大讲堂 - 第28讲:索引内部结构
从零开始学PostgreSQL技术大讲堂 - 第28讲:索引内部结构
1098 2