воскресенье, 15 марта 2015 г.

Администрирование PostgreSQL 9. Книга рецептов

Прочитал книгу "Администрирование PostgreSQL 9. Книга рецептов" за авторством Саймона Ригса и Ханну Кросинга, вышедшую в издательстве ДМК Пресс.



На русском языке очень мало книг об этой СУБД. Мне удалось заполучить только две. Первая расчитана на новичков, а эта - на профессионалов. Книг, ориентированных на специалистов средней подготовки, на русском языке, можно сказать, нет. Я вообще очень мало знаю об этой СУБД и на практике применял её минимально. Пожалуй самыми полезными разделами этой книги я бы счёл разделы посвящённые процессу уплотнения таблиц (vacuum), резервному копированию и репликации.

Если сравнивать с MySQL, то никакого встроенного уплотнения таблиц в нём мне не известно. В случае если вся база данных хранится в одном файле, для возврата незанятого места из этого файла в файловую систему приходилось делать полную резервную копию с последующим удалением файлов и полным восстановлением из резервной копии. В случае хранения таблиц в отдельных файлах в MySQL вернуть место файловой системе можно только полным пересозданием таблицы, сопряжённым с её полной блокировкой. В PostgreSQL возврат незанятого места из файлов таблиц - фоновый процесс.

Если сравнивать резервное копирование с MySQL, то в PostgreSQL поддерживает горячее бинарное резервное копирование путём простого копирования файлов из файловой системы без каких-либо дополнительных инструментов типа xtrabackup или мгновенных снимков LVM. Резервную копию можно снять при помощи простого rsync, предварительно заморозив изменения файлов при помощи хранимой процедуры и разморозив их другой хранимой процедурой после копирования. После этого можно скопировать журналы изменений. При запуске PostgreSQL с такими резервными копиями, изменения из журналов будут перенесены в основное хранилище.

Механизм потоковой репликации в PostgreSQL мне показался более эффективным, чем имеющийся в MySQL. Потому что резервный сервер не выполняет те же запросы для обновления данных, которые выполняет основной сервер, а применяет уже готовые двоичные изменения к файлам хранилища, добавляя или удаляя из него блоки данных.

Кроме того, в PostgreSQL, если верить этой книге, реализована более эффективная поддержка транзакций и их изоляции друг от друга. Одновременно могут работать несколько запросов на обновление одной и той же таблицы, если они затрагивают разные записи одной таблицы. Внутри транзакции выполняются команды на изменение структуры таблиц или изменение индексов. Конечно, в таком случае другие запросы, работающие с изменяемой таблицей, приостанавливаются, поскольку в таком случае изменяются все записи в таблице. Но сам факт того, что структуру нескольких таблиц можно менять согласованно, должен весьма греть душу :)

Комментариев нет:

Отправить комментарий