如果转载,请注明博文来源: www.cnblogs.com/xinysu/   ,版权归 博客园 苏家小萝卜 所有.望各位支持!      1 行记录如何存储     这里引入两个概念:堆跟聚集索引表.本部分参考MSDN. 1.1 堆表     堆表,没有聚集索引的表格,可以创建一个或者多个非聚集索引.没有按照某个规则进行存储,一般来说,按照行记录入表的顺序,但是由于性能要求,可能会在不同区域移动入库数据.像一堆沙子一样,没有明确的组织顺序.       堆的 sys.par…
        一行数据是如何来存储的呢?     变长列与定长列,NULL与NOT NULL,实际是如何整理存放到 8k的数据页上呢?     对表格进行增减列,修改长度,添加默认值等DDL SQL,对行存储结构又会有怎么样的影响呢?     什么是大对象,什么是行溢出,存储引擎是如何处理它们呢?             如果转载,请注明博文来源: www.cnblogs.com/xinysu/   ,版权归 博客园 苏家小萝卜 所有.望各位支持!      1 引入     在一个DB内,每…
          索引这块从存储结构来分,有2大类,聚集索引和非聚集索引,而非聚集索引在堆表或者在聚集索引表都会对其 键值有所影响,这块可以详细查看本系列第二篇文章:SQL SERVER大话存储结构_(2)_非聚集索引如何查找到行记录.     非聚集索引内又分为多类:单列索引.复合索引.包含索引.过滤索引等.之前文章有具体分析过非聚集索引的存储情况,但是没有对复合索引及包含索引做过多说明,本文来讲讲这两个索引.         如果转载,请注明博文来源: www.cnblogs.com/xi…
        数据库文件有两大类:数据文件跟日志文件,每一个数据库至少各有一个数据文件或者日志文件,数据文件用来存储数据,日志文件用来存储数据库的事务修改情况,可用于恢复数据库使用.     这里分为两篇博文讲解,本文来说说数据文件.         如果转载,请注明博文来源: www.cnblogs.com/xinysu/   ,版权归 博客园 苏家小萝卜 所有.望各位支持!       本系列上一篇博文链接:SQL SERVER大话存储结构(5)_SQL SERVER 事务日志解析   1…
      本系列上一篇博文链接:SQL SERVER大话存储结构(4)_复合索引与包含索引    1 基本介绍 每个数据库都具有事务日志,用于记录所有事物以及每个事物对数据库所作的操作. 日志的记录形式需要根据数据库的恢复模式来确定,数据库恢复模式有三种: 完整模式,完全记录事物日志,需要定期进行日志备份. 大容量日志模式,适用于批量操作的数据库,可以以更压缩的方式处理日志,需要定期进行日志备份. 简单模式,也有日志文件,只是该模式下可以通过checkpoint自动重用virtual log…
            如果转载,请注明博文来源: www.cnblogs.com/xinysu/   ,版权归 博客园 苏家小萝卜 所有.望各位支持!          SQLServer的数据页大小是8kb,8个连续的物理页组成一个区.区分混合区跟统一区,混合区内可以存储不同数据库对象的内容,通常这个数据库对象较小:统一区表示区内连续的8个数据页存储的都是同一个数据库对象的内容.       SQL SERVER的磁盘读写是按页级进行,每次I/O操作的数据最小单位是以8kb为单位的页.页是存…
一,非聚集索引组合索引 用户可以在多个列上建立索引,这种索引叫做复合索引(组合索引).但复合索引在数据库操作期间所需的开销更小,可以代替多个单一索引.当表的行数远远大于索引键的数目时,使用这种方式可以明显加快表的查询速度. 同时有两个概念叫做窄索引和宽索引,窄索引是指索引列为1-2列的索引,如果不特殊说明的话一般是指单一索引.宽索引也就是索引列超过2列的索引. 设计索引的一个重要原则就是能用窄索引不用宽索引,因为窄索引往往比组合索引更有效.拥有更多的窄索引,将给优化程序提供更多的选择余地,这通常…
一,非聚集索引的include 非聚集索引的Include属性可以让非聚集索引包含其他列.如 CREATE NONCLUSTERED INDEX [NonIxUser] ON [dbo].[Users] ( [NAME] ASC ) INCLUDE ( [ID], [CreatTime]) GO 这表语句就是在Name列的非聚集索引上添加ID,和CreateTime列. 在上一个介绍中,我们知道在查询NAME = '张三180' 时,会出现RID,同时读取次数是3次 现在加上非聚集索引的Incl…
一,新建测试表 CREATE TABLE [dbo].[Users]( ,) NOT NULL, ) NOT NULL, [CreatTime] [datetime] NOT NULL ) ON [PRIMARY] 删除默认聚集索引,新建一个在name列上非聚集索引 插入500条数据 查看该表的页的信息 ---开启跟踪标志 ,) --DBCC TRACEOFF(3604,2588) ---获取对象的数据页,结构:数据库.对象.显示 ) 二.查看非聚集索引的根页面 ,,) 1. 索引根页面有五个子…
当在 SQL Server 数据库中创建一张表时,会在多张系统基础表中插入所创建表的信息,用于管理该表.通过目录视图 sys.tables, sys.columns, sys.indexes 可以查看新建的表的元数据信息. 下面使用创建 Customer 表的过程作为示例. USE [TEST] GO DROP TABLE [dbo].[Customer] GO CREATE TABLE [dbo].[Customer]( [ID] [int] NOT NULL, ) NOT NULL, ) N…