2015-06-09 37 views
0

SQL 2014存储器表支持两种类型的索引,散列非聚集的,非clustered.Since存储器优化的表不被存储为行,我们需要有一个索引compulosary.Below是语法创建散列索引在存储器OLTP散列索引与非聚集

CREATE TABLE dbo.sample_memoryoptimizedtable_Hash 
(
c1 int NOT NULL, 
c2 float NOT NULL, 
c3 decimal(10, 2) NOT NULL 
CONSTRAINT PK_sample_memoryoptimizedtable_Hash **PRIMARY KEY NONCLUSTERED HASH** 
(
c1 
)WITH (BUCKET_COUNT = 1024) 
)WITH (MEMORY_OPTIMIZED = ON , DURABILITY = SCHEMA_AND_DATA) 
GO 

上面的语句创建一个散列索引,存储各行到他们的水桶.Buckets包含指向数据的内存地址。

但是,当我们创建非聚集索引下面defition

CREATE TABLE dbo.sample_memoryoptimizedtable_Range 
(
c1 int NOT NULL, 
c2 float NOT NULL, 
c3 decimal(10, 2) NOT NULL 
CONSTRAINT PK_sample_memoryoptimizedtable_Range PRIMARY KEY NONCLUSTERED 
(
c1 ASC 
) 
)WITH (MEMORY_OPTIMIZED = ON , DURABILITY = SCHEMA_AND_DATA) 
GO 

如何上述索引存储,这是存储为B树,因为这个指数不散列和表,索引是在启动时重新创建。 SQL如何存储数据。

以下是最好的链接和我的分析。

http://www.mssqltips.com/sqlservertip/3099/understanding-sql-server-memoryoptimized-tables-hash-indexes/

回答

1

你所指的“非聚集”指标实际上是范围索引。哈希和范围索引都是非集群索引,并且在内存中的OLTP表中没有“集群”索引(主键被强制实施为集群哈希索引)。范围索引是通过修改的B树实现的,您可以在sigmod白皮书http://research.microsoft.com/pubs/193594/Hekaton%20-%20Sigmod2013%20final.pdf

+0

阅读更多关于两者的底层细节。谢谢我在网上发现了这个,所以开始阅读它并想到了解决方案。 – TheGameiswar