首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Postgres如何自动更新二级索引?

Postgres如何自动更新二级索引?
EN

Stack Overflow用户
提问于 2020-11-29 03:38:03
回答 1查看 50关注 0票数 0

我了解到,当事务执行更改时,Postgres mvcc方案会存储一个包含更新数据的新行,以及相关的版本。

其他事务知道它们应该看到哪些版本,并选择适当的行。

我还了解到,表的主索引存储行的所有版本。我可以看到如何更新主索引(锁定它以进行写入、追加行和解锁)。我不确定这是否是它的工作方式,但这是一种潜在的方式)。

但是Postgres是如何自动更新二级索引的呢?我设想当一个事务提交时,所有的索引都需要使用行中的新数据进行更新。

Postgres是否获取了所有二级索引的锁以自动更新它们?如果是这样,锁的粒度是在索引级还是在值级(仅锁定特定值的索引部分)?

这种方法在其他数据库引擎中也是一样的吗,比如InnoDB?

我正在构建一个玩具数据库,我很难理解如何有效地更新二级索引。任何关于这个主题的论文都是受欢迎的!

非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-29 12:05:50

PostgreSQL不支持按索引组织的表。所以所有的索引都是二级索引。

索引不会自动更新。如果一个进程在索引中看到一个有趣的条目,它就会将其追逐到表中。在表中,它看到该元组尚未提交,因此忽略它。系统安排向用户呈现原子性的体验,但在索引操作的级别上并不存在实际的原子性。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65053753

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档