大家好,我是考100分的小小码 ,祝大家学习进步,加薪顺利呀。今天说一说使用SQL Server内存优化表 In-Memory OLTP「建议收藏」,希望您对编程的造诣更进一步.
如果你的系统有高并发的要求,可以尝试使用SQL Server内存优化表来提升你的系统性能。你甚至可以把它当作Redis来使用。
要使用内存优化表,首先要在现在数据库中添加一个支持内存优化的文件组。
Memory Optimized File Group
可以使用下列脚本来向现有数据库添加内存优化文件组:
ALTER DATABASE SomeDatabase ADD FILEGROUP Memory CONTAINS MEMORY_OPTIMIZED_DATA; ALTER DATABASE SomeDatabase ADD FILE ( NAME = "SomeDatabase_InMemory", FILENAME = "E:DatabaseSomeDatabase_InMemory" ) TO FILEGROUP Memory; ALTER DATABASE SomeDatabase SET MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT=ON; GO
代码100分
创建内存优化表,使用MEMORY_OPTIMIZED = ON来启用内存优化:
代码100分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:
-- 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
详细配制参数可参阅微软官方文档:
Bind Resource Pool
将新建的Resource Pool和数据库进行关联:
代码100分-- 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
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/10813.html