Команда VACUUM используется для двух разных целей: очищение файлов баз данных от уже удалённых записей (можно сравнить по смыслу с дефрагментацией файловой системы), и сбор статистики по данным, которую может использовать встроеный в Postgre SQL оптимизатор запросов.
Я рекомендую ежедневно выполнять команды
Если у вас есть UPS, и вы уверены что некорректных перезагрузок не будет, то вы можете в postgresql.conf заменить fsync=yes на fsync=no, тем самым многократно увеличить производительность (ценой, разумеется, некоторого риска).
При вызове команлы:
SELECT COUNT(*) FROM table;
всё содержимое таблицы будет передано функции COUNT. С диска таблица будет считана целиком. Если таблица большая, то это будет очень длительная операция.
Поэтому, пожалуйста, избегайте использования COUNT(*) на больших запросах, пожалейте ваш сервер!
Обычно в реальной работе нужно считать только небольшого количество элементов, поэтому и не была сделана специфичная оптимизация. Если вам действительно нужно знать количество элементов во всей таблице, то вам придётся написать триггеры на удаление/добавление записей в эту таблицу.
Часто это не нужно, и впустую тратит место на диске (и время при чтении таблицы с диска). Параметр WITHOUT OID при создании таблицы отключает эту особенность, экономя 4 байта на каждой строке.
последовательность действий Postgre SQL для выполнения вашего запроса, и понять на каком этапе тратится слишком много времени. Обычно это позволяет увидеть каким образом можно минимальными изменениями кода многократно увеличить производительность, а также выявить свои ошибки в оптимальности составленых запросов.
Если выполнять каждую запись отдельно, то накладные расходы будут слишком велики, если же попытаться залить сразу большой объём данных, то это потребует излишне много оперативной памяти, и будет работать также заметно медленнее. Обычно я стараюсь чтобы за одну транзакцию отправлялось не более чем несколько 64 килобайтных блоков данных.
Например индекс типа hash позволят очень быстро выполнять поиск записи по строковому полю, однако не может быть использован для сортировки или поиска по шаблону.
Изучите внимательно документацию на индексы Postgre SQL, это вложение времени себя однозначно окупит.
Размещение этого документа на других Internet-ресурсах, а также в печатных изданиях не допускается.
Отзывы — здесь вы можете высказать своё мнение по поводу содержимого сайта
Ссылок на эту страницу нет