写点什么

内存优化表的索引

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

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

关注

评论

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

Python 教程之输入输出(6)—— 使用 print() 函数输出

海拥(haiyong.site)

Python 8月月更

Nacos配置中心之动态感知

急需上岸的小谢

8月月更

12条MySQL优化技巧,提速不止十倍!

TimeFriends

8月月更

危险!请马上替换代码中的BeanUtils!!!

JAVA活菩萨

Java 后端 java程序员 大厂技能 大厂实践

【字体反爬】的起点,月票数解析,一个小小的Python案例

梦想橡皮擦

Python 爬虫 8月月更

朴素贝叶斯分类-西瓜分类 python

Five

贝叶斯公式 Python. 8月月更

【高并发项目实战】工程模块化与活动会场静态化架构原理解析

小明Java问道之路

高可用 高并发 高性能 签约计划第三季 8月月更

2022-Java后端工程师面试指南-(MySQL)

自然

8月月更

原型链中的函数和对象

掘金安东尼

JavaScript 前端 8月月更

图文并茂|Linux内核内存回收之LRU算法

简说Linux内核

内存管理 Linux内核 进程管理 嵌入式开发

2021-Java后端工程师面试指南-(SpringBoot+SpringCloud)

自然

Spring Boot CLI spring cloud stream 8月月更

我们来聊聊锁升级吧

JAVA活菩萨

Java 后端 java程序员 大厂技能 大厂实践

leetcode 769. Max Chunks To Make Sorted 最多能完成排序的块(中等)

okokabcd

数组 LeetCode 数据结构与算法

谈谈程序员如何具备领导力

宇宙之一粟

领导力 8月月更

发布Android库至MavenCentral详解

JAVA活菩萨

Java 后端 java程序员 大厂技能 大厂实践

Java “constant string too long” 编译错误

HoneyMoose

Promise的点点滴滴

坚果

开源 8月月更

轻松完成接口测试及接口文档

Xd

Java 后端 接口测试

C++中const关键字的作用总结

桑榆

c++ 8月月更

编译调试插件功能总结

乌龟哥哥

8月月更

2022-Java后端工程师面试指南-(Redis)

自然

面试题 reis 8月月更

使用软引用实现缓存机制

JAVA活菩萨

Java 后端 java程序员 大厂技能 大厂实践

系统管理-Linux系统进程管理

Albert Edison

Linux centos 运维 服务器 8月月更

Axure9基本交互操作(二)

乔乔

8月月更

Linux内核LRU算法内存交换过程

简说Linux内核

内存管理 Linux内核 进程管理 嵌入式开发

C++对象模型和this指针实例分析

CtrlX

c++ 面向对象 后端 代码 8月月更

JVM学习之 内存结构

JAVA活菩萨

Java java程序员 大厂技能 大厂实践 秋招

一文读懂Linux内核处理器架构中的栈

简说Linux内核

Linux内核 进程管理 嵌入式开发 设备驱动

七日算法先导(五)——归并排序,希尔排序

工程师日月

8月月更

设计电商秒杀系统

爱晒太阳的大白

头脑风暴:打家劫舍

HelloWorld杰少

8月月更

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