指数如何应对MVCC?

时间:2011-01-30 07:20:11

标签: database indexing locking mvcc

问候Overflowers,

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

最近有关这个主题的好读物吗?真的很感激!

此致

1 个答案:

答案 0 :(得分:5)

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

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

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

  4. Read this详细了解实现MVCC的两种方式(PresGres和Oracle / InnoDB)。

    InnoDB MVCCcomments here也很有用

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