SQL SERVER 2014 内存表 测试 结果慢 (2016-05-16)

大家好,

     最近下了一个 SQL 2014  64位企业版, 安装环境:WIN7 X64 企业版

台式机环境为: I7 4770K, 16G 内存 , 机械硬盘;

一张是传统的表 disk_card , 一张是内存表 snap_card,结构完全相同

两张表记录条数,均为 27752311 条, 而且内容完全一样(从disk__card 整表复制到snap__card的)

disk_card  无索引  ( 其实它是 select .... into ... 语句创建的)

snap_card  的关键字
WITH ( BUCKET_COUNT = 60000000)

)WITH ( MEMORY_OPTIMIZED = ON , DURABILITY = SCHEMA_ONLY )

按照文档 bucket_count  的数量 相对也足够;


这时候, 查询
select count(*)   from disk_card   
耗时 1秒钟, 重新查询多次,每次都是1秒钟



查询
select count(*)    from snap_card  WITH (SNAPSHOT)
每次都是6秒钟



就算加上where 子句, 也是disk_card的要明显快;


不知道问题会在哪儿  我猜测了几个可能性,但是不太好证明;

1.  内存表创建有问题;  
       (如果不去做速度比较, 它可正常的很)

2.  X64的SQL2014企业版应该装到 SERVER 2008 或者其他 服务器才可发挥性能。

    (http://www.itpub.net/thread-1905086-1-1.html    这位同仁配置很好,貌似也一样 说 慢)

   这个现象, 大家怎么看, 最近这段时间我会持续关注这个,若有进展,也跟大家分享。

内存太小了,建议服务器内存起码上256GB的。

恩, 内存是小了, 16G; 不过条件限制, 没办法在更高级的设备上做此测试;

测试的时候,我也关注了一下内存占用的方面; 下面我补充一下测试环境:

  1. select @@VERSION
    Microsoft SQL Server 2014 - 12.0.2000.8 (X64)
    Feb 20 2014 20:04:26
    Copyright (c) Microsoft Corporation
    Enterprise Edition (64-bit) on Windows NT 6.1 (Build 7601: Service Pack 1)

    2 snap_card 填数据之前, WINDOWS 内存占用比例为 19% (总共 16G), 数据装满 27752311 条 之后,
    内存占用 上升到 65%。

    1. SQL SERVER 2014 服务器内存选项 最小为 0M, 最大 为 2147483647M ( 这年头可以等效无穷大了)

    回复 【苏小喵 】
    看样子还剩下不少的内存, 执行一天简单的语句,感觉应该不是问题;

    另外,今天早晨过来, 重新打开企业管理器测试:

    执行 select count(*) from disk_card; (传统数据表)

                     第一次 16秒, 第二次之后测试了十几次, 都是0 秒或者1秒
                                100000
         执行   select count(*) from snap_card;    (内存表)
    
                     每次都是6秒
    
         对于disk_card  第二次之后的“快”, 估计可以用 首次执行 编译时间 + 缓存建立 来理解,  因为语句简单, 编译时间基本可以忽略,
    
        主要是缓存帮忙省了时间;  对此我在做一个测试:
    
                我选对两张表, 都运行一个带 WHERE 子句的查询, (返回记录数结果是 17752311 条  )
    
                         select count(id) from disk_card where id > 117607922,   耗时 0 秒 ( 毫秒级忽略吧,查询时间计数器没跳表)
    
                         select count(id) from snap_card where id > 117607922     耗时 6秒
    
            测试这些命令的时候,服务器内存的占用保持稳定在 72%左右,那么问题来了:
    
          一个是缓存 disk_card, 一个是内存 snap_card,目前表现来看 ,  内存snap_card耗时很稳定, 但是相对很慢, 
    
            貌似snap_card 有点孤立无援, 没有享受到传统表的缓存机制,  用词不当的还请见笑了。