SQL server 2014 内存表特性概述

内存优化表是SQL server2014版本中推出的新特性之一。也是基于create table创建的,只不过是驻留在内存中表。从内存读取表中的行和将这些行写入内存。 整个表都驻留在内存中。表数据的另一个副本维护在磁盘上,但仅用于持续性目的。内存中 OLTP 与 SQL Server 集成,以便在所有方面(如开发、部署、可管理性和可支持性)提供无缝体验。 内存优化表中的行是版本化的。 这意味着表中的每行都可能有多个版本。 所有行版本均维护在同一个表数据结构中。 本文主要描述SQL server 2014内存表的相关特性。

一、基本特性

    是一张持续驻留在内存中的表。
    使用基于行版本化特性(等同于Oracle MVCC),需要维护每一个行的多个不同版本。
    行版本控制用于实现对同一行的并发读取和写入,注意此处是并发。
    如表tb1有三行:r1、r2 和 r3。 r1 有三个版本,r2 有两个版本,r3 有四个版本。
    同一行的不同版本不必占用连续的内存位置。 不同的行版本可分散到整个表数据结构中。

二、持久化特性

    支持事务(ACID)原则的完全持久化表,因为磁盘上会有相应的副本。
        使用延迟事务提交写入磁盘。缺点是丢失已提交但未保存到磁盘的事务。
    非持久的内存优化表,不记录这些表的日志且不在磁盘上保存它们的数据。掉电丢失,等同mysql memory引擎。     

三、性能与可伸缩

    使用本机编译的存储过程获得最佳性能,解释性TSQL一般。
    对于基于复杂存储过程实现逻辑,且应用较少调用的的场景,表现优异。
    内存表哈希索引高于非聚集索引,内存表非聚集索引性能高于磁盘表非聚集索引。
    解决了IO瓶颈,缺点是需要增大内存开销。
    避免了闩锁与旋转锁争用。
    基于乐观并发控制形式来实现所有事务隔离级别,解决了读阻塞写的问题。Oracle是用MVCC及undo来搞定。

四、内存表图示描述

下图为内存表调用方式描述图
SQL server 2014 内存表特性概述_第1张图片

下图为本文草画的流程图
SQL server 2014 内存表特性概述_第2张图片

你可能感兴趣的:(sql,优化,server,内存,管理,磁盘)