Я собираюсь обновить довольно большой кластер 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.
Я ценю, если кто-нибудь может помочь пролить свет на это.