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

yizhihongxing

揭秘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日

相关文章

  • MySQL为JSON字段创建索引方式(Multi-Valued Indexes 多值索引)

    MySQL 5.7版本以后开始支持JSON数据类型,而JSON类型的字段数据是半结构化的数据。在使用半结构化字段类型的时候,针对这类字段的索引也就成为了必需的操作。 MySQL 提供了两种类型的 JSON 字段索引: Generated Columns Based on JSON Conditions Multi-Valued Indexes 本文主要介绍 …

    database 2023年5月22日
    00
  • DBMS 中泛化和专业化的区别

    DBMS中的泛化和专业化是数据处理中常用的两个概念。泛化是通过抽取主要特征和抽象,将数据转化为更高层次的概念或模型,从而使得其具有更广泛的应用价值。而专业化则是将泛化后的模型或概念转化为具体的实现或应用。 在实际应用中,泛化和专业化在数据处理中的作用是互为补充的。泛化可以从大量数据中提炼出主要特征和规律,将其转换为更高层次、更具普遍性的概念,使得数据处理变得…

    database 2023年3月27日
    00
  • Hadoop 和 SQL 性能的差异

    Hadoop和SQL是两种不同的数据存储和处理方法,它们之间的性能差异很大。在本文中,我们将会详细讲解Hadoop和SQL性能的差异,并提供至少两个实例来加深读者对这个话题的理解。 Hadoop和SQL的概述 Hadoop是一个基于Java的开源框架,用于处理大规模数据集。它在分布式环境中运行,并且是一个高度可扩展和可靠的系统。Hadoop由HDFS和Map…

    database 2023年3月27日
    00
  • SQL 生成连续的数值

    生成连续的数值,实际上就是生成一系列数字的序列。在SQL中,我们可以用以下两种方式生成一系列数字: 1. 使用MySQL中的sequence MySQL中并没有sequence这个东西,但可以通过存储过程的方式手动实现。下面是一个生成1~100连续数字的例子: DELIMITER // CREATE PROCEDURE GenerateSequence(IN…

    database 2023年3月27日
    00
  • MySql的事务使用与示例详解

    MySql的事务使用与示例详解 什么是事务? 事务是指由一系列数据库操作所组成的一个不可分割的工作单元。 事务是数据库操作的基本单位,是有关联的多个操作组成的一个整体。 事务中的操作要么全部成功,要么全部失败,不存在部分执行的情况。 事务必须有四个特征,通常用ACID缩写来描述,即原子性、一致性、隔离性和持久性。 事务操作示例 示例1:向两个表中插入数据 S…

    database 2023年5月22日
    00
  • Entity Framework使用Code First模式管理事务

    首先我们需要了解Entity Framework是什么。Entity Framework是由微软开发的一种ORM(对象关系映射)框架,它可以将关系型数据库中的数据映射到对象上,使我们能够以面向对象的方式操作数据库。其中,Code First是Entity Framework的一种模式,它允许我们先编写实体类,然后通过实体类来生成数据库表,在这个过程中,我们可…

    database 2023年5月22日
    00
  • [Oracle] CPU/PSU补丁安装详细教程

    当需要修补Oracle数据库的漏洞或者需要升级Oracle数据库功能时,可以通过安装Oracle提供的CPU/PSU补丁来完成。下面,我们将详细讲解Oracle CPU/PSU补丁的安装教程。 1. 下载所需的补丁 首先,需要在Oracle官网上下载所需的补丁。在下载时需要注意选择与您的产品版本及操作系统版本相对应的补丁,下载后将其放置在一个本地目录下。 2…

    database 2023年5月22日
    00
  • IDEA连接MySQL提示serverTimezone的问题及解决方法

    下面是详细讲解“IDEA连接MySQL提示serverTimezone的问题及解决方法”的完整攻略: 问题背景 MySQL 8.0.3版本及以上的新版本,在连接时会提示serverTimezone的问题,导致连接不成功。 问题原因 MySQL 8.0.3版本及以上的新版本,新特性引入了默认的时区“UTC”(协调世界时)。 在连接MySQL服务器时,MySQL…

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