指数如何应对MVCC?

gee*_*eko 3 database indexing locking mvcc

问候Overflowers,

  • 根据我的理解(我希望我不对),对指数的更改不能成为MVCC.
  • 我想知道这是否也适用于大记录,因为副本可能代价高昂.
  • 由于记录是通过索引(通常)访问的,MVCC如何有效?
  • 例如,索引是否跟踪不同版本的MVCCed记录?

最近有关这个主题的好读物吗?非常感谢 !

问候

Zim*_*bao 5

  1. 索引本身可以包含可以在返回之前修剪的记录.所以在这种情况下,单独使用ondex不能用于获取记录(由PostGres完成的MVCC).InnoDB/Oracle仅保留一个版本的数据/索引,并使用撤消部分重建较旧版本的旧版本.

  2. 一般使用数据库时,您不会有太多副本,因为定期复制将被垃圾收集(在PostGres中),而Oracle/InnoDB将具有撤销部分,这些部分将在事务中止/提交时重用.如果你有太多的长期运行交易显然你会遇到问题.

  3. 索引是为了加快访问速度,更快地找到记录,而不触及所有这些,索引在第一次传递时不需要准确,你可能需要查看元组以查看它是否在某个特定事务中有效(如在PostGres中) ).racle或InnoDB甚至索引都是版本化的,因此您可以从索引本身获取数据.

阅读本文以详细了解实现MVCC(PresGres和Oracle/InnoDB)的两种方法.

InnoDB MVCC评论也很有用

PS:我不是mysql/oracle/postgres内部的专家,还在学习如何工作.