SQL SERVER 2016研究四

SQL Server 2016 白皮书

内容:内存优化表

问题? -----内存优化表在2014版本推出,主要是如何作用?如何使用?目前有何变化?

内存优化表是可以将表放入内存中,能提升操作性能。

-----内存优化表完全不存在锁的概念。

如何创建一个内存优化表:

(1)          先创建一个特殊的文件组

SQL SERVER 2016研究四

也可以通过语句创建

ALTER DATABASE test

ADD FILEGROUP SoarTest1 CONTAINS MEMORY_OPTIMIZED_DATA;

增加文件容器

ALTER DATABASE Test

ADD FILE

(

NAME = 'SoarFileOne',

FILENAME ='C:\Program Files\Microsoft SQL Server\MSSQL13.SOAR2016\MSSQL\DATA\SoarFileOne'

)

TO FILEGROUP [SoarTest];

GO

增加后结果

SQL SERVER 2016研究四

SQL SERVER 2016研究四

内存优化表:可以是持久表或者非持久表。

a.对于一个持久表是将数据存储在内存中,而且也保存在内存优化文件组中。

b.对于一个非持久表,数据是仅存储在内存中的,所以,如果系统崩溃或重启,数据就会丢失。

MEMORY_OPTIMIZED 选项为ON   ,表示表为内存优化表。

以及DURABILITY 选项为SCHEMA_AND_DATA,此选项是针对持久表的。

如果选项为schema_only,表示不保存在磁盘中。

遇到异常:

提示:

创建表提示:资源池 'default' 没有足够的系统内存来运行此查询。

解决方案:“勾选”启用资源调控器,---为什么呢!---分配内存

重点:内存表示使用内存的,当内存占完就不能写了。磁盘中的文件就变成了内存的备份,由一个线程单独定时完成。所以如果服务重启会,会读取备份中的数据,但会有数据差。

SQL SERVER 2016研究四

测试内存表和磁盘表性能

SQL SERVER 2016研究四

SQL SERVER 2016研究四

SQL SERVER 2016研究四

磁盘表删除用的时间

SQL SERVER 2016研究四

2016 与2014的变动:

索引和模式修改不需要重新来进行修改,可以直接修改

SQL SERVER 2016研究四

上一篇:flask 源码剖析


下一篇:C++进阶4.C++知识整理