沃梦达 / 编程技术 / 数据库 / 正文

揭秘SQL Server 2014有哪些新特性(1)-内存数据库

揭秘SQL Server 2014有哪些新特性(1)-内存数据库

揭秘SQL Server 2014有哪些新特性(1)-内存数据库

介绍
SQL Server 2014引入了内存优化表,为高性能事务处理提供快速、可靠的解决方案。内存优化表可最大程度地减少锁定和堵塞,加快事务处理速度。本文将详细介绍内存优化表的设计、使用案例及细节注意事项。

内存优化表的设计
内存优化表是将一段或多段内存作为容器,在内存上存储临时表。这些表不存储在磁盘上,因而I/O操作得到极大地加速。内存优化表拥有如下优点:
- 加速查询操作:表不需要进行I/O操作,查询速度大大提高。
- 减少锁定:内存优化表的每一行都会进行版本控制。事务不会阻塞由其他事务读或写访问的相同行。
- 超高并发:在多个客户端同时读写情况下,内存优化表支持超高并发操作。

使用案例
现有一个订单管理系统,在订单明细表中添加一个内存优化表,以加快查询订单、扣减库存的效率。

首先,创建一个存储本地内存的文件组:

CREATE DATABASE OrderDB
CONTAINMENT = NONE
ON PRIMARY
(NAME = 'OrderDB_DATA',
FILENAME = 'C:\Data\OrderDB_DATA.mdf',
SIZE = 100MB,
MAXSIZE = 1GB,
FILEGROWTH = 10%),
(FILENAME = 'C:\Data\InMemory_Data',
SIZE = 100MB,
MAXSIZE = 1GB,
FILEGROWTH = 10%)
LOG ON
(NAME = 'OrderDB_LOG',
FILENAME = 'C:\Data\OrderDB_LOG.ldf',
SIZE = 20MB,
MAXSIZE = 100MB,
FILEGROWTH = 20%);

接着,创建一个包含内存优化表的数据库:

CREATE DATABASE OrderDB_MemoryOptimized
CONTAINMENT = MEMORY_OPTIMIZED
ON PRIMARY
(NAME = 'OrderDB_MemoryOptimized_DATA',
FILENAME = 'C:\Data\OrderDB_MemoryOptimized_DATA',
MAXSIZE = 100GB,
FILEGROWTH = 10%,
CONTAINS_MEMORY_OPTIMIZED_DATA),
(FILENAME = 'C:\Data\OrderDB_MemoryOptimized_LOG',
MAXSIZE = 10GB,
FILEGROWTH = 10%)
LOG ON
(NAME = 'OrderDB_MemoryOptimized_LOG',
FILENAME = 'C:\Data\OrderDB_MemoryOptimized_LOG',
SIZE = 10GB,
MAXSIZE = 200GB,
FILEGROWTH = 20%);

然后,在创建完存储过程和表类型之后,创建内存优化表:

CREATE TABLE dbo.Order_Details_MemoryOptimized
(
OrderID INT NOT NULL PRIMARY KEY NONCLUSTERED HASH WITH (BUCKET_COUNT = 100000),
ProductID INT NOT NULL,
OrderQty INT NOT NULL,
UnitPrice MONEY NOT NULL,
Discount MONEY NOT NULL
) WITH (MEMORY_OPTIMIZED = ON, DURABILITY = SCHEMA_ONLY);

细节注意事项
- 内存优化表仅支持索引名称和列用法,并没有全部的SQL Server索引和约束选项。
- 不支持使用LOB(大型对象)数据类型列。
- 对于整个表,仅可以使用一个非聚集索引,且都是唯一非聚集索引,最多可包括16个列。
- 要想修改内存优化表结构,必须将表删除并重新创建。
- 现有的应用可以通过SQL Server的存储过程和触发器来升级支持内存优化表。
- 内存优化表支持聚集和哈希索引,HASH索引的使用会更适用于OLTP场景。

示例1:将内存优化表中数据进行查询

SELECT
OrderID,
ProductID,
OrderQty,
UnitPrice,
Discount
FROM
dbo.Order_Details_MemoryOptimized WITH (nolock)
WHERE OrderID = 10248;

示例2:向内存优化表中插入数据

INSERT INTO dbo.Order_Details_MemoryOptimized(OrderID, ProductID, OrderQty, UnitPrice, Discount)
VALUES(130,\*ProductID\*,23,\*UnitPrice\*,0.12);

总结
内存优化表是SQL Server 2014的重要特性之一,具有很多优点,如加速查询操作、减少锁定、超高并发等,可以帮助开发者和DBA优化应用程序的性能和可用性。需要注意的是,在使用内存优化表时需注意细节限制,以及数据安全性和一致性问题的解决。

本文标题为:揭秘SQL Server 2014有哪些新特性(1)-内存数据库

基础教程推荐