写点什么

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

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

关注

评论

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

Microsoft 365 for Mac(Office 365)

Mac相关知识分享

Microsoft Word 2019 for mac(word mac)中文正式版

Mac相关知识分享

什么是PLM项目管理系统?全面了解其重要性和应用

爱吃小舅的鱼

PLM软件 plm项目管理 plm系统

流程管理工具推荐:8款实用选择

爱吃小舅的鱼

流程管理工具

CnosDB 实时流式计算:优化时序数据处理与降采样解决方案

CnosDB

时序数据库 tsdb CnosDB #开源

智慧园区管理系统(源码+文档+部署+讲解)

深圳亥时科技

PIRF-415: A Golden Nugget

Echo!!!

English

PTGui Pro for Mac全景图拼接制作工具

Mac相关知识分享

活动组织管理小程序(源码+文档+部署+讲解)

深圳亥时科技

Minitab Express for Mac(数据分析统计软件)

Mac相关知识分享

淘宝/天猫官方商品/订单订单API接口丨商品上传接口对接步骤

tbapi

天猫店铺订单接口 淘宝开放平台订单接口 淘宝店铺上传接口

负载开关IC:简化电源管理与提升系统稳定性的关键

芯动大师

如何科学地规划和执行项目集进度安排

爱吃小舅的鱼

项目集进度安排

欧拉中国服务器操作系统份额达50%,商业技术生态稳健发展

科技热闻

精选8款文档管理平台,口碑推荐

易成研发中心

分布式唯一ID生成:深入理解Snowflake算法在Go中的实现

左诗右码

使用Python根据给定模型计算模型权值

代码忍者

互联网演进跨越半世纪,智能化时代呼唤Net5.5G网络新代际

脑极体

通信

RAG 系统高效检索提升秘籍:如何精准选择 BGE 智源、GTE 阿里与 Jina 等的嵌入与精排模型的完美搭配

汀丶人工智能

rag

《Django 5 By Example》阅读笔记:p211-p236

codists

Python django

专业视角解读:高效项目管理的实用技巧

爱吃小舅的鱼

项目管理

PLM项目管理系统的核心作用:改善产品质量与市场响应

爱吃小舅的鱼

plm项目管理 plm系统 plm系统作用

Agents开发实战营总结

铁血杰克

iStat Menus for mac(mac系统状态监控工具)

Mac相关知识分享

哪款工程管理软件最好?2024年十大推荐

爱吃小舅的鱼

工程管理 工程管理软件 工程管理工具

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