使用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

相關文章
相關標籤/搜索