温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

插入时索引怎么维护

发布时间:2026-09-01 22:26:40 来源:亿速云 阅读:87 作者:小樊 栏目:数据库

在数据库或数据结构中,“插入时索引怎么维护”取决于你用的是什么索引结构什么系统。下面按常见场景给你一个清晰梳理。


一、关系型数据库(如 MySQL / PostgreSQL)

1. B+ 树索引(最常用)

插入一条数据时:

  1. 先写数据行(聚簇索引或堆表)
  2. 再更新所有相关索引
    • 在 B+ 树中查找插入位置
    • 若节点未满:直接插入
    • 若节点已满:节点分裂
      • 分裂成两个节点
      • 父节点插入新的键和指针
      • 可能向上递归分裂(甚至树高+1)

✅ 特点:

  • 索引始终有序
  • 插入成本:O(log n)
  • 分裂会带来短暂写放大

2. 唯一索引

插入时:

  • 先查是否已存在
  • 若存在 → 报错
  • 不存在 → 正常插入并维护索引

3. 二级索引

  • 插入主表后
  • 用「索引列 + 主键值」插入二级索引 B+ 树
  • 回表靠主键

二、哈希索引(如 Memory 引擎)

插入时:

  • 计算 hash(key)
  • 放入对应桶
  • 冲突 → 拉链法处理

✅ 优点:插入快 O(1)
❌ 缺点:不支持范围查询


三、日志结构索引(LSM Tree,如 RocksDB / HBase)

插入流程:

  1. 先写 WAL(日志)
  2. MemTable(内存)
  3. MemTable 满 → 刷成 SSTable(磁盘)
  4. 后台 Compaction 合并和清理

✅ 写入极快
❌ 读可能慢(需查多层)


四、向量索引(如 HNSW / IVF)

插入时:

  • 计算向量
  • 插入图结构或聚类中心
  • 可能触发:
    • 建边
    • 重平衡
    • 局部优化

✅ 支持近似检索
❌ 插入比 B+ 树复杂


五、程序中的索引(数组 / 跳表 / 红黑树)

结构 插入时索引维护
数组 移动元素 O(n)
跳表 随机层级 + 插链
红黑树 插入 + 旋转着色

六、一个简单总结

插入时索引维护的本质:
在“保持索引结构不变性”的前提下,把新数据放到正确位置,并在必要时做结构调整。

如果你愿意,可以告诉我:

  • 用的是 哪种数据库 / 引擎
  • SQL 索引还是自研数据结构
  • 关心的是 性能 / 原理 / 实现

我可以直接按你的场景讲。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI