写点什么

内存优化表的索引

  • 2013-09-25
  • 本文字数:678 字

    阅读完需:约 2 分钟

SQL Server 2014 的内存优化表对索引的处理方式与传统表相比差别很大。首先也是最重要的一点,你必须有至少一个索引,但同时索引数不能超过8 个。

必须的那个索引用于组织内存中的数据。不同于传统的表,内存优化表并不支持将数据存储到一个无序堆中。这个索引包含主键,这也是表所唯一允许的唯一列。另外,主键不能是一个标识列。

事实上,标识列是被完全禁止的。这极有可能是支持锁无关写操作所需要的一个限制。

其他7 个索引几乎都是用于辅助join 和order by 操作的。正如前面所提到的,你不能添加额外的唯一索引,也不能使用索引执行外键约束。

你也不能使用触发器解决这些限制,因为内存优化表并不支持。

最后,也不允许检查约束。这意味着几乎所有关注完整性的数据都必须被推送到存储过程或者应用程序层里面。

但是请等一等,还有更多要说明的内容。你还不能在可空的列上放置索引。你也不能使用筛选索引,每一个索引都必须引用每一行。

内部结构

内存优化表中的行并不会被安排在页中。相反,它们分散在内存中。访问它们的唯一方式便是通过索引,这就是至少要有一个索引的原因。

这些索引并不是传统的B 树。它使用一个哈希索引和一个固定数量的桶(buckets)。在理想的情况下,每一个桶仅会容纳一行,因此在创建索引的时候你应该指定期望这个表存储的行的数量。你需要仔细斟酌,对于内存而言超出预算的行数是一个非常大的浪费。

对此,一个计划的替代方案是范围索引(range indexes)。虽然现在还不能用,但是范围索引的期望是能够更好地处理未知数量的行。

明天我们将会继续这个系列,介绍本机编译的查询。

查看英文原文 Indexes in Memory Optimized Tables

2013-09-25 09:322014
用户头像

发布了 321 篇内容, 共 133.7 次阅读, 收获喜欢 19 次。

关注

评论

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

javascript之webAPIs(1)

timerring

JavaScript

openGauss-graph 0.2.0版本正式上线

daydayup

面部表情识别在医疗领域的应用

数据堂

【我和openGauss的故事】一文帮你理解openGauss的高可用方案

daydayup

【我和openGauss的故事】在Kylin桌面版操作系统中配置openGauss的ODBC数据源

daydayup

openGauss数据库源码解析系列文章——安全管理源码解析(四)

daydayup

作为网络报表分析工具的Quick BI,其功能如何

夜雨微澜

可视化数据分析工具是什么?可以用来做什么?

巷子

【我和openGauss的故事】原生openGauss与Oracle数据库函数兼容性对比验证测试

daydayup

【我和openGauss的故事】Navicat连接openGauss_5.0.0 企业版数据库

daydayup

【我和openGauss的故事】openGauss 主备架构及同步复制模式理论学习与验证测试

daydayup

Dragonfly 发布 v2.1.0 版本!

SOFAStack

AI 算法 后端 基础设施 分发

面部表情识别技术在安全领域的应用

数据堂

中国信通院高质量数字化转型产品及服务全景图发布,合合信息多项AI产品入选

合合技术团队

人工智能 数字化转型

通义千问开源模型部署使用

WizInfo

通义千问

【我和openGauss的故事】openGauss5.0在某省医保局实时数仓应用

daydayup

2023-08-10:景区里有m个项目,也就是项目数组为int[][] game,这是一个m*2的二维数组 景区的第i个项目有如下两个参数: game[i] = { Ki, Bi } Ki一定是负数,

福大大架构师每日一题

左程云 福大大架构师每日一题

AIGC 浪潮下,鹅厂新一代前端人的真实工作感受

CODING DevOps

以商业大数据技术助力数据合规流通体系建立,合合信息参编《数据经纪从业人员评价规范

合合技术团队

人工智能 大数据 商业化

【我和openGauss的故事】openGauss5.0特性:CM支持VIP仲裁特性

daydayup

【NodeJS】GLIBC_2.28 not found CentOS7不兼容Node高版本

ReturnTmp

node.js centos

实现分布式事务:Java与MySQL的XA事务协调

树上有只程序猿

Java MySQL 数据库 分布式 XA

UE虚幻引擎游戏开发:游戏鼠标双击判定方法!

3DCAT实时渲染

UE虚幻引擎 UE教程 3D游戏制作教程

从推动到拉动:研发效能提升的第一性原理

CODING DevOps

ARTS 打卡第 1 周 鸿蒙入门开发教程:一文带你详解工具箱元服务的开发流程

坚果

ARTS 打卡计划 HarmonyOS OpenHarmony 元服务 ArkTS

ToolLLM:能够使用 16000 种真实 API 的 LLM

Zilliz

AIGC Towhee LLM

go-zero 是如何实现令牌桶限流的?

AlwaysBeta

Go 源码 微服务 go-zero 限流器

巧用Maya轴心操作小技巧,工作事半功倍!

3DCAT实时渲染

maya制作技巧 3D软件教程

腾讯云大数据ES:结合AI大模型与向量检索的新一代云端检索分析引擎

腾讯云大数据

ES

面部表情识别技术的挑战与解决方案

数据堂

openGauss数据库源码解析系列文章——安全管理源码解析(三)

daydayup

内存优化表的索引_架构_Jonathan Allen_InfoQ精选文章