内存优化表-使用例子

--1
-- 在数据库:DB_NEW,下建文件组,名字为:DB_NEWFG
-- 内存优化表官网:https://docs.microsoft.com/zh-cn/sql/relational-databases/in-memory-oltp/introduction-to-memory-optimized-tables?view=sql-server-ver15
ALTER DATABASE DB_NEW
    ADD FILEGROUP DB_NEWFG CONTAINS MEMORY_OPTIMIZED_DATA;
GO


--2
--执行下面语句之后会在C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA路径下创建一个文夹,自动会创建的,不用手动
--文件夹名为:DB_NEWFile(请不要手动预先创建好这个文件夹)
ALTER DATABASE DB_NEW
    ADD FILE
    (
       NAME = 'DB_NEWFile',
       --路径相对你的数据库存放目录相同或任意的路径
       FILENAME ='C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\DB_NEWFile'
    )
    TO FILEGROUP [DB_NEWFG];
GO


--3
--建内存优化表
--比普通的多WITH (MEMORY_OPTIMIZED = ON, DURABILITY = SCHEMA_AND_DATA);声明是内存表,添加在最外层
--内存优化表的数据结构不能更新,只能删除后重创才能更新。
CREATE TABLE Reseller
    (
      [ResellerID] INT NOT NULL
                       PRIMARY KEY NONCLUSTERED HASH WITH (BUCKET_COUNT = 1024),
      [ResellerName] NVARCHAR(50) NOT NULL ,
      [ResellerType] NVARCHAR(20) NOT NULL
    )
WITH (MEMORY_OPTIMIZED = ON, DURABILITY = SCHEMA_AND_DATA);


--4
--导入数据,和普通的一样
--更新数据,和普通的一样
INSERT INTO Reseller VALUES( 2, 'A Bike Store', 'Value Added Reseller' );

UPDATE Reseller
   SET ResellerName = 'ABikeStore0'
      ,ResellerType = 'ValueAddedReseller0'
 WHERE ResellerID = 1


--5
 -- 查询表,和普通的一样,也可以加快照WITH (SNAPSHOT)
 select * from Reseller  WITH (SNAPSHOT)
 select * from Reseller where ResellerID = 2
 select * from Reseller where ResellerName like 'A%'

 

--6

--可以用于解决数据库死锁问题,使用内存优化表可解决,这样就不需要修改任何程序代码,又可以解决锁表问题,只要重新创建一下数据库对应的表即可。
--内存优化表是没有锁概念,直接走内存,和Redis一样,同样他也具备数据持久化能力,比Redis强大的一点是可以直接使用标准的SQL语句操作内存数据。
-- 示例:
-- 因为内存优化表一定要有一个主键,guid也可以,但一定要确保GUID唯一
-- 基于内存优化表一但创建后不能修改设计,建议添加冗余字段,以适应需求变化
CREATE TABLE [dbo].[Tab_Test](
    --[ID] INT NOT NULL PRIMARY KEY NONCLUSTERED HASH WITH (BUCKET_COUNT = 1024),
    [Guid] [varchar](35) NOT NULL PRIMARY KEY NONCLUSTERED HASH WITH (BUCKET_COUNT = 1024),
    [ione] [int] NULL,
    [itwo] [int] NULL,
    [ithree] [int] NULL,
    [ifour] [int] NULL,
    [ifive] [int] NULL,
    [isix] [int] NULL,
    [vone] [varchar](512) NULL,
    [vtwo] [varchar](512) NULL,
    [vthree] [varchar](512) NULL,
    [vfour] [varchar](512) NULL,
    [vfive] [varchar](512) NULL,
    [vsix] [varchar](512) NULL,
) WITH (MEMORY_OPTIMIZED = ON, DURABILITY = SCHEMA_AND_DATA) 
GO

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值