写点什么

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

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

关注

评论

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

代码手术刀-自定义你的代码重构工具

京东零售技术

Java 源码分析 后端 代码重构

听GPT 讲Rust Tokio源代码(3)

fliter

阿里集团基于Fluid+JindoCache加速大模型训练的实践

阿里技术

阿里 大模型 Fluid JindoCache

科蓝软件启动鲲鹏原生应用开发合作

彭飞

深度神经网络中的BNN和DNN:基于存内计算的原理、实现与能量效率

申公豹

存内计算

「AI Party」喊你来!百度Create大会4月16-17日在深圳举办

飞桨PaddlePaddle

百度 AI 开发者大会

iOS平台如何实现毫秒级延迟的RTMP|RTSP播放器

音视频牛哥

IOS RTSP播放器 IOS RTMP播放器 RTSP播放器 RTMP播放器 RTMP player

【亿级数据专题】「高并发架构」盘点本年度探索对外服务的百万请求量的API网关设计实现

码界西柚

性能优化 架构设计 高性能网关 亿级数据 2024年第三十三篇文章

听GPT 讲Rust Tokio源代码(2)

fliter

一起畅玩!幻兽帕鲁服务器华为云搭建教程(Windows 平台)

YG科技

Wireshark使用技巧

小齐写代码

低代码,流行的软件开发方式

互联网工科生

软件开发 低代码 JNPF

2023年12月文章一览

codists

codists

华为云软件开发生产线CodeArts开发者实践8件套——开发者的进阶宝典!

软件开发 华为云

快速上手极狐GitLab设计管理功能

极狐GitLab

国内唯一!通义灵码入选全球智能编码助手使用率 TOP 榜单

阿里巴巴云原生

阿里云 云原生 通义灵码

打破信息孤岛,聚道云软件连接器助力企业实现高效管理

聚道云软件连接器

案例分享

解密JavaChassis3:易扩展的多种注册中心支持

华为云开发者联盟

Java 开发 华为云 华为云开发者联盟

流批一体化数据加工处理之记录过滤

大河

亿级流量高并发春晚互动前端技术揭秘

京东科技开发者

2024年1月文章一览

codists

一文详解静态图和动态图中的自动求导机制

百度Geek说

Python 深度学习 自动求导 autodiff

文心一言 VS 讯飞星火 VS chatgpt (195)-- 算法导论14.3 3题

福大大架构师每日一题

福大大架构师每日一题

对话苏光牛:国内数据库市场已进入关键转折点,2024年或是分水岭

华为云开发者联盟

数据库 后端 华为云 华为云GaussDB 华为云开发者联盟

代码手术刀-自定义你的代码重构工具

京东科技开发者

基于 SRAM 的存内计算助力实现节能 AI

申公豹

存内计算

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