• 测试压缩表和索引以及分区索引


    分区在一个实例不同数据库创建相同的表,数据库没有其他消耗,分别在有聚集索引和堆表中进行插入测试

    A/B两个库 对应A/B表

    create table A
    (
    id int identity(1,1),
    str1 char(100) default replicate('a',100),
    str2 varchar(2000) default replicate('b',500),
    str3 varchar(2000) default replicate('c',1000)
    )
    go

    insert into A default values
    go 1000000

    在B库 B表 id 上添加聚集索引

    插入速度对比

                   堆表中耗时:18:12

                   聚集表中耗时:06:49

    首先压缩B表(page最大限度压缩):

    压缩前

    未命名

    1

    差距很大哦!

    聚集索引逻辑读数=表的页数

    (1000000 行受影响)
    表 'testbp1'(B表)。扫描计数 1,逻辑读取 1708 次,物理读取 0 次,预读 14 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。

    (1 行受影响)

    表: 'testbp1' (1605580758);索引 ID: 1,数据库 ID: 8
    已执行 TABLE 级别的扫描。
    - 扫描页数................................: 1702
    - 扫描区数..............................: 215
    - 区切换次数..............................: 214
    - 每个区的平均页数........................: 7.9
    - 扫描密度 [最佳计数:实际计数].......: 99.07% [213:215]
    - 逻辑扫描碎片 ..................: 0.24%
    - 区扫描碎片 ..................: 1.86%
    - 每页的平均可用字节数.....................: 11.1
    - 平均页密度(满).....................: 99.86%
    DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。

    A堆表

    (1000000 行受影响)
    表 'testbp'。扫描计数 1,逻辑读取 200000 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。

    (1 行受影响)

    A表:

    表: 'testbp' (325576198);索引 ID: 0,数据库 ID: 10
    已执行 TABLE 级别的扫描。
    - 扫描页数................................: 200000
    - 扫描区数..............................: 25006
    - 区切换次数..............................: 25005
    - 每个区的平均页数........................: 8.0
    - 扫描密度 [最佳计数:实际计数].......: 99.98% [25000:25006]
    - 区扫描碎片 ..................: 0.03%
    - 每页的平均可用字节数.....................: 1.0
    - 平均页密度(满).....................: 99.99%
    DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。

    差距哦!

    在A 表添加id字段添加聚集索引分别插入1万行数据:

    结果未压缩4S 插入完

    压缩后的插入十几分钟还未完 最后两次ssms未响应二失败,cpu往上飙,很明显是要解压缩造成的,只能说查询的话,绝对给力,插入就不行啦

    3

    测试下压缩索引:(压缩后的表创建索引也会慢)

    首先只能在a表测试了压缩和未压缩比较 我这里用top100000

    未加索引:
    SET STATISTICS IO ON
    select TOP 100000 [id],[str3] FROM [dbo].[testbp] WHERE [str2] IS NOT NULL AND [str1] IS NOT NULL ORDER BY [str1] DESC

    (100000 行受影响)
    表 'testbp'。扫描计数 1,逻辑读取 22518 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。

    (1 行受影响)

    未压缩之前插入1千行对比:2:22

    回滚压缩非聚集索引对比:2:34 还是可以看得出的哦,当然用压缩索引还是会使查询加快 对插入还是有点耗资源

  • 相关阅读:
    【css基础修炼之路】— 谈谈元素的垂直水平居中
    git在linux安装步骤详解!!
    idea :不支持发行版本11问题
    centos7 升级gcc
    mysql--优化
    Docker安装
    使用idea从零编写SpringCloud项目-zuul
    使用idea从零编写SpringCloud项目-Hystrix
    使用idea从零编写SpringCloud项目-Feign
    使用idea从零编写SpringCloud项目-Ribbo
  • 原文地址:https://www.cnblogs.com/kingwwz/p/5505192.html
Copyright © 2020-2023  润新知