内存表

 

内存表将数据保留在内存当中,在高并发的数据更新中,性能高于常用的磁盘表。

 

创建

 

1.在数据库中添加 momery optimized data文件组。

 

 

 

2.向该组添加filestream文件。

 

 

 

 

 

3.

--创建内存表
CREATE TABLE [dbo].[person]
(
ID int not null,
name varchar(50) not null,
mark varchar(50) 

--内存表创建时必须声明主键,并且只能创建非聚集索引
 CONSTRAINT [PK_person]  PRIMARY KEY NONCLUSTERED 
(
    id 
)
--with的参数表明该内存表数据会持久保存,数据不会丢失。
)WITH ( MEMORY_OPTIMIZED = ON , DURABILITY = SCHEMA_AND_DATA )
GO

 

 

4.内存表使用的一些限制。

 

1).使用内存表不能跨数据库,跨数据库的插数据,串表都不行,只能在同一数据库中串表,插入等。

A user transaction that accesses memory optimized tables or natively compiled modules cannot access more than one user database or databases model and msdb, and it cannot write to master.

 

2).对内存表不能使用一些指令如:truncate ,merge等。

 

3)只有内存表可以建hash索引。(hash索引在查询条件字段很长或字段多个时使用)

 

经hash计算值相同的会放到同一个bucket中,数据量大就把bucket_count调到最大。

ALTER TABLE [dbo].[person] ADD INDEX [ix_psonId] NONCLUSTERED HASH 
(
    [ID]
)WITH ( BUCKET_COUNT = 1048576)
GO

 

posted @ 2020-08-13 10:11  JinweiChang  阅读(212)  评论(0编辑  收藏  举报