Postgresql Postgres如何更新堆文件中的可变长度记录
我读过关于物理存储的文章“”。但我不明白Postgres是如何更新文件中的可变长度记录的。Postgres是否移动相邻行或创建新行,并将旧行标记为已删除?您应该读取自身以获取可靠信息 PostgreSQL表被划分为8kB大小的块。每个记录(官方单词为“tuple”)存储在一个块中 PostgreSQL试图通过在与表关联的“TOAST表”中存储长度可变的数据类型,来压缩超过2kB的元组。这种技术确保即使是大的行也可以存储在单个块中 PostgreSQL从不更新元组。在Postgresql Postgres如何更新堆文件中的可变长度记录,postgresql,storage,Postgresql,Storage,我读过关于物理存储的文章“”。但我不明白Postgres是如何更新文件中的可变长度记录的。Postgres是否移动相邻行或创建新行,并将旧行标记为已删除?您应该读取自身以获取可靠信息 PostgreSQL表被划分为8kB大小的块。每个记录(官方单词为“tuple”)存储在一个块中 PostgreSQL试图通过在与表关联的“TOAST表”中存储长度可变的数据类型,来压缩超过2kB的元组。这种技术确保即使是大的行也可以存储在单个块中 PostgreSQL从不更新元组。在UPDATE语句期间,将一个新
UPDATE
语句期间,将一个新元组插入到具有足够可用空间的块中,并标记旧元组
被取代了;旧元组对于快照早于更新事务的并发语句仍然可见
旧元组最终会被释放。然后,新元组可以重用空闲空间