写点什么

内存优化表的索引

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

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

关注

评论

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

ByConity真的可以替换ClickHouse吗?

ClkLog

低代码开发:助企构建数字化应用平台

不在线第一只蜗牛

低代码

电商云手机:提升业务效率的必备工具

Ogcloud

云手机 海外云手机 云手机海外版 国外云手机 电商云手机

Rainbond 携手 TOPIAM 打造企业级云原生身份管控新体验

北京好雨科技有限公司

云原生 k8s rainbond 企业号 5 月 PK 榜

以文会友,IoTDB 社区专属六一礼物派送!

Apache IoTDB

共筑产业生态丨焱融科技加入长三角人工智能生态联盟

焱融科技

人工智能如何改变 API 的未来

幂简集成

AI API

海外云手机改变全球社交营销方式

Ogcloud

云手机 海外云手机 云手机海外版 国外云手机 跨境云手机

SQL查询太慢?实战讲解YashanDB SQL调优思路

YashanDB

数据库 SQL调优 yashandb 崖山数据库

祝贺!阿里云PolarDB斩获数据库国际顶会ICDE 2024工业赛道最佳论文

阿里云瑶池数据库

数据库 阿里云 polarDB

2024年了,居然还有人不知道git worktree?

秃头小帅oi

EMQX Enterprise 5.7 发布:新增会话持久化、消息 Schema 验证、规则引擎调试与追踪功能

EMQ映云科技

云原生 数据 mqtt emqx mqtt broker

百度文库发布行业首个“查阅创编”一体化产品“橙篇”,AI创作领域诞生“超级物种”

极客天地

全国节能宣传周来了!天翼云电脑为绿色低碳注入科技动能!

天翼云开发者社区

云计算 云电脑

国资委认可!优秀品牌!

天翼云开发者社区

云计算 天翼云

观测云产品更新 | DCA、异常追踪、日志、场景、监控等

观测云

监控

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