zoukankan      html  css  js  c++  java
  • 测试压缩表和索引以及分区索引

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

    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 还是可以看得出的哦,当然用压缩索引还是会使查询加快 对插入还是有点耗资源

  • 相关阅读:
    beforeRouteLeave 实现vue路由拦截浏览器的需求,进行一系列操作 草稿保存等等
    VUE 路由变化页面数据不刷新问题
    vue 监听 watch 使用
    vue-cli配置文件详解
    vue-cli脚手架中webpack配置基础文件详解
    Dbus组成和原理
    NUMA架构的优缺点
    define 的全部使用方法
    敏捷(Agile)——“说三道四”
    Linux 内核模块编译 Makefile
  • 原文地址:https://www.cnblogs.com/kingwwz/p/5505192.html
Copyright © 2011-2022 走看看