写点什么

内存优化表的索引

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

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

关注

评论

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

【直播回顾】OpenHarmony知识赋能六期第五课—WiFi子系统

OpenHarmony开发者

OpenHarmony

Android技术分享|【Android踩坑】怀疑人生,主线程修改UI也会崩溃?

anyRTC开发者

android 音视频 UI 移动开发 主线程

【React源码系列】React Hydrate原理及源码剖析

爱切图的木子老师

React react源码 React服务端渲染原理 React Hydrate

前端线下培训的就业前景怎么样?

小谷哥

karmada调度策略想要实现,这三个组件必须了解 | K8S Internals系列第4期

BoCloud博云

容器 云原生 k8s

使用 TiDB Cloud (DevTier) 构建 TiDB 集群

TiDB 社区干货传送门

Netty实战 -- 使用Netty实现分布式框架Dubbo RPC

Bug终结者

dubbo Netty RPC 网络通信 8月月更

使用 Spring Boot 构建 TiDB 应用程序

TiDB 社区干货传送门

上海前端培训学习好就业难吗

小谷哥

vue-i18n国际化语言在项目中的使用

CRMEB

带你了解TensorFlow pb模型常用处理方法

华为云开发者联盟

人工智能 模型

Spark 性能调优

TiDB 社区干货传送门

性能调优

TiDB 查询优化及调优系列(五)调优案例实践

TiDB 社区干货传送门

TiSpark 如何扩展 Spark

TiDB 社区干货传送门

TiFlash DeltaTree Index 的设计和实现分析

TiDB 社区干货传送门

「周大福」WeOps助力周大福开启IT运维数字化转型之路

嘉为蓝鲸

TiDB 论文引发的 HTAP 数据库再思考

TiDB 社区干货传送门

数据库架构选型

Redis让我凉在美团一面,摸爬滚打3个月,二战逆袭成功斩获Offer

冉然学Java

Java redis 数据结构 面试 美团

Oracle SQL Language Reference手册中的错误

我不吃六安茶

ANTLR

元宇宙-原来挺简单

刘旭东

WebGL 数字孪生 元宇宙 blender Shapr3D

网易DBA团队出品“Mysql实用手册”正式开源,Github日下载破万

冉然学Java

Java MySQL 数据库 开源 架构

TiSpark 原理之下推丨TiDB 工具分享

TiDB 社区干货传送门

学习大数据课程后好找工作吗?

小谷哥

海泰方圆政务信息系统密码应用解决方案 保障政务业务和数据安全

电子信息发烧客

手写webpack tapable源码,官方tapable的性能真的就一定是好的吗?

爱切图的木子老师

前端 webpack 前端面试 webpack-tapable

什么是编译器中的常量传播?

华为云开发者联盟

开发 编译器 常量传播 基本块

Linux面试最高频的5个基本问题

千锋IT教育

Go-Excelize API源码阅读(八)——UngroupSheets()

Regan Yue

Go 开源 源码刨析 8月日更 8月月更

达摩克利斯之剑:开源软件的合规风险及防控策略

SEAL安全

开源安全 软件供应链安全 开源合规 软件供应链攻击

深圳大数据编程培训机构哪家比较靠谱

小谷哥

音视频开发进阶|音频编解码的必要性解读与格式选取

ZEGO即构

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