广告
返回顶部
首页 > 资讯 > 数据库 >SQL Server中表和索引存储结构的作用是什么
  • 214
分享到

SQL Server中表和索引存储结构的作用是什么

2024-04-02 19:04:59 214人浏览 八月长安
摘要

这篇文章给大家介绍SQL Server中表和索引存储结构的作用是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1. 堆所谓堆(heap),就是不含聚集索引的表。堆的 sys.par

这篇文章给大家介绍SQL Server中表和索引存储结构的作用是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

1. 堆

所谓堆(heap),就是不含聚集索引的表。堆的 sys.partitions 中具有一行,对于堆使用的每个分区,都有index_id= 0。只有一个分区,在系统表里,对于这个分区下面的每个分配单元都有一个连接指向Index Allocation Map页(IAM),在IAM页里,描述了区的信息。

sys.system_internals_allocation_units系统视图中的列first_iam_page指向管理特定分区中堆的分配空间的一系列 IAM 页的第一页。sql Server 使用 IAM 页在堆中移动。堆内的数据页和行没有任何特定的顺序,也不链接在一起。数据页之间唯一的逻辑连接是记录在 IAM 页内的信息。

2. 具有非聚集索引的表

如果有一个表只有非聚集索引而没有聚集索引,对应的索引号是2--250。那么针对每个非聚集索引,都有一个对应的分区,在系统表进而,对于这个分区下面的每个分配单元,都有一个连接指向根页。数据页之间通过前后指针互相联系,是一个完整的树形结构。在树的底层,会有一个连接指向真正的数据,连接的形式是文件号+页号+行号,而真正的数据是以堆的形式存放的。如下图所示:

3. 具有聚集索引的表

表中的聚集索引,对应的索引号是1。它有一个对应的分区,该分区下的每个分配单元都有一个连接指向根页。对于聚集索引来说,叶子结点里存放的是真正的数据,而不是非聚集索引那样的连接。如下图所示:

非聚集索引与聚集索引具有相同的 B 树结构,它们之间的显著差别在于以下两点:

基础表的数据行不按非聚集键的顺序排序和存储。

非聚集索引的叶层是由索引页而不是由数据页组成

案例分析: 我们来查看一个表的存储结构,我们在此使用的表是一个生产表,共有1亿多条记录,查看表的object_ID,如下图所示:

此表,我已经做了分区,查看其分区信息,可以使用下图所示的命令:

从上图可以看到,此表共有16个分区,对应不同的索引,基本上每个分区都有1千多万条记录。从此图中还可以看到堆或者B树的ID跟分区ID是一样的,如果希望进一步查看某一个索引的具体信息,可以使用下面的命令,如查看72057594067419136的信息。

从这个图当中,我们可以看到这个分区只有一个分配单元,IN_ROW_DATA表明此分配单元只用来存放具体数据,共5353页,已使用5346页,数据占用5320页。

如果希望查看根页的位置,可以使用下面的命令:

但需要注意,这里显示的根页的位置是0xEC0100001100,由于存储的关系,用倒序的方式对它进行解析,也就是0x0011000001EC,最前面的两个字节表明是所在的文件组编号,后面的4个字节是页的编号,即(1,0x01CE) ,换成十进制(1,492),然后可以利用我们上一节所说的DBCC PAGE命令查看页的信息,如下图所示:

从中可以看到具体的数据,此界面的返回结果会因表上的聚集索引、非聚集索引而不同。如果查看一个表使用的总页数和区数,也可以使用命令:DBCC SHOWCONFIG,如下图所示:

在同样表结构的情况下,建立聚集索引不会增加表格的大小,但是建立非聚集索引反而会增加不少空间,在性能方面,SQL Server产品组做过测试,在select、update、delete操作下,聚集索引性能较高,在插入记录时,聚集索引和非聚集索引性能相同,没有出现聚集索引影响插入速度的现象,但在生产环境中,还是要谨慎行事。

关于SQL Server中表和索引存储结构的作用是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

您可能感兴趣的文档:

--结束END--

本文标题: SQL Server中表和索引存储结构的作用是什么

本文链接: https://www.lsjlt.com/news/57909.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SQL Server中表和索引存储结构的作用是什么
    这篇文章给大家介绍SQL Server中表和索引存储结构的作用是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1. 堆所谓堆(heap),就是不含聚集索引的表。堆的 sys.par...
    99+
    2022-10-18
  • 详解SQL Server表和索引存储结构
    本文详细分析了SQL Server中表和索引结构存储的原理以及对于如何加快搜索速度和提高效率等方面做了详细的分析,以下是主要内容。 下图显示了表的存储组织,每张表有一个对应的对象ID,并且包含一个或多个分区...
    99+
    2022-10-18
  • Sql Server中聚集索引的作用是什么
    这篇文章将为大家详细讲解有关Sql Server中聚集索引的作用是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一:现象1:无索引的情况  还是老规矩,...
    99+
    2022-10-18
  • Sql Server中非聚集索引的作用是什么
    这篇文章将为大家详细讲解有关Sql Server中非聚集索引的作用是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一:现象先让我们一睹非聚集索引的真容,...
    99+
    2022-10-18
  • java中线性表的存储结构是什么
    今天就跟大家聊聊有关java中线性表的存储结构是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Java数据结构学习笔记第一篇:用程序后在那个的数据大致有四种基本的逻辑结构:集合:...
    99+
    2023-05-31
    java 线性表 ava
  • SQL Server 中系统表的作用是什么
    本篇文章给大家分享的是有关SQL Server 中系统表的作用是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。sysaltfiles 主 ...
    99+
    2022-10-18
  • 互联网中链表是一种采用什么存储结构存储的线性表
    这篇文章主要介绍互联网中链表是一种采用什么存储结构存储的线性表,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!链表是一种采用“链式”存储结构存储的线性表。链表的数据元素所占的存储单元地址可以是连续的,也可以是不连续的,...
    99+
    2023-06-25
  • PostgreSQL中的BRIN索引基础知识和结构是什么
    这篇文章主要讲解了“PostgreSQL中的BRIN索引基础知识和结构是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PostgreSQL中的BRIN索...
    99+
    2022-10-18
  • MySQL数据库中存储引擎的作用是什么
    这篇文章将为大家详细讲解有关MySQL数据库中存储引擎的作用是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。  MySQL数据库各种存储引擎作用有哪些 ...
    99+
    2022-10-18
  • Go语言中数组索引和存储的实现原理是什么?
    Go语言是一门功能强大的编程语言,它拥有很多独特的特性,比如强类型、垃圾回收机制和原生支持并发等。其中,数组是Go语言中最基本的数据结构之一,它在很多场景下都有着广泛的应用。本文将介绍Go语言中数组索引和存储的实现原理。 数组的定义和初始...
    99+
    2023-11-06
    索引 数组 存储
  • PHP中数据表的选项和储存引擎分别是什么
    这篇文章主要讲解了“PHP中数据表的选项和储存引擎分别是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP中数据表的选项和储存引擎分别是什么”吧!表选...
    99+
    2022-10-18
  • MySQL中binlog和relay-log结构的作用是什么
    这篇文章给大家介绍MySQL中binlog和relay-log结构的作用是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。binlog作用binlog的主要作用是记录数据库中表的更改...
    99+
    2022-10-18
  • SQL Server中的子查询和表链接概念及使用是什么
    SQL Server中的子查询和表链接概念及使用是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1.子查询概念 ...
    99+
    2022-10-19
  • 索引API在ASP和Laravel开发中的作用是什么?
    索引API是一种关键的技术,它在ASP和Laravel开发中扮演着非常重要的角色。它不仅可以提高应用程序的性能,还可以让应用程序更易于维护和扩展。本文将探讨索引API在ASP和Laravel开发中的作用,以及如何使用它来提高应用程序的性能...
    99+
    2023-09-21
    laravel 索引 api
  • 分布式存储系统中,PHP和Apache的作用是什么?
    分布式存储系统是一种通过网络连接多个计算机来存储和访问数据的系统。在这种系统中,PHP和Apache扮演着非常重要的角色。PHP是一种脚本语言,主要用于开发Web应用程序,而Apache则是一种Web服务器软件。本文将深入探讨它们在分布式...
    99+
    2023-09-30
    分布式 存储 apache
  • C语言中的变量作用域、链接和存储期的意义是什么
    小编给大家分享一下C语言中的变量作用域、链接和存储期的意义是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在c中变量有三种性质:1、存储期限:变量的存储期限决...
    99+
    2023-06-15
  • 索引和缓存在 Java 中的作用是什么?考虑到面试可能会涉及到这些知识点。
    索引和缓存在 Java 中的作用是什么?考虑到面试可能会涉及到这些知识点。 Java 中的索引和缓存是两个非常重要的概念,它们在提高程序性能和减少资源消耗方面起着至关重要的作用。在这篇文章中,我们将深入探讨索引和缓存在 Java 中的作用,...
    99+
    2023-10-29
    索引 缓存 面试
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作