2011-01-30 30 views
3

問候Overflowers,指數如何應對MVCC?

  • 據我瞭解(我希望我沒有右)指數的變化不能MVCCed。
  • 我想知道這是否也是如此,大記錄作爲副本可以是昂貴的。
  • 由於記錄是通過索引(通常)訪問的,因此MVCC如何有效?
  • 例如,索引是否記錄了不同版本的MVCCed記錄?

任何最近在這個問題上的不錯閱讀?非常感謝 !

問候

回答

5
  1. 指數本身可以兼得,可以在返回前被修剪的記錄。所以在這種情況下,ondex本身不能用於獲取記錄(由PostGres完成的MVCC)。 InnoDB/Oracle只保留一個版本的數據/索引,並使用撤消部分重建舊版本的舊版本。

  2. 當數據庫一般使用時,您不會有太多副本,因爲定期複製將被垃圾收集(在PostGres中),Oracle/InnoDB將具有撤銷部分,在事務中止/提交時將被重用。如果你有很多長時間運行的交易,你會遇到問題。

  3. 索引是爲了加快訪問速度,更快地找到記錄,而不用觸及所有索引,索引在第一遍時不需要精確,您可能需要查看元組以查看其是否在一個特定事務中有效或不像(在PostGres中)。 racle或InnoDB甚至索引都是版本化的,所以你可以從索引本身獲取數據。

Read this得到的實施MVCC(PresGres和Oracle/InnoDB的)的兩個方面詳細的想法。

InnoDB MVCCcomments here也很管用

PS:我不是在MySQL/Oracle專家 - /內部Postgres的,仍然在學習如何工作。