写点什么

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

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

关注

评论

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

连续三次 | 灵雀云入选Gartner中国ICT技术成熟度曲线报告

York

云计算 云原生 数字化转型 ICT Gartner

Axure9的元件用法

乔乔

签约计划第三季 8月月更

SRv6网络演进面临的挑战

穿过生命散发芬芳

8月月更 SRv6

开源一夏 | 计算机网络:物理层

是Dream呀

开源

深入理解IO流(第一篇)

JAVA活菩萨

Java 程序员

竞赛:糖尿病遗传风险检测挑战赛(科大讯飞)

Lingxw

数据挖掘 Kaggle 8月月更

线程池原理与实践|从入门到放弃,深度解析

领创集团Advance Intelligence Group

线程池 内存溢出 线程池工作原理

Java J.U.C 学习笔记-使用篇(一)

U2647

是什么,让中国成为一台超级计算机?

脑极体

2022-Java后端工程师必会知识点-(Lunix)

自然

Lniux 8月月更

面试官:可以谈谈乐观锁和悲观锁吗

JAVA活菩萨

面试官

MyBatis操作数据库

JAVA活菩萨

Java 程序员 后端

Linux Lab 编译 riscv-gnu-toolchain

贾献华

8月月更

一款好用的FAQ搭建工具

Geek_da0866

MOSN 反向通道详解

SOFAStack

开源 网络安全 Go 语言 社区贡献 MOSN

Mqtt开发笔记:windows下C++ ActiveMQ客户端介绍、编译和使用

JAVA活菩萨

Java 程序员 后端

麦聪DaaS平台 3.7.0 Release 正式发布:全面支持国际化

雨果

DaaS数据即服务

读书笔记之《你想过怎样的一生?》

宇宙之一粟

读书笔记 8月月更

2021-Java后端工程师必会知识点-(分布式RPC框架Dubbo)

自然

RPC 8月月更

什么是现场服务管理系统(FSM)?有什么好处?

优秀

企业管理系统 现场管理

4KMILES加入艾盛集团,以更强劲的数字商务能力,加速中国跨境电商的全域全效增长

Geek_2d6073

2022-Java后端工程师必会知识点-(Docker)

自然

Docker 镜像 8月月更

DevOps之代码检查

凌云Cloud

DevOps 研发管理 代码检查器

从技术全景到场景实战,透析「窄带高清」的演进突破

阿里云CloudImagine

云计算 直播 视频

行业 SaaS 微服务稳定性保障实战

阿里巴巴云原生

阿里云 微服务 云原生 可观测

关于 01 背包问题

HelloWorld杰少

8月月更

开源一夏 |【云原生】DevOps(五):集成Harbor

是Dream呀

开源一夏 | Web开发(七):登录实现及功能测试

是Dream呀

Spring Boot整合Mybatis

JAVA活菩萨

Java 程序员 后端

【CSS】基础选择器,包括标签选择器、类选择器、id选择器和通配符选择器...

翼同学

CSS html 前端 HTML5, CSS3 8月月更

实现客户服务自助,打造产品知识库

Baklib

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