揭秘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)-内存数据库 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • 持续集成工具之Jenkins安装部署的详细教程

    下面我将为您详细讲解“持续集成工具之Jenkins安装部署的详细教程”的完整攻略。 1.安装Jenkins Jenkins是一个Java编写的开源持续集成工具,可以在Windows、Linux、MacOS等系统上安装。 1.1 安装Java 在安装Jenkins之前,先要确保安装了Java环境。以下教程将以CentOS7 64位系统为例。 首先,进入终端并输…

    database 2023年5月21日
    00
  • MySQL/MariaDB中如何支持全部的Unicode

    要支持全部的Unicode字符集,MySQL/MariaDB需要使用UTF-8字符集。下面是实现该过程的完整攻略: Step 1:设置服务器 在my.cnf或my.ini配置文件中,确保默认字符集被设置为UTF-8: [client] default-character-set=utf8 [mysqld] character-set-server=utf8 …

    database 2023年5月18日
    00
  • Redis用在哪里

    1. 高并发缓存/共享session:     UserInfo getUserInfo (long id) {}     取:     userRedisKey = “user:info:” + id;     value = redis.get(userRedisKey );     if (value != null) {            use…

    Redis 2023年4月13日
    00
  • MySQL中Replace语句用法实例详解

    下面我就详细讲解一下“MySQL中Replace语句用法实例详解”的攻略。 什么是Replace语句 Replace语句是用于替换/更新表中数据的MySQL命令。该命令可以替换掉已有的记录,如果记录不存在,则会插入一条新记录。语法如下: REPLACE [LOW_PRIORITY | DELAYED] [INTO] table_name [(col_name…

    database 2023年5月22日
    00
  • MongoDB错误32-bit servers don’t have journaling enabled by default解决方法

    当在64位系统上运行32位MongoDB服务器时,可能会出现”32-bit servers don’t have journaling enabled by default”错误,原因是默认情况下32位MongoDB服务器未启用日志记录。 要解决此问题,可以按照以下步骤操作: 在启动MongoDB服务器时,指定journal选项: mongod –jour…

    database 2023年5月22日
    00
  • Redis中怎么解决Big Key问题

    这篇文章主要介绍“Redis中怎么解决Big Key问题”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Redis中怎么解决Big Key问题”文章能帮助大家解决问题。 一、什么是Big Key? 通俗易懂的讲,Big Key就是某个key对应的value很大,占用的redis空间很大,本质上是大value问题。key…

    Redis 2023年4月10日
    00
  • MySQL Database on Azure新功能

    本月中国版的MySQL Database on Azure发布了两项新功能: 1、主从复制——只读实例 在这之前Azure上的MySQL数据库也是支持主从复制的,但是只能作为on-premises部署的MySQL的slave实例——Azure上的MySQL数据库是不可以作为master来使用的。 经过本次更新,我们可以给Azure上的MySQL数据库创建一个…

    MySQL 2023年4月12日
    00
  • 防护黑客必学招数 SQL注入拦截-MYIIS-VIF助你一臂之力

    防护黑客必学招数 SQL注入拦截-MYIIS-VIF助你一臂之力 什么是SQL注入 SQL注入是一种常见的网络攻击方式,它在用户输入数据的时候,利用恶意代码使得后台数据库执行其不应该执行的语句。当程序没有对用户输入的数据进行有效检查时,黑客利用该漏洞可获取系统管理员权限、窃取重要信息等。 防止SQL注入的必要性 当网站存在SQL注入漏洞,攻击者可以以管理员的…

    database 2023年5月21日
    00
合作推广
合作推广
分享本页
返回顶部