Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 为什么PostgreSQL索引不包含可见性信息?_Database_Postgresql_Mvcc - Fatal编程技术网

Database 为什么PostgreSQL索引不包含可见性信息?

Database 为什么PostgreSQL索引不包含可见性信息?,database,postgresql,mvcc,Database,Postgresql,Mvcc,我知道PostgreSQL中的物理存储看起来像: heap table: <old_tuple, t_xmin, t_xmax> <new_tuple, t_xmin, t_xmax> index: <old_index_value, old_RID> <new_index_value, new_RID> 开销相对较高-t_xmin,t_xmax总共有8个字节,将来可能会有16个字节。所以,如果Postgres将这些值存储到索引中,那么几乎所有的

我知道PostgreSQL中的物理存储看起来像:

heap table:
<old_tuple, t_xmin, t_xmax>
<new_tuple, t_xmin, t_xmax>
index:
<old_index_value, old_RID>
<new_index_value, new_RID>

开销相对较高-t_xmin,t_xmax总共有8个字节,将来可能会有16个字节。所以,如果Postgres将这些值存储到索引中,那么几乎所有的数值索引都会比索引大2倍(bigint)或2/3倍(int)

如今这已经不是问题了(可能),但博士后的起步时间只有80年的一半,而且光盘容量是个大问题


第二个动机可能是代码的复杂性和确保数据一致性(无硬锁定)。Postgres中的索引是数据访问加速器,而不是数据源。那么实现就更简单了。Ingres是由非常聪明的教授和学生设计的,更健壮、更简单(但可能更慢)的设计是首选。

开销相对较高-t_xmin,t_xmax总共有8个字节,将来可能会有16个字节。所以,如果Postgres将这些值存储到索引中,那么几乎所有的数值索引都会比索引大2倍(bigint)或2/3倍(int)

如今这已经不是问题了(可能),但博士后的起步时间只有80年的一半,而且光盘容量是个大问题


第二个动机可能是代码的复杂性和确保数据一致性(无硬锁定)。Postgres中的索引是数据访问加速器,而不是数据源。那么实现就更简单了。Ingres是由非常聪明的教授和学生设计的,更健壮、更不复杂(但可能更慢)的设计是首选。

您正在询问一个非常具体的实现细节。我不知道有多少人了解博士后的这些细节,我当然不知道。你试过直接联系postgres开发者吗?试试pgsql黑客,核心开发者就住在那里:你问的是一个非常具体的实现细节。我不知道有多少人了解博士后的这些细节,我当然不知道。你试过直接联系postgres开发人员吗?试试pgsql黑客,那是核心开发人员居住的地方:而且,那将是冗余信息,因此可能是不一致的另一个来源。@Laurenzal-当然,但任何访问优化都是如此-索引也是冗余的(任何人都知道不一致的索引有多糟糕),还有能见度图(一点点)。我认为这种设计非常古老——可能来自安格尔——因此动机和设计原则可以在斯通布雷克和他的团队撰写的安格尔论文和规范中找到。此外,这将是冗余信息,因此可能是不一致的另一个来源。@laurenzalker-当然,但这对于任何访问优化都是正确的——索引也是冗余的(任何人都知道索引的不一致性有多糟糕),可见性映射也是(很少)。我认为这种设计非常古老——可能来自安格尔——因此动机和设计原则可以在安格尔的论文和Stonebraker及其团队编写的规范中找到。
index:
<old_index_value, old_RID, t_xmin, t_xmax>
<new_index_value, new_RID, t_xmin, t_xmax>