初识内存优化表

创建数据库

创建内存优化数据文件组

   注意:每个数据库只能创建一个内存优化数据文件组。

创建内存优化数据文件

   在文件组MemoryOptimizedData中添加一个文件夹MemoryOptimizedDataFile用来保存内存优化表数据

 

创建内存优化表

    内存优化表分为两种类型:

  • 持久表(默认):把数据保存在内存和内存优化数据文件组中。
  • 非持久表:数据仅保存在内存中,一旦系统因为故障导致重启数据将会丢失。

    因为SSMS目前不支持可视化创建,So只能手动创建内存优化表:

 1 USE MyDB;
 2 GO
 3 
 4 CREATE TABLE MemoryOptimizedTable
 5 (
 6     [ID] INT NOT NULL PRIMARY KEY NONCLUSTERED HASH --此处必须定义非聚集哈希索引主键
 7                       WITH (BUCKET_COUNT = 1024), --此处必须由WITH设置BUCKET_COUNT(存储槽)
 8     [Name] NVARCHAR(50) NOT NULL
 9 )
10 WITH (MEMORY_OPTIMIZED = ON, DURABILITY = SCHEMA_AND_DATA); --此处表示开启持久内存优化

    注意:目前内存优化表有这些限制(1.不支持外键或约束检查;2.不支持IDENTITY自动增长列;3.不支持DML触发器;4.内存一旦耗尽将导致数据写入失败)

    插入15W条测试数据(用时197s):

 创建本地编译存储过程

    本地编译存储过程比普通存储过程执行更快内存占用更少。

    循环执行15W次查询:

 1 CREATE PROCEDURE MemoryProc
 2     WITH NATIVE_COMPILATION, --声明本地编译
 3          SCHEMABINDING, --将视图绑定到架构上
 4          EXECUTE AS OWNER --指定执行用户为当前所有者
 5 AS
 6 BEGIN ATOMIC WITH 
 7 (
 8     TRANSACTION ISOLATION LEVEL = SNAPSHOT, --指定事务隔离级别(SNAPSHOT确保是提交后的最新结果并且可以重复读取)
 9     LANGUAGE = 'us_english' --指定语言
10 ) 
11     DECLARE @num INT = 1;
12     WHILE @num <= 150000
13     BEGIN
14         SELECT [ID], [Name] --此处为绑定到架构的具体对象,所以不能使用'*'
15         FROM dbo.MemoryOptimizedTable --此处必须指定当前所有者dbo
16         WHERE [ID] = RAND() * 150000;
17         SET @num = @num + 1;
18     END;
19 END;

 内存优化表 VS 普通表

    创建普通表:

1 USE MyDB;
2 GO
3 
4 CREATE TABLE GeneralTable
5 (
6     [ID] INT NOT NULL PRIMARY KEY,
7     [Name] NVARCHAR(50) NOT NULL
8 )

    同样的插入15W条测试数据(用时324s):

 

    创建普通的存储过程(循环执行15W次查询):

 1 CREATE PROCEDURE GeneralProc 
 2 AS
 3 DECLARE @num INT = 1;
 4 WHILE @num <= 150000
 5 BEGIN
 6     SELECT [ID], [Name]
 7     FROM GeneralTable
 8     WHERE [ID] = RAND() * 150000;
 9     SET @num = @num + 1;
10 END;

    普通表并发压力性能测试:

    并发线程数(Number of Threads):10

    用时(Elapsed Time):6907s

    内存优化表并发压力性能测试:

 

    并发线程数(Number of Threads):10

    用时(Elapsed Time):137s

总结

    从并发压力性能测试结果可以看出内存优化表完爆普通表!厉害了!Word内存优化表!官方表示内存优化表将来会有很多改进,让我们拭目以待吧!

转载于:https://www.cnblogs.com/poepoe/p/7196284.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值