Строка таблицы PostgreSQL

Строка таблицы PostgreSQL со временем либо помечается к уда­лению, и тогда ее нужно удалить, либо становится достаточно старой, и тогда ее нужно «заморозить». Удаление и «заморозка» производят­ся при сборке мусора. Зачем это нужно знать? Допустим, загружена таблица из 100 миллионов строк. Все работает правильно. Когда строки устаревают в достаточной степени для того, чтобы их «заморозить», следующая команда vacuum или очередное выполнение процесса autovacuum для этой таблицы переписывает каждую строку в целях «заморозки» идентификатора транзакции, интенсивно используя ввод-вывод. Очевидным способом устранения проблемы представляется вы­полнение команды vacuum после сильной нагрузки на базу данных. Разумеется, это не идеальное решение, и для его реализации может не хватать времени. Многие администраторы по привычке отключают Autovacuum, По­скольку он имеет свойство запускаться в самое неподходящее время. Другое решение описано выше, в разделе «Управление автоматиче­ским обслуживанием базы данных». «Заморозка» происходит, когда идентификатор транзакции стро­ки становится старше на vacuum_freeze_min_age транзакций, чем те­кущее значение. Обычно при сборке мусора «заморозка» осуществ­ляется в небольших объемах и незаметна. Выше приведен пример, в котором после больших транзакций остается много строк с одина­ковыми идентификаторами транзакций, что может вызвать неудоб­ства при «заморозке». Алгоритм Vacuum Спроектирован таким образом, чтобы рассматри­вались лишь те части таблицы, которым необходима чистка. Когда таблица достигает возраста Vacuum_f reeze_tabie_age, Данная оптими­зация уже не применяется, и просматривается вся таблица целиком. При этом обнаруживаются строки, требующие «заморозки». В ре­зультате использование ввода-вывода резко возрастает. Попробуем подобрать параметры так, чтобы предотвратить высо­кую нагрузку при сборке мусора.



Рубрика: Женский интерес

Комментарии закрыты.