gpt4 book ai didi

postgresql - 之后使用带有 --link 选项的 pg_upgrade 是否有任何负面的性能或功能缺点?

转载 作者:行者123 更新时间:2023-11-29 11:41:08 25 4
gpt4 key购买 nike

我要将一个相当大的 PostgreSQL 集群从 9.3 升级到 11。

升级

集群的大小约为 1.2Tb。该数据库有一个磁盘系统,由一个快速 HW RAID 10 阵列组成,该阵列由 8 个 DC 版 SSD 组成,具有 192GB 内存和 64 个内核。我通过首先使用流复制将数据复制到新服务器来执行升级,然后将该服务器升级到 11。

我使用带有 --link 选项的 pg_upgrade 测试了升级,这需要不到一分钟的时间。我还定期测试升级(没有 --link)许多作业,这需要几个小时 (+4)。

问题

现在明显的选择是我使用 --link 选项的原因,然而所有这一切让我想知道 - 与常规相比使用它是否有任何缺点(性能或功能方面)较慢的方法?我不知道 postgresql 数据结构的内部工作原理,但我感觉升级后完全重写数据与仅使用硬链接(hard link)之间可能存在性能差异> - 这是什么意思?

注意事项

我在文档中唯一能找到关于 --link 缺点的是执行升级后无法访问旧数据目录的缺点 https://www.postgresql.org/docs/11/pgupgrade.htm然而,这只是一个安全问题,而不是性能缺陷,并不真正适用于我首先复制数据的情况。我唯一能想到的另一件事是回收空间,以及可能具有的任何性能优势。但是据我所知,这也可以通过在 --link- 之后运行 VACUUM FULL DATABASE(或 CLUSTER?) upgraded 数据库有没有升级?此外,据我所知,空间回收对 SSD 的性能影响不是很大。

如果有人能对此有所帮助,我将不胜感激。

最佳答案

使用硬链接(hard link)绝对没有缺点(除了您提到的异常(exception)情况,旧集群已失效且必须删除)。

硬链接(hard link)与普通文件没有任何区别。

UNIX 中的"file"实际上是一个“ inode ”,一种包含文件元数据的结构。目录中的条目是指向该 inode 的(硬)链接。

如果您创建另一个到 inode 的硬链接(hard link),同一个文件将位于两个不同的目录中,但这对文件的行为没有任何影响。

当然,您必须确保您不会同时启动唯一的服务器和新服务器。随之而来的是即时数据损坏。这就是为什么您应该尽快删除旧集群的原因。

关于postgresql - 之后使用带有 --link 选项的 pg_upgrade 是否有任何负面的性能或功能缺点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53618921/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com