Database 指数如何应对MVCC?

Database 指数如何应对MVCC?,database,indexing,locking,mvcc,Database,Indexing,Locking,Mvcc,向飞越者致意 据我所知(我希望我不是对的),对索引的更改不能MVCCed 我想知道这是否也适用于大型唱片,因为复制成本可能会很高 由于记录是通过索引访问的(通常),MVCC如何有效 例如,索引是否跟踪不同版本的MVCCed记录 最近有关于这个问题的好文章吗?非常感谢 问候 索引本身可以有两个记录,在返回之前可以对它们进行修剪。因此,在这种情况下,ondex不能单独用于获取记录(由PostGres完成的MVCC)。InnoDB/Oracle只保留一个版本的数据/索引,并使用“撤消”部分为旧事务

向飞越者致意

  • 据我所知(我希望我不是对的),对索引的更改不能MVCCed
  • 我想知道这是否也适用于大型唱片,因为复制成本可能会很高
  • 由于记录是通过索引访问的(通常),MVCC如何有效
  • 例如,索引是否跟踪不同版本的MVCCed记录
最近有关于这个问题的好文章吗?非常感谢

问候

  • 索引本身可以有两个记录,在返回之前可以对它们进行修剪。因此,在这种情况下,ondex不能单独用于获取记录(由PostGres完成的MVCC)。InnoDB/Oracle只保留一个版本的数据/索引,并使用“撤消”部分为旧事务重建旧版本

  • 通常使用DB时不会有太多副本,因为定期对副本进行垃圾收集(在PostGres中),并且Oracle/InnoDB将具有撤消部分,在事务中止/提交时将重用这些部分。如果您有太多长时间运行的事务,显然您会遇到问题

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

  • 详细了解实现MVCC的两种方法(PresGres和Oracle/InnoDB)

    而且也很有用

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