Есть ли какие-либо отрицательные недостатки в производительности или функциональности при использовании pg_upgrade с опцией --link? - PullRequest
0 голосов
/ 04 декабря 2018

Я собираюсь обновить довольно большой кластер PostgreSQL с 9,3 до 11.

Обновление

Размер кластера составляет около 1,2 ТБ.База данных имеет дисковую систему, состоящую из быстрого массива HW RAID 10 из 8 твердотельных накопителей DC-издания с 192 ГБ оперативной памяти и 64 ядрами.Я выполняю обновление, реплицируя данные на новый сервер с потоковой репликацией, а затем обновляю его до 11.

Я протестировал обновление, используя pg_upgrade с опцией --link, это занимает меньшеминута.Я также регулярно тестировал обновление (без --link) со многими заданиями, что занимает несколько часов (+4).

Вопросы

Теперь очевидным выбором являетсяпричина для меня, чтобы использовать опцию --link, однако все это заставляет меня задуматься - есть ли какие-либо недостатки (с точки зрения производительности или функциональности) по сравнению с обычным более медленным методом?Я не знаю внутреннюю работу структур данных postgresql, но у меня есть ощущение, что может быть разница в производительности после обновления между полной перезаписью данных и просто использованием hard links - что бы это ни значило?

Соображения

Единственное, что я могу найти в документации о недостатках --link, - это недостаток невозможности доступа к старому каталогу данных после обновлениявыполняется https://www.postgresql.org/docs/11/pgupgrade.htm Однако это всего лишь проблема безопасности, а не недостаток производительности, и в моем случае в первую очередь это не относится к репликации данных.Единственное, о чем я могу думать, это освободить пространство, с какими бы ни были улучшениями производительности.Однако, насколько я понимаю, этого также можно добиться, выполнив команду VACUUM FULL DATABASE (или CLUSTER?) После обновления базы данных, обновленной до --link?Также, как я понимаю, освобождение места не очень влияет на производительность SSD.

Я ценю, если кто-нибудь может помочь пролить свет на это.

1 Ответ

0 голосов
/ 04 декабря 2018

Нет никаких недостатков в использовании жестких ссылок (за исключением того, что вы отметили, что старый кластер мертв и его нужно удалить).

Жесткая ссылка ничем не отличается от обычного файла.

«Файл» в UNIX на самом деле является «индексом», структурой, содержащей метаданные файла.Запись в каталоге является (жесткой) ссылкой на этот индекс.

Если вы создадите другую жесткую ссылку на индекс, этот файл будет находиться в двух разных каталогах, но это никак не повлияет на поведениефайла.

Конечно, вы должны убедиться, что вы не запускаете как единственный, так и новый сервер.Это приведет к мгновенному повреждению данных.Вот почему вы должны удалить старый кластер как можно скорее.

...