SQL Server 2016:内存列存储索引

SQL Server 2016:内存列存储索引

 

SQL Server 2016的一项新特性是可以在“内存优化表(Memory Optimized Table)”上添加“列存储索引(Columnstore Index)”。要理解这是什么意思,我们应该首先解释术语列存储索引和内存优化表。

 

列存储索引是一种按照列而不是行组织数据的索引。每个数据块只存储一个列的数据,最多包含100万行。因此,如果数据为5列1000万行,那么就需要存储在50个数据块中。当只查询部分列时,这种数据组织策略特别有效,因为数据库不会从磁盘读取用户不关心的列。

 

列存储索引比表扫描要快得多,但没有传统的B树索引那么快。这特别适合于那种无法预测需要什么索引的即时报表。

 

内存优化表正如它的名字, 它是一个经过优化并一直驻留在内存中的表。这有许多好处,比如锁无关写,但它也有很大的局限性。比如,只允许有8个索引,这对于用于即时查询的表而言限制太大。

 

SQL Server 2016部分地弥补了这种限制,它允许那8个索引中的其中一个为列存储索引。但要遵循如下规则:

    像内存优化表上的其它索引一样,列存储索引必须在表创建时定义。  
    列存储索引必须包含基表中的所有列。(在普通表上的列存储索引不存在这种限制。)    
    列存储索引必须包含基表中的所有行。换言之,它不能是“筛选索引(filtered index)”。

 

一个与内存优化表相关的特性是创建本地编译查询。数据库使用C编译器将这些查询编译成了机器码,而不使用SQL Server解释器。使用列存储索引的查询可以使用这个选项,而不用总是通过解释器运行。

 

查看英文原文:SQL Server 2016: In-Memory Columnstore Indexes

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值