zoukankan      html  css  js  c++  java
  • (三)索引分区知识详解

    一、与表分区对齐

    在了解索引分区之前,需先了解下分区索引与表对齐的概念,若分区与表使用相同的分区架构和相同分区依据列,则说明分区与表的分区方式相同,我们称为对齐,反之则不对齐。

    对于已分区的与表对齐的分区索引,在排序的时候,将一次性在内存或者tempdb中生成排序表;若是不与分区表对齐,将在每个分区同时生成排序表,因此所需内存空间会更多。每个排序表占用最小40KB空间,对齐索引分区将只是占用40kb,非对齐若有100个分区将占用40*100kB空间。因此是否对齐将直接影响排序性能。

    同时对于不对齐的索引,将无法完成分区切换的动作,无法实现分区的子集快速管理。

    新建PartionTest01以下分区表进行索引测试:

    --新建测试表
    CREATE TABLE PartionTest01(logid int identity(1,1),orderid int,salesDate datetime) ON pc_PartionTest01([salesDate])--指定分区方案
    
    --查询分区情况
    SELECT Object_name(p.object_id) AS [object_name],
    id.name AS index_name,
    ps.name partition_scheme,
    ds.name filegroup,
    pf.name partition_function,
    pf.type_desc+':'+case when pf.boundary_value_on_right=0 then 'Left' else 'Rigth' end function_type,
    p.partition_number,
    Isnull(prv.VALUE,'') AS boundy_value,
    p.rows
    FROM sys.indexes id
    JOIN sys.partition_schemes ps ON ps.data_space_id = id.data_space_id
    JOIN sys.destination_data_spaces dds ON ps.data_space_id = dds.partition_scheme_id
    JOIN sys.data_spaces ds ON ds.data_space_id = dds.data_space_id
    JOIN sys.partitions p ON p.object_id = id.object_id AND p.index_id = id.index_id AND dds.destination_id = p.partition_number
    JOIN sys.partition_functions pf ON ps.function_id = pf.function_id
    LEFT JOIN sys.partition_range_values prv ON prv.function_id = pf.function_id AND prv.boundary_id = p.partition_number - pf.boundary_value_on_right
    WHERE Object_name(id.object_id) = 'PartionTest01'
    查询结果如下:

    二、聚集索引分区

    测试一:对于非唯一聚集索引分区时,若未在聚集键明确指定分区列,默认将在聚集索引键列表中添加分区依据列

    测试二:对于唯一聚集索引分区时,必须添加分区依据列,如下报错。添加分区依据列之后新建成功,只有添加了分区依据列才能在单个分区保证唯一。

    三、非聚集索引分区

    测试一:非唯一非聚集索引,自动包含分区依据列为键列。

    测试二:唯一非聚集,仍然需要指定分区依据列。

    测试三:指定包含分区依据列,可成功

    结论

    1. 新建唯一索引都需要明确指定分区依据列,以确保表中不存在重复的键值。
    2. 新建非唯一索引若未明确指定分区依据列,则会自动将分区依据列指定为索引键列
    3. 新建包含非唯一非聚集索引,将不会再添加分区依据列为索引键列。
  • 相关阅读:
    [MFC] MFC 用mciSendString加载WAV资源文件
    [JS] HTML QQ分享界面js代码
    [MFC] MFC 打开HTML资源(用ID版,也可加载到自己的web控件上)
    [ACM_暴力][ACM_几何] ZOJ 1426 Counting Rectangles (水平竖直线段组成的矩形个数,暴力)
    [ACM_动态规划] ZOJ 1425 Crossed Matchings(交叉最大匹配 动态规划)
    easyui combobox可编辑的情况下,只能首字母开始过滤的问题选项
    easyui-combobox绑定回车事件注意事项
    easyui-combobox绑定回车事件相关
    jquery-qrcode 生成和读取二维码
    zxing生成二维码和读取二维码
  • 原文地址:https://www.cnblogs.com/chhuang/p/4159345.html
Copyright © 2011-2022 走看看