写点什么

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

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

关注

评论

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

ChatGPT 人工智能助手为你定制测试计划,精准又高效!

测试人

软件测试 ChatGPT

低代码:推动新质生产力的引擎

天津汇柏科技有限公司

低代码开发 新质生产力

分享10个HTML小技巧,提高你的编码技能

秃头小帅oi

云起无垠创始人沈凯文博士入选《2023胡润U30中国创业先锋》榜

云起无垠

必须要了解的11 个 HTML 技巧

伤感汤姆布利柏

新特性速览!Sermant重磅更新,1.4.0 release版本发布

华为云开源

开源 微服务 服务治理 版本更新 sermant

精准高效测试计划,人工智能帮你制定

霍格沃兹测试开发学社

“PO高阶精进课程” 8月3-4日 · A-CSPO认证周末班【提前报名特惠】

ShineScrum

“数字创新产品课程” 7月27-28日 · CSPO认证周末班【提前报名特惠】CST导师亲授

ShineScrum

一些MaxCompute日常优化案例分享

阿里技术

MaxCompute union dmj

大量数据如何做分页处理

华为云开发者联盟

开发 数据处理 华为云 华为云开发者联盟 企业号2024年4月PK榜

14款DevOps/SRE工具,助力提升运维效率

SEAL安全

开源 DevOps 运维 SRE

低代码开发平台推荐:国内超好用的十款实测

菜根老谭

低代码 零代码 菜根智库

【FAQ】HarmonyOS SDK 闭源开放能力 —Push Kit(3)

HarmonyOS SDK

HarmonyOS

直播预告 | KaiwuDB 解析器之语义解析

KaiwuDB

数据库 语义分析

印度股票交易系统开发GangguHk

GangguHK

优雅永不过时:数据库表设计的12个关键点

菜根老谭

数据库 代码规范 菜根智库

AIGC创作活动 | 跟着UP主秋葉一起部署AI视频生成应用!

阿里云大数据AI技术

人工智能 自然语言处理 阿里云

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