10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

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

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

关注

评论

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

QCon-OPPO数据平台Cloud Lake 降本增效实践

安第斯智能云

运维 后端 数据

取代FMEA风险评估:如何在敏捷世界中管理风险

龙智—DevSecOps解决方案

风险管理 FMEA

【技术干货】前端性能优化——快速定位代码bug

云智慧AIOps社区

开源 大前端 技术分享 技术干货

探秘持久内存(PMem)中无锁实现多线程安全的持久化数据结构

第四范式开发者社区

持久内存 PMem 多线程安全

教你用 JavaScript 设计一个 Neumorphism 风格的数字时钟 (代码详解)

海拥(haiyong.site)

大前端 js 28天写作 签约计划第二季 12月日更

效率高到爆炸的IT运维软件您安装了吗?

行云管家

运维 IT运维 运维i工具

服务器减少一半,TDengine在华自科技的落地实践

TDengine

数据库 tdengine 时序数据库

区块链农产品溯源系统开发,助力农业品牌打造

电微13828808271

Linux一学就会之文件的归档和压缩tar命令

学神来啦

Linux 运维 ZIP tar命令 linux云计算

免杀技术的发展

喀拉峻

网络安全 安全 信息安全 免杀

质量基础设施“一站式”服务平台开发,一站式检验检测服务平台

电微13828808271

等保2.0正式发布了吗?核心思想包括什么?

行云管家

网络安全 等保 等级保护 等保2.0

如何用会声会影制作简约的倒计时片头?

懒得勤快

为什么说泛娱乐出海离不开这家公司

融云 RongCloud

音视频 通信云 社交 泛娱乐 出海

如何为你的听众设计一张精密的地图

将军-技术演讲力教练

协程实现方式——从程序控制流转移谈起

Jowin

协程原理

架构实战营模块一作业

Sindorei

「架构实战营」

架构实战营4期第一模块作业

jialuooooo

架构实战营

Flutter 2 渲染原理和如何实现视频渲染

声网

flutter 大前端 音视频

大数据中心通过Perforce软件版本管理系统助力动力系统开发

龙智—DevSecOps解决方案

perforce 混合动力

Java 面向对象精讲【下】

XiaoLin_Java

面向对象 12月日更

智慧社区建设解决方案,智慧社区综合服务平台开发

电微13828808271

数据分析中应该掌握的五个数学概念

Geek_utwige

数据分析 Excel 统计学 基本概念

nginx负载均衡策略你知道多少?

恒生LIGHT云社区

负载均衡 服务器 ngnix

提高儿童被拐意识

Tiger

28天写作

Vue路由守卫有哪些,怎么设置,使用场景等

编程江湖

Vue 路由器

如期而至-用户购买时间预测(上)

索信达控股

模型 购买预测 购买行为 精准营销

控制台彩色输出

FunTester

Java 测试框架 Groovy FunTester Jansi

Flink是如何支持批流一体的

编程江湖

大数据 flink

一劳永逸,使用 PicGo + GitHub 搭建个人图床工具

AlwaysBeta

GitHub 工具 PicGo 图床

EasyRecovery如何恢复md文件

淋雨

Camtasia

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