zoukankan      html  css  js  c++  java
  • sql server 2014内存表

     内存数据库,指的是将数据库的数据放在内存中直接操作。相对于存放在磁盘上,内存的数据读写速度要高出很多,故可以提高应用的性能。微软的SQL Server 2014已于2014年4月1日正式发布,SQL 2014一个主要的功能即为内存数据库。

    目前来说,数据库镜像和复制是无法与内存优化表兼容的,但AlwaysOn,日志传送,备份还原是完整支持。

    由于内存表数据的存放机制和普通表(基于磁盘的表)完全不同,因此内存表的数据需要一个特别的文件夹(注意不是文件哦)来存放

    USE [master]
    --创建数据库
    CREATE DATABASE [TestDB]
    ON  PRIMARY 
    ( NAME = N'TestDB', FILENAME = N'D:SQL2104SQLDataTestDB.mdf' , 
    SIZE = 204800KB , MAXSIZE = UNLIMITED, FILEGROWTH = 204800KB ) 
    LOG ON 
    ( NAME = N'TestDB_log', FILENAME = N'D:SQL2104SQLDataTestDB_log.ldf' , 
    SIZE = 204800KB , MAXSIZE = 2048GB , FILEGROWTH = 204800KB )
    GO
    --创建内存表使用的文件组
    ALTER DATABASE [TestDB] ADD FILEGROUP [TestDB_MFG1] CONTAINS MEMORY_OPTIMIZED_DATA
    GO
    --创建内存表使用的文件夹
    ALTER DATABASE [TestDB] 
    ADD FILE ( NAME = N'TestDB_MDir1', FILENAME = N'D:SQL2104SQLDataTestDB_MDir1') 
    TO FILEGROUP [TestDB_MFG1]
    GO

    对于每个数据库,只能创建一个内存优化文件组(Memory-Optimized Filegroup),而对于每个内存优化文件组,可以创建多个关联的文件夹。

     PS:内存优化文件组基与FILESTREAM文件组,但是无需为内存优化文件组来启用FILESTREAM。

    创建内存表

    创建内存表限制比较多:

    1. 支持的数据类型:http://msdn.microsoft.com/ZH-CN/library/dn133179(v=sql.120).aspx

    2. 内存优化表支持自增,但唯一允许用于 seed 和 increment 的值为 1;(1,1) 是 seed 和 increment 的默认值;

    3. 内存优化表不支持CHECK约束,在非hash索引列上也不行;

    4. 内存优化表不支持使用的排序规则所具有的代码页并非 1252 的数据类型 char(n) 和 varchar(n);

    5. 内存优化表不支持nvarchar(max)或varchar(max)

    6. 内存优化表索引不支持未使用 *_BIN2 排序规则的字符列上的索引,在非hash索引列上也不行;

    7. 内存优化表上的索引不支持索引键中有可为 Null 的列,在非hash索引列上也不行;

    8. 内存优化表必须有至少一个索引或主键

     创建内存优化表Demo

    CREATE TABLE [dbo].[TB1_IM]
    (
        [c1] [int] NOT NULL IDENTITY(1,1) PRIMARY KEY 
        NONCLUSTERED HASH WITH (BUCKET_COUNT=1000000), 
        [c2] [nchar](200)  COLLATE Chinese_PRC_Stroke_90_BIN2 NOT NULL 
        INDEX ix_c2 NONCLUSTERED HASH WITH (BUCKET_COUNT=1000000),
        [c3] [nvarchar](200) COLLATE Chinese_PRC_Stroke_90_BIN2 NOT NULL,
        [c4] [nvarchar](200) COLLATE Chinese_PRC_Stroke_90_BIN2 NOT NULL,
        INDEX ix_c3_c4 NONCLUSTERED HASH(c3,c4) WITH(BUCKET_COUNT=1000000),
        INDEX ix_c2_c3  NONCLUSTERED (c2,c3)
    )WITH ( MEMORY_OPTIMIZED = ON , DURABILITY = SCHEMA_AND_DATA )

    关于数据持续性

    对于内存优化表,有两种持续性可以选择:SCHEMA_ONLY(非持久表)和SCHEMA_AND_DATA(持久表),SCHEMA_ONLY 选项会导致数据在实例重启后丢失;而对于SCHEMA_AND_DATA(持久表),又可以设置完全持久行还是延迟持续性,延迟持续性选项允许在事务提交时可以不立即将日志写入磁盘,从而提升性能,当然代价就是发生故障时可能丢失数据。

  • 相关阅读:
    指令
    linux学习之多高并发服务器篇(三)
    linux学习之高并发服务器篇(二)
    linux学习之多高并发服务器篇(一)
    Linux学习之socket编程(二)
    Linux学习之socket编程(一)
    myeclipse中如何修改Servlet模板_day01
    Properties的使用以及配置文件值的获取
    Sql_Server中如何判断表中某字段是否存在
    微博开发流程-01
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/4345680.html
Copyright © 2011-2022 走看看