问候Overflowers,
最近有关这个主题的好读物吗?真的很感激!
此致
答案 0 :(得分:5)
索引本身可以包含可以在返回之前修剪的记录。所以在这种情况下,单独使用ondex不能用于获取记录(由PostGres完成的MVCC)。 InnoDB / Oracle只保留一个版本的数据/索引,并使用撤销部分重建较旧版本的旧版本。
在使用数据库时,您不会拥有太多副本,因为定期复制将被垃圾收集(在PostGres中),而Oracle / InnoDB将具有撤销部分,这些部分将在事务中止/提交时重用。如果你有太多长时间运行的交易,你会遇到问题。
索引是为了加快访问速度,更快地找到记录,而不触及所有这些索引,索引在第一遍中不需要准确,你可能需要查看元组以查看它在一个特定事务中是否有效或不(如在PostGres中)。 racle或InnoDB甚至索引都是版本化的,因此您可以从索引本身获取数据。
Read this详细了解实现MVCC的两种方式(PresGres和Oracle / InnoDB)。
PS:我不是mysql / oracle / postgres内部的专家,还在学习如何运作。