- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
SQL Server 2014 新特性之内存优化表
方勇
【摘要】
2013年6月25日,微软发布了 Server 2014 CTP1。本文将为您介绍SQL Server 2014 新特性内存优化表。
如果说SQL Server 2012 数据库引擎的亮点是Always On的话,那么SQL Server 2014 的亮点就是内存优化表Memory-optimized tables)了
内存表
在SQL Server 2000 的年代,我们还可以通过方式,将表驻留在中
DBCC PINTABLE ( database_id , table_id )
DBCC PINTABLE 会导致将表读入到内存中。当表中的页由普通的 Transact-SQL 语句读入到高速缓存中时,这些页将标记为内存驻留页。当 SQL Server 需要空间以读入新页时,不会清空内存驻留页。
但是这种方式在SQL Server 2005 不被支持了内存表这种概念,SQL Server 2014。
文件和存储
优化表必须存储到文件组中, Server 提供了一种MEMORY_OPTIMIZED_DATA?文件组用于的逻辑存储位置。
优化表可以包含一个或多个容器,每个容器有可以包含一个或多个。文件了三种的文件:
(Root File):包含了文件和增量文件的元数据
文件(Data File):内存优化表的记录和插入的
增量文件(Delta File日志顺序存储从内存优化表中删除的记录最小信息行号)每个数据文件对应一个增量文件
优化表会使用到日志,同样增删改等操作都会写入日志这是导致使用内存,性能的最大原因,可以考虑使用闪存或者SSD来解决该问题
和机制
SQL Server 2014的优化表让眼前一亮可以改善基于的表的低性能通过的原理机制让我们获得的性能和扩缩性:
数据页和索引页驻留在内存IO瓶颈
采用乐观并发控制,消除了逻辑锁,提高了并发性
效率更高
担心使用内存优化表会不会导致驻留在内存中,系统宕机或者的时候,导致数据无法及时写回内存而丢失。优化表了关系型数据库的特征:
事务持久化:提交DDL或DML更改内存优化表的事务
重启持久化:的状态
介质失败持久化损坏时,我们可以通过的备份和还原来内存优化表到新存储
,优化表有两种持久化选项其中有一种是不保证持久化的:
SCHEMA_ONLY非持久化)只持久化表结构和索引,重启所有数据丢失
SCHEMA_AND_DATA持久化)结构和数据,类似于磁盘的表
我们来分析一下增删改的流程:
操作执行先事务;
操作先到内存中,CheckPoint 的时写回数据文件
操作先内存中删除,并记录行号到文件,记录的删除会合并到数据文件
操作:更新操作在SQL Serer 先删除、然后插入执行
看到,SQL Server 内存表主要改善的是查询性能IO瓶颈。
和软件要求:
SQL Server 2014 x64 版中,因为x64版可以直接使用更多的内存空间
必须有足够的,表不能超过最大内存的%
内存优化表语法
表也不是可以随便使用的,也有着其限制条件或约束。
数据库需要有一个内存优化表文件组:
CREATE DATABASE CanwayDemo
ON
PRIMARY(NAME = [hekaton_demo_data],
FILENAME = C:\DATA\hekaton_demo_data.mdf, size=500MB)
, FILEGROUP [hekaton_demo_fg] CONTAINS MEMORY_OPTIMIZED_DATA(
NAME = [hekaton_demo_dir],
FILENAME = C:\DATA\hekaton_demo_dir)
LOG ON (name = [hekaton_demo_log], Filename=C:\DATA\hekaton_demo_log.ldf, size=500MB)
COLLATE Latin1_General_100_BIN2;
GO
创建表时创建一个非空的主键,并且必须建立非聚集的Hash索引BUCKET_COUNT参数
Use CanwayDemo
Go
CREATE TABLE Destination
(
col1 INT NOT NULL PRIMARY KEY NONCLUSTERED HASH WITH (BUCKET_COUNT = 100000),
col2 INT NOT NULL,
col3 INT NOT NULL
) WITH (MEMORY_OPTIMIZED = ON, DURABILITY = SCHEMA_AND_DATA)
GO
创建一个本机编译存储过程访问优化表
Use
文档评论(0)