写点什么

SQL Server 现在提供 NoSQL 风格的内存优化表了

  • 2016-03-31
  • 本文字数:942 字

    阅读完需:约 3 分钟

SQL Server 2014 引入的内存优化表没有写入锁,可以避免磁盘 I/O,支持完全编译存储过程,与传统表相比,显著地提升了性能。但是,它也有许多限制,包括无法使用备受 NoSQL 设计风格青睐的大文档。

在 SQL Server 2016 中,其中许多限制已经接触。首先是在内存优化表本机编译存储过程中支持 LOB 类型。这意味着用户可以使用 varChar(max)、nVarChar(max) (都可以包含 XML 和 JSON 数据)和 varBinary(max)。8060 字节的行大小限制也解除了,即使对于没有包含 LOB 类型的宽表也是如此。

尽管如此,如果可能的话,微软并不建议使用这个特性。如果可以将所有的数据都存入 varChar(8000) 或者更小的列中,而不是 varChar(max) 中,那么就可以避免写入时访问存储大对象的隐藏表的开销。

内存优化表约束

内存优化表的另一个限制是不能创建约束(除了唯一主键)。从应用程序设计的角度来说,这不是绝对必要的,但约束确实降低了多种数据冲突类型发生的可能性。

  • 内存优化表之间的 FOREIGN KEY 约束
  • CHECK 约束
  • UNIQUE 约束

注意,普通表和内存优化表之间的外键约束还不允许。

本机编译存储过程改进

熟悉这个术语的人都知道,一个“本机编译存储过程”在创建时就被编译成了高度优化的机器代码。它只能操作内存优化表,但与普通的存储过程相比(在运行时解释),显著地提升了性能。

除了支持 LOB 类型外,用户可以在 INSERT、UPDATE 和 DELETE 语句中使用 OUTPUT 子句。这可以减少对单独查询的需求,反过来,这可能减少事务及相关锁定需求。

现在,本机编译存储过程还提供了其他标准 SQL 特性,包括:

  • UNION 和 UNION ALL
  • SELECT DISTINCT
  • OUTER JOIN
  • SELECT 语句中的子查询(EXISTS、IN、标量子查询)

本机编译函数

现在,用户可以本机编译标量函数。要这样做的话,用户需要使用WITH NATIVE_COMPILATION、SCHEMABINDING 作为指令,并将具体的代码封装进一个BEGIN ATOMIC 块中。这与本机编译存储过程不同,后者仅使用WITH SCHEMABINDING 指令标记。

本机编译触发器

让我们继续这个话题,如果使用了WITH NATIVE_COMPILATION,那么AFTER 触发器现在可以置于内存优化表上了。

要了解更多信息,可以查看 SQL2016 CTP3 新特性自CTP3 以来SQL Server 2016 中的内存OLTP 新特性

查看英文原文: SQL Server Now Offers NoSQL Style Memory-Optimized Tables

2016-03-31 19:002663
用户头像

发布了 1008 篇内容, 共 422.1 次阅读, 收获喜欢 346 次。

关注

评论

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

性能测试|JMeter逻辑控制器(十)

霍格沃兹测试开发学社

性能测试|JMeter连接数据库

霍格沃兹测试开发学社

vscode配置gitbash终端

芯动大师

性能测试|JMeter逻辑控制器(四)

霍格沃兹测试开发学社

MongoDB源码学习:创建记录和索引(insertDocuments)

云里有只猫

mongodb 源码解读

App自动化测试|Appium-Desktop界面介绍

霍格沃兹测试开发学社

Python 测试 appium

性能测试|JMeter逻辑控制器(八)

霍格沃兹测试开发学社

App自动化测试|Appium介绍

霍格沃兹测试开发学社

Python 测试 appium

性能测试|JMeter逻辑控制器(六)

霍格沃兹测试开发学社

性能测试|JMeter参数化(一)

霍格沃兹测试开发学社

时光“摆渡者”,让回忆“闪现”眼前

脑极体

JavaScript程序设计模式小技巧——策略模式,快看快用!!!

Immerse

JavaScript 程序设计 设计模式 策略模式 设计规则

性能测试|JMeter逻辑控制器(五)

霍格沃兹测试开发学社

App自动化测试|Appium工作原理及Desired Capbilities配置

霍格沃兹测试开发学社

Python 测试 appium

App自动化测试|原生app元素定位方法

霍格沃兹测试开发学社

代码随想录 Day22 - 二叉树(八)

jjn0703

PoseiSwap 即将开启 POSE 单币质押,治理体系将全面运行

鳄鱼视界

性能测试|JMeter逻辑控制器(七)

霍格沃兹测试开发学社

App自动化测试|Appium元素定位工具

霍格沃兹测试开发学社

Python 测试 appium

具身智能,是机器人的“冷饭热炒”吗?

脑极体

AI

性能测试|JMeter逻辑控制器(二)

霍格沃兹测试开发学社

接口自动化测试|Requests库的安装与介绍

霍格沃兹测试开发学社

App自动化测试|Appium+Python自动化测试环境搭建(Windows)

霍格沃兹测试开发学社

Python 测试 Node appium

App自动化测试|原生App元素定位方法(二)

霍格沃兹测试开发学社

接口测试|postman的介绍和安装

霍格沃兹测试开发学社

2023-07-23:给你 n 个任务和 m 个工人 每个任务需要一定的力量值才能完成 需要的力量值保存在下标从 0 开始的整数数组 tasks 中 第 i 个任务需要 tasks[i] 的力量才能完

福大大架构师每日一题

福大大架构师每日一题

代码随想录训练营Day24 - 回溯(一)

jjn0703

性能测试|JMeter逻辑控制器(三)

霍格沃兹测试开发学社

性能测试|JMeter逻辑控制器(九)

霍格沃兹测试开发学社

SQL Server现在提供NoSQL风格的内存优化表了_.NET_Jonathan Allen_InfoQ精选文章