SQL Server 2016 白皮书
内容:内存优化表
问题? -----内存优化表在2014版本推出,主要是如何作用?如何使用?目前有何变化?
内存优化表是可以将表放入内存中,能提升操作性能。
-----内存优化表完全不存在锁的概念。
如何创建一个内存优化表:
(1) 先创建一个特殊的文件组
也可以通过语句创建
ALTER DATABASE test
ADD FILEGROUP SoarTest1 CONTAINS MEMORY_OPTIMIZED_DATA;
增加文件容器
ALTER DATABASE Test
ADD FILE
(
NAME = 'SoarFileOne',
FILENAME ='C:Program FilesMicrosoft SQL ServerMSSQL13.SOAR2016MSSQLDATASoarFileOne'
)
TO FILEGROUP [SoarTest];
GO
增加后结果
内存优化表:可以是持久表或者非持久表。
a.对于一个持久表是将数据存储在内存中,而且也保存在内存优化文件组中。
b.对于一个非持久表,数据是仅存储在内存中的,所以,如果系统崩溃或重启,数据就会丢失。
MEMORY_OPTIMIZED 选项为ON ,表示表为内存优化表。
以及DURABILITY 选项为SCHEMA_AND_DATA,此选项是针对持久表的。
如果选项为schema_only,表示不保存在磁盘中。
遇到异常:
提示:
创建表提示:资源池 'default' 没有足够的系统内存来运行此查询。
解决方案:“勾选”启用资源调控器,---为什么呢!---分配内存
重点:内存表示使用内存的,当内存占完就不能写了。磁盘中的文件就变成了内存的备份,由一个线程单独定时完成。所以如果服务重启会,会读取备份中的数据,但会有数据差。
测试内存表和磁盘表性能
磁盘表删除用的时间
2016 与2014的变动:
索引和模式修改不需要重新来进行修改,可以直接修改