使用SQL Server内存优化表 In-Memory OLTP「建议收藏」

使用SQL Server内存优化表 In-Memory OLTP「建议收藏」如果你的系统有高并发的要求,可以尝试使用SQL Server内存优化表来提升你的系统性能。你甚至可以把它当作Redis来使用。

如果你的系统有高并发的要求,可以尝试使用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

(0)
上一篇 2022-12-21 14:00
下一篇 2022-12-21

相关推荐

  • Python字典:构建网站页面所需的完美数据结构

    Python字典:构建网站页面所需的完美数据结构在Web开发中,数据结构的选择非常关键。Python中提供了一种非常有用的数据结构——字典。字典提供了一种映射关系,将键映射到值上。在构建网站页面时,使用字典可以方便地存储和管理页面所需的各种数据。这篇文章将详细介绍Python字典在网站开发中应用的方方面面。

    2024-01-26
    61
  • 南宁哪里可以开电线电缆发票-中国-新闻网[亲测有效]

    南宁哪里可以开电线电缆发票-中国-新闻网[亲测有效]南宁哪里可以开电线电缆发票【152 * 9б 28 * 21 б9】陈生,诚、信、合、作,保、真、售、后、保、障、长、期、有、效。adb的全称为Android Debug Bridge,是Andro…

    2023-02-02
    101
  • mysql学习笔记之字段类型选择「终于解决」

    mysql学习笔记之字段类型选择「终于解决」1. 数据库的字段选择 在数据表的结构关系确定之后,这个时候就需要去确定相应的数据表的字段类型 1.1 字符串类型字段 char与varchar以及text char => char(长度) -> …

    2023-03-11
    99
  • mysql的视图_mysql数据库笔记

    mysql的视图_mysql数据库笔记1 #视图 2 /* 3 含义:虚拟表,和普通表一样使用 4 mysql5.1版本出现的新特性,是通过表动态生成的数据 5 6 比如:舞蹈班和普通班级的对比 7 创建语法的关键字 是否实际占用物理空间

    2023-03-26
    145
  • 图数据库 Nebula Graph RC1 Release Note

    图数据库 Nebula Graph RC1 Release NoteNebula Graph:一个开源的分布式图数据库。作为唯一能够存储万亿个带属性的节点和边的在线图数据库,Nebula Graph 不仅能够在高并发场景下满足毫秒级的低时延查询要求,还能够实现服务高…

    2022-12-15
    110
  • mysql8.0版本安装教程_基础版标准版

    mysql8.0版本安装教程_基础版标准版MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RD

    2023-03-20
    112
  • 基于nlp的翻译python(NLP翻译)

    基于nlp的翻译python(NLP翻译)nlp的很多工具都有python版本

    2023-11-26
    68
  • Python库安装指南

    Python库安装指南Python是一种高级编程语言,它广泛应用于数据分析、科学计算、Web开发和人工智能等领域。Python库是Python程序常用的一种扩展方式,它可以提供各种功能和工具,让开发者可以更加高效地完成任务。在本文中,我们将为您介绍Python库的安装和使用指南。

    2024-04-30
    18

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注