写点什么

在 SQL 数据库中使用内存中技术优化性能

  • 2017-09-07
  • 本文字数:2752 字

    阅读完需:约 9 分钟

使用 Azure SQL 数据库中的内存中技术可在各种工作负荷上实现性能改善:事务工作负荷(联机事务处理 (OLTP))、分析工作负荷(联机分析处理 (OLAP))和混合工作负荷(混合事务 / 分析处理 (HTAP))。 由于查询和事务处理的效率提升,内存中技术还可降低成本。 用户通常不需要升级数据库的定价层即可实现性能提升。 在某些情况下,即使是降低定价层,使用内存中技术也能实现性能改善。

以下两个示例演示了如何借助内存中 OLTP 大幅改善性能:

可在高级层中的所有数据库(包括高级弹性池中的数据库)内使用内存中技术。

该视频介绍了使用 Azure SQL 数据库中的内存中技术可带来的潜在性能提升。 请记住,实际带来的性能提升取决于许多因素,包括工作负荷和数据的性质、数据库的访问模式,等等。

Azure SQL 数据库采用以下内存中技术:

  • 内存中 OLTP 可提升吞吐量并降低事务处理的延迟。 可受益于内存中 OLTP 的情况有:高吞吐量事务处理(例如贸易和游戏)、从事件或 IoT 设备引入数据、缓存、数据加载以及临时表和表变量等情况。
  • 聚集列存储索引可减少存储占用(高达 10 倍)并提高报告和分析查询的性能。 将其与数据集市中的事实数据表结合使用,可在数据库中容纳更多数据并提升性能。 此外,将其与操作数据库中的历史数据结合使用,可存档并查询高达 10 倍的额外数据。
  • 用于 HTAP 的非聚集列存储索引:通过直接查询操作数据库来帮助获取业务的实时见解,无需运行开销不菲的提取、转换和加载 (ETL) 过程并等待填充数据仓库。 非聚集列存储索引允许非常快速地对 OLTP 数据库执行分析查询,同时减少对操作工作负荷的影响。
  • 也可以使用内存优化表与列存储的组合。 使用这种组合可以针对相同的数据极快执行事务处理和并发运行分析查询。

列存储索引和内存中 OLTP 分别在 2012 年和 2014 年加入 SQL Server 产品。 Azure SQL 数据库和 SQL Server 共享内存中技术的相同实现。 今后,这些技术的新功能将首先在 Azure SQL 数据库中发布,再加入到下一个版本的 SQL Server。

本主题全面介绍特定于 Azure SQL 数据库的内存中 OLTP 和列存储索引,并提供示例:

  • 介绍这些技术对存储和数据大小限制的影响。
  • 介绍如何控制使用这些技术的数据库在不同定价层之间的移动。
  • 介绍两个示例,演示如何使用 Azure SQL 数据库中的内存中 OLTP 和列存储索引。

有关详细信息,请参阅以下资源。
有关这些技术的深入信息:

有关内存中 OLTP 的快速入门教程:快速入门 1:通过内存中 OLTP 技术加速 T-SQL 性能(另一篇帮助用户入门的文章)
深入介绍这些技术的视频:

存储和数据大小

内存中 OLTP 的数据大小和存储上限

内存中 OLTP 包括用于存储用户数据的内存优化表。 这些表必需在内存可容纳的范围内。由于内存是直接在 SQL 数据库服务中管理的,因此我们提出了用户数据配额的概念。 这种概念称为内存中 OLTP 存储。

每个受支持的独立数据库定价层和每个弹性池定价层都包括一定量的内存中 OLTP 存储。在编写本文时,每 125 个数据库事务单位 (DTU) 或弹性数据库事务单位 (eDTU) 可使用 1 GB 存储。

对于每个受支持的独立数据库和弹性池定价层可用的内存中 OLTP 存储, SQL 数据库服务层一文提供了正式列表

以下各项计入内存中 OLTP 存储上限:

  • 内存优化表中的活动用户数据行和表变量。 请注意,旧行版本不计入上限。
  • 内存优化表中的索引。
  • ALTER TABLE 操作的运营开销。

如果达到上限,将会出现超出配额错误,且无法再插入或更新数据。若要解决此错误,可删除数据或提升数据库或池的定价层。

有关监视内存中 OLTP 存储利用率及配置即将达到上限时的警报的详细信息,请参阅监视内存中存储

关于弹性池

使用弹性池时,池中的所有数据库共享内存中 OLTP 存储。因此一个数据库中的使用量可能对其他数据库造成影响。对此,有
两个缓解方法:

  • 为低于池的 eDTU 计数的数据库整体配置最大 eDTU。此最大值将池中任意数据库中的内存中 OLTP 存储利用率限制为与 eDTU 计数对应的大小。
  • 配置大于 0 的最小 eDTU。此最小值可保证池中的每个数据库都有与配置的最小 eDTU 对应的可用内存中 OLTP 存储量。

列存储索引的数据大小和存储

列存储索引不需要在内存可容纳的范围内。因此,索引大小的唯一上限是最大整体数据库大小,此大小在 SQL 数据库服务层一文中有述。

使用聚集列存储索引时,对基础表存储使用列式压缩。这种压缩可显著减少用户数据的存储占用,意味着数据库中可容纳更多数据。使用纵栏表存档压缩可进一步提高压缩率。 可实现的压缩量取决于数据的性质,但 10 倍压缩并不少见。

例如,如果数据库的最大大小为 1 TB,则使用列存储索引实现 10 倍压缩时,该数据库中可容纳总共 10 TB 的用户数据。
使用非聚集列存储索引时,仍以传统行存储格式存储基础表。 因此节省的存储小于使用聚集列存储索引节省的空间。但是,如果使用单个列存储索引取代众多传统非聚集索引,则仍可整体减少表的存储占用。

在定价层之间移动使用内存中技术的数据库

升级到更高的定价层时(例如,从标准层升级到高级层),绝对不会出现任何不兼容性或其他问题。 可用的功能和资源只会增加。

但是,降级定价层可能会对数据库造成负面影响。 如果数据库包含内存中 OLTP 对象,则从高级层降级到标准或基本层时,影响就尤为明显。 降级后,内存优化表和列存储索引不可用(即使它们保持可见)。 降低弹性池的定价层或将使用内存中技术的数据库移动到标准或基本弹性池时,也应考虑这些问题。

内存中 OLTP

降级到基本 / 标准层:标准或基本层中的数据库不支持内存中 OLTP。 此外,不能将包含任何内存中 OLTP 对象的数据库移到标准或基本层。

将数据库降级到标准 / 基本层之前,请删除所有内存优化表和表类型,以及所有本机编译的 T-SQL 模块。
可通过编程方式了解给定的数据库是否支持内存中 OLTP。 可执行以下 Transact-SQL 查询:

2017-09-07 00:341410

评论

发布
暂无评论
发现更多内容

极光笔记 | 十分钟搞懂手机号码一键登录

极光GPTBots-极光推送

前端 接口 sdk 一键登录

不看后悔,一文带你入门Go云原生微服务

王中阳Go

golang 高效工作 学习方法 微服务 云原生

java课程学习难度怎么样

小谷哥

软件测试/测试开发 | Appium环境安装与架构介绍

测试人

软件测试 自动化测试 测试开发 appium

SimMIM:更简单的掩码图像建模

Zilliz

3DCAT实时云渲染助力VR虚拟现实迈向成熟

3DCAT实时渲染

vr 云渲染 虚拟现实 元宇宙

元宇宙成本高吗?构建元宇宙需要多少钱?

3DCAT实时渲染

元宇宙 元宇宙开发 元宇宙成本

NLP知识图谱项目合集(信息抽取、文本分类、图神经网络、性能优化等)

汀丶人工智能

人工智能 自然语言处理 深度学习 知识图谱

在spring boot3中使用native image

程序那些事

spring 程序那些事 spring boot3

如何通过C#/VB.NET在 Excel 中对形状进行分组或取消分组

在下毛毛雨

C# .net Excel

工赋开发者社区 | 工业5.0为何是下一个10年的制造业关键性变革方向?

工赋开发者社区

佛萨奇2.0上链DApp开发|佛萨奇链上开发技术

薇電13242772558

dapp

软件测试/测试开发 | Appium 用例录制

测试人

软件测试 自动化测试 测试开发 测试用例 appium

高并发环境下3种方式优化Tomcat性能

华为云开发者联盟

Java 开发 华为云 企业号 1 月 PK 榜

【网络安全】记一次红队渗透实战项目

网络安全学海

网络安全 信息安全 计算机 渗透测试 漏洞挖掘

上海前端培训学习好就业吗

小谷哥

计算机网络到底应该怎么学?

Java永远的神

程序员 面试 计算机网络 计算机 tcpip

深圳大数据编程培训机构哪家比较靠谱

小谷哥

大数据培训课程后如何找到工作

小谷哥

汽车虚拟仿真,实时云渲染至关重要!

3DCAT实时渲染

云渲染 虚拟仿真 实时渲染 汽车仿真

云上的米开朗基罗:在不确定时代,寻找建筑般的确定性

华为云开发者联盟

云计算 后端 华为云 企业号 1 月 PK 榜

API 网关策略二三事

API7.ai 技术团队

APISIX 网关设计

直播预告 | 2月2日,腾讯Light与你一同用AI,让美好变更好

腾源会

公益

Tokio 中 hang 死所有 worker 的方法

Databend

学习大数据怎么选择培训机构?

小谷哥

云图说 | 华为云主机安全服务(新版)来啦!

华为云开发者联盟

云计算 后端 华为云 云图说 企业号 1 月 PK 榜

《鹅鸭杀》爆火,一文带你了解如何实现顶流社交游戏

声网

游戏开发 RTC 应用架构

Gartner:流程挖掘市场发展空间巨大,2022年预计市场规模将超10亿美元

九科Ninetech

Lattice在提高低代码平台高可扩展性的实战

原力在线

低代码 轻代码

工赋开发者社区 | 事件驱动架构要避开的 5 个陷阱

工赋开发者社区

【必看知识】PCB设计中焊盘的设计标准

华秋PCB

工具 PCB PCB设计

在 SQL 数据库中使用内存中技术优化性能_微软_微软中国_InfoQ精选文章