使用SQL Server内存优化表 In-Memory OLTP

若是你的系统有高并发的要求,能够尝试使用SQL Server内存优化表来提高你的系统性能。你甚至能够把它看成Redis来使用。html

要使用内存优化表,首先要在如今数据库中添加一个支持内存优化的文件组。sql

Memory Optimized File Group

能够使用下列脚原本向现有数据库添加内存优化文件组:数据库

ALTER DATABASE SomeDatabase ADD FILEGROUP Memory CONTAINS MEMORY_OPTIMIZED_DATA; ALTER DATABASE SomeDatabase ADD FILE ( NAME = 'SomeDatabase_InMemory', FILENAME = 'E:\Database\SomeDatabase_InMemory' ) TO FILEGROUP Memory; ALTER DATABASE SomeDatabase SET MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT=ON; GO

 

建立内存优化表,使用MEMORY_OPTIMIZED = ON来启用内存优化:缓存

CREATE TABLE [dbo].[CachedData] ( [Key] [VARCHAR](900) NOT NULL, [Data] [VARBINARY](MAX) NOT NULL, [Expiry] [DATETIME] NOT NULL, PRIMARY KEY NONCLUSTERED ([Key] ASC) ) WITH (MEMORY_OPTIMIZED = ON);

 

这样内存优化表就能够使用了,另外若是你的数据不须要进行持久化存储,能够使用DURABILITY = SCHEMA_ONLY,来获得更好的性能:并发

优化进阶

在使用内存优化表的过程当中发现,当并发大或数据库压力大时,访问内存优化表会提示内存不足的状况,但实际内存是够的。这实际上是一个误报,能够查看微软官方文档了解更多详情:高并发

简单的说,要解决这个问题就是须要打开Resource Governor,Resource Governor在默认状况下是关闭的。性能

为了更好的管理资源的使用状况,咱们须要给缓存的这个数据库建立一个独立的Resource Pool,与系统默认的Resource Pool独立开。优化

Create Resource Pool

建立一个新的Resource Pool:spa

-- Disable resource governor ALTER RESOURCE GOVERNOR DISABLE; GO CREATE RESOURCE POOL CacheDbPool WITH ( MAX_CPU_PERCENT = 50, MAX_MEMORY_PERCENT = 30 ); GO -- Reconfigure resource governor -- Reconfigure enables resource governor ALTER RESOURCE GOVERNOR RECONFIGURE; GO

 

详细配制参数可参阅微软官方文档:.net

Bind Resource Pool

将新建的Resource Pool和数据库进行关联:

-- Bind Database with resource pool EXEC sys.sp_xtp_bind_db_resource_pool @database_name = N'SomeDatabase', @pool_name = N'CacheDbPool'; -- Take database offline and then bring it back online to begin using resource pool. GO USE [master]; GO ALTER DATABASE [SomeDatabase] SET OFFLINE; GO ALTER DATABASE [SomeDatabase] SET ONLINE; GO
 

这样内存优化就设置完成了。

若是须要删除Resource Pool,须要先解绑数据库:

-- Unbind resource pool and drop it. EXEC sys.sp_xtp_unbind_db_resource_pool @database_name = N'SomeDatabase'; DROP RESOURCE POOL CacheDbPool;

原文地址:http://www.zkea.net/codesnippet/detail/sql-server-in-memory-oltp.html

相关文章
相关标签/搜索