HTML5技术

In-Memory:内存数据库 - 悦光阴(2)

字号+ 作者:H5之家 来源:H5之家 2017-01-08 11:00 我要评论( )

filegroup fg_MemoryOptimizedData contains MEMORY_OPTIMIZED_DATA; (name = Test_MemboryDBDirectory,filename ) to FILEGROUP fg_MemoryOptimizedData; 文件组属性:CONTAINS MEMORY_OPTIMIZED_DATA 子句,指定F

filegroup fg_MemoryOptimizedData contains MEMORY_OPTIMIZED_DATA; ( name=Test_MemboryDBDirectory, filename ) to FILEGROUP fg_MemoryOptimizedData;

文件组属性:CONTAINS MEMORY_OPTIMIZED_DATA 子句,指定File Group用于存储内存优化表数据,每个数据库只能指定一个存储内存优化数据的File Group,可以在该File Group下创建多个Directory,分布在不同的物理Disk上,加快内存优化表数据还原的速度。

二,创建内存优化表

内存优化表用于存储用户数据,可以持久化存储,数据存储在内存中,同时,在Disk上维护数据的一个副本,通过选项 DURABILITY= SCHEMA_AND_DATA 指定持久化存储内存优化表;也可以只存储在内存中,通过选项DURABILITY= SCHEMA_ONLY指定。在内存优化表上,可以创建nonclustered index 或nonclustered hash index,每个内存优化表中至少创建一个Index。

. ( , (64) not null, (10,2) not null, (16) not null, (max) null, (bucket_count=2000000) ,) ,index idx_Products_Unit nonclustered hash(Unit) with(bucket_count=40000) ) with(memory_optimized=on,durability= schema_and_data) go

1,内存优化:MEMORY_OPTIMIZED

[MEMORY_OPTIMIZED = {ON | OFF}]

默认值是OFF,指定创建的表是硬盘表;设置选项MEMORY_OPTIMIZED为ON,指定创建的表是内存优化表;

2,持久性:Durability 

DURABILITY = {SCHEMA_ONLY | SCHEMA_AND_DATA}

默认值是SCHEMA_AND_DATA,指定创建的内存优化表是持久化的,这意味着,数据更新会持久化存储到Disk上,在SQL Server重启之后,内存优化表的数据能跟根据存储在Disk上的副本还原。选项 SCHEMA_ONLY 指定创建的内存优化表是非持久化的,这意味着Table Schema是持久化存储到Disk上,但是,任何数据更新都不会持久化到Disk上,在SQL Server重启之后,内存优化表的数据会丢失。

3,哈希索引和范围索引

内存优化表支持Hash Index,属性 BUCKET_COUNT 指定为Hash Index创建的bucket的数量,一般hash bucket的数量是数据行的1-2倍,如果无法估计bucket的数量,请创建范围索引(NonClustered Index),索引结构是Bw-Tree。

Hash 索引由一个数组和多个数据行链组成,每一个数组元素叫做一个Hash Bucket,通过内置的Hash函数,将Hash索引的Key映射到Hash Bucket上,例如,如果Hash Index的Key是(Col1,Col2),根据HashFunction(Col1,Col2)返回的Hash Value,将数据行映射到指定的Hash Bucket上;如果多个Key映射到同一个Hash Bucket上,那么这些Key组成一个链。例如:数据表结构是(Name,City),在Name字段上创建Hash Index,Hash值相同的数据行链接成一个单向链。

三,创建Natively Compiled SP

本地编译SP在创建时编译成机器代码,整个SP以原子方式执行,这意味着,以SP为单位,整个SP中的所有操作是一个原子操作,要么执行成功,要么执行失败。

create procedure dbo.usp_GetProduct native_compilation, schemabinding, execute as owner snapshot, language ) , , , ,.ProductID

1,在本地编译SP中,能够为参数,变量指定Nullability属性,默认值是NULL

NOT NULL 属性:不能为参数或变量指定NULL值,

  • 在本便编译SP中,为参数指定NOT NULL属性,不能为参数指定NULL值;
  • 在本便编译SP中,为变量定义NOT NULL属性,必须在Declare时初始化变量;
  • 2,本地编译SP必须包含两个选项:SCHEMABINDING 和 ATOMIC Block

  • SCHEMABINDING:绑定引用的内存优化表
  • ATOMIC Block:在原子块中的所有语句,以单个事务运行;在事务成功时,所有语句都提交成功;在事务失败时,所有语句都回滚。Atomic Bloc保证原子地执行SP,如果SP在其他事务的上下文中被调用,那么该SP开始一个新的事务。
  • Atomic blocks guarantee atomic execution of the stored procedure. If the procedure is invoked outside the context of an active transaction, it will start a new transaction, which commits at the end of the atomic block.
  •  

    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章
    • 【第一篇】ASP.NET MVC快速入门之数据库操作(MVC5+EF6) - 三生石上

      【第一篇】ASP.NET MVC快速入门之数据库操作(MVC5+EF6) - 三生石上

      2016-12-23 17:00

    • 使用Web Storage模拟数据库 - MRGan

      使用Web Storage模拟数据库 - MRGan

      2016-12-04 11:00

    • 八年数据库之路的感悟 - Double_K

      八年数据库之路的感悟 - Double_K

      2016-11-16 14:00

    • IndexedDB:浏览器里内置的数据库(转) - letvar

      IndexedDB:浏览器里内置的数据库(转) - letvar

      2016-10-26 10:00

    网友点评