写点什么

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:002916
用户头像

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

关注

评论

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

C++面向对象封装特性的实例分析与应用扩展(二)

CtrlX

c c++ 面向对象 后端 8月月更

开源一夏 |如何优化线上服务器

叶秋学长

开源 服务器 8月月更

FinClip,助长智能电视更多想象空间

Geek_99967b

小程序

免费的公共WiFi不要乱连,遭中间人攻击了吧?

wljslmz

网络安全 签约计划第三季 8月月更 中间人攻击

云计算国内外发展现状

阿炜小菜鸡

云计算 8月月更

电商秒杀系统

极客土豆

FinClip最易用的智能电视小程序

Geek_99967b

小程序

现网设备兼容SRv6网络演进

穿过生命散发芬芳

8月月更 SRv6

目标检测的国内外研究现状

阿炜小菜鸡

目标检测 8月月更

gulp

Jason199

js gulp 8月月更

6 个你必须明白 Vue3 的 ref 和 reactive 问题(入门篇)

Geek_z9ygea

JavaScript 前端开发 vuejs 8月月更

收藏-即时通讯(IM)开源项目OpenIM-功能手册

Geek_1ef48b

目标检测技术研究现状及发展趋势

阿炜小菜鸡

目标检测 8月月更

golang写的存储引擎,基于b+树,mmap

Alber

AOSP CameraLatencyHistogram的原理与使用

桑榆

Android; 8月月更

东西向和南北向通信的统一

阿泽🧸

8月月更

2022-Java后端工程师面试指南-(Elasticsearch)

自然

Elastic Search 8月月更

FinClip,车载小程序新玩法

Geek_99967b

小程序

Build QEMU RISC-V Linux

贾献华

8月月更

2022-Java后端工程师必会知识点-(操作系统)

自然

操作系统 8月月更

互联网用户账号信息管理规定今起施行:必须严打账号买卖灰产

石头IT视角

【大厂面试真题解析】虾皮 Shopee 后端一面十四问

面试官问

面试 后端 面试题 Shopee 虾皮

一文带你了解 Java 中的构造器

踏雪痕

Java 构造函数 8月月更

亚马逊云科技 Build On 2022 - AIot 第二季物联网专场实验心得

指剑

AWS AIOT 签约计划第三季 8月月更

化算力为战力:宁夏中卫的数字化转型启示录

脑极体

Vue是什么?Vue和jQuery

flow

8月月更

SRE运维解密-什么是SRE:DevOps模型的具体实践!

董哥的黑板报

DevOps 运维 云原生 SRE Google

从0到1看支付

自然

支付系统 后端开发 支付网关 签约计划第三季

【CSS】设置文本样式,包括文本颜色、对齐、缩进、行高等

翼同学

CSS HTML5, CSS3 8月月更

系统管理-Linux系统文件查找

Albert Edison

Linux centos linux 文件权限控制 find 8月月更

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