写点什么

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

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

关注

评论

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

网络攻防学习笔记 Day116

穿过生命散发芬芳

网络安全 8月日更

filecoin挖矿教程?filecoin挖矿收益如何?

区块链 分布式存储 IPFS filecoin挖矿 filecoin收益

PyFlink 开发环境利器:Zeppelin Notebook

阿里云大数据AI技术

如何利用FL Studio编曲--入门级

懒得勤快

中国做ipfs公司排名?挖ipfs排名前三的公司是?ipfs矿机哪家最好?

中国做ipfs公司排名 ipfs矿机哪家最好 挖ipfs排名前三的公司是

新思科技软件组成分析解决方案获得Forrester Wave认可

InfoQ_434670063458

新斯科技 Forrester 软件组成分析

业界首个高性能交互式自动标注工具——EISeg正式开源!

百度大脑

人工智能 开源

关于数据库应用的一些思考

石云升

数据库 8月日更

Baetyl推动边云融合 点亮智能物联网

百度大脑

人工智能 开源

英特尔的碳中和版图

科技新消息

Linux内核内存管理:地址转换和MMU

Linux服务器开发

操作系统 内存管理 Linux内核 内核开发 地址转换

安卓工控主板通信接口有哪些呢?

双赞工控

安卓主板 工控主板

强化学习中,Q-Learning与Sarsa的差别有多大?

行者AI

强化学习

从技术到服务,小鹅通成功的「底层逻辑」是什么?

ToB行业头条

如何搭建SpringcloudAlibaba基础环境(一)

程序员半支烟

Java 微服务

区块链技术如何在涉诉信访中显身手

CECBC

比特币矿池如何触底反弹?比特币矿企的未来出路在哪里?

CECBC

你真的了解二叉树吗?(手撕算法篇)

有道技术团队

二叉树 网易有道

阿里大牛肝出的443页TCP/IP协议趣谈笔记,竟然在GitHub标星27k+

Java 编程 架构 面试 架构师

深入了解现代web浏览器(第一部分)

GKNick

如何认知新技术?区块链技术和应用

百度开发者中心

区块链 最佳实践 方法论

Python代码阅读(第18篇):变形词判断

Felix

Python 编程 Code Programing 阅读代码

久等了!【Innovation 2021】网易应用创新开发者大赛正式开赛!

网易云信

开源 架构 开发者 网易 语言 & 开发

PyFlink 开发环境利器:Zeppelin Notebook

Apache Flink

Zeppelin notebook pyflink 开发环境利器

服务全球用户,EMQ X Cloud 新增欧洲部署支持

EMQ映云科技

服务器 mqtt 部署与维护 Cloud emq

neo4j 安装与基本操控

escray

学习 neo4j 8月日更

如何短时间突击 Java 通过面试?

Java架构师迁哥

为什么Kafka的数据不写了?

BUG侦探

DNS gopack Linux操作系统

Filecoin价格今日行情:filecoin价格还能怎么走?

区块链 分布式存储 IPFS filecoin价格 filecoin行情

每天学习 10 个实用Javascript代码片段(六)

devpoint

mathjs 加密函数 随机数 8月日更

快手基于 Flink 构建实时数仓场景化实践

Apache Flink

flink 解决方案 实时数仓架构 快手

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