E.24. Postgres Pro 9.5.0.1

Дата выпуска: 2016-02-01

E.24.1. Обзор

В число ключевых усовершенствований Postgres Pro 9.5 по сравнению с PostgreSQL входят:

  • Улучшения масштабируемости для многоядерных/многопроцессорных систем.

  • Покрывающие индексы.

  • Используется переносимая реализация функций интернационализации (libicu) вместо системных функций

  • Ускорение двухфазной фиксации.

  • Дополнительный модуль pg_trgm поддерживает поиск подстрок.

  • Расширение, позволяющее сохранять и восстанавливать планы выполнения запросов.

  • Сохранение и восстановление статистики таблиц.

  • Ряд словарей hunspell для полнотекстового поиска включён в состав дистрибутива.

  • Поддержка поиска фраз в полнотекстовом поиске.

Предыдущие пункты более подробно описаны в следующих разделах.

E.24.2. Миграция на Postgres Pro 9.5

Тем, кто хочет мигрировать данные из любой предыдущей версии, необходимо выполнить выгрузку/загрузку данных с помощью pg_dumpall или воспользоваться pg_upgrade.

При миграции с PostgreSQL 9.5 на Postgres Pro 9.5 выгрузка/восстановление базы не требуется.

E.24.3. Изменения

Ниже вы найдёте подробный список изменений, произошедших между предыдущим the changes between Postgres Pro 9.5 and PostgreSQL 9.5.

E.24.3.1. Сервер

E.24.3.1.1. Индексы
  • Покрывающие индексы. Теперь оператор CREATE INDEX поддерживает ключевое слово INCLUDING, которое позволяет указать дополнительные столбцы, не влияющие на порядок сортировки и уникальность, но позволяющие ускорить некоторые запросы, так как все необходимые данные содержатся в индексе.

E.24.3.1.2. Общая производительность
  • Улучшения масштабируемости для многоядерных/многопроцессорных систем:

    • Оптимизация работы с владельцем ресурса для сложных запросов: теперь список ресурсов имеет постоянное время доступа, что улучшает производительность запросов к сильно секционированным таблицам и сложных запросов, использующих сотни таблиц.

    • Устранён конфликт блокировок для HASHHDR.mutex (Александр Алексеев). Это предотвращает ожидание до нескольких миллисекунд при изменении состояния, разделяемого между несколькими процессами.

    • Улучшение параллельной работы буфер-менеджера для многоядерных архитектур.

    • Улучшение параллельной работы LWLock на архитектуре Power8.

  • Ускорение двухфазной фиксации. Теперь состояние таких фиксаций пишется в WAL только на стадии PREPARE и читается оттуда в момент выполнения COMMIT PREPARED/ABORT PREPARED. Подготовленные транзакции, которые продолжаются дольше одного цикла контрольных точек bufmgr, будут записаны на диск в той же форме, как и ранее. Восстановление после сбоев не изменилось. Измеренный выигрыш в производительности до 50-100% для коротких двухфазных транзакций. Возможны дальнейшие оптимизации, ожидаются другие патчи в этой области.

    Стас Кельвич (плюс редактура Саймона Риггса).

    Основано на ранних идеях и разработках Микаэля Пакье и Хейкки Линнакангаса, что представляет пример того, как Postgres-XC возвращает полезные идеи в PostgreSQL.

    Рецензенты: Микаэль Пакье, Джефф Джейнс и Андрес Фройнд. Тестирование производительности: Джеспер Педерсен.

E.24.3.1.3. Полнотекстовый поиск
  • Поиск фраз — теперь возможно указывать порядок слов в полнотекстовом запросе.

  • Улучшена поддержка словарей hunspell. Теперь возможно использование словарей со сложными файлами аффиксов, которые не поддерживались в более ранних версиях.

    Ряд словарей hunspell включён в дистрибутив. См. Подраздел E.24.3.3 ниже.

E.24.3.2. Улучшения переносимости

  • Использование libicu вместо системных функций поддержки локалей. Это гарантирует одинаковый порядок сортировки на всех платформах. На основе патча Палле Гиргенсона http://people.freebsd.org/~girgen/postgresql-icu/README.html, адаптировано к 9.5 и добавлена поддержка сокращённых ключей Фёдором Сигаевым.

E.24.3.3. Дополнительные модули

  • Расширение pagenispect теперь может извлекать данные записей, а не только метаинформацию.

  • Дополнительный модуль pg_trgm, предоставляющий нечёткое сравнение строк, теперь поддерживает поиск по подстрокам.

    Дополнительный модуль sr_plan, поддерживающий сохранение плана запроса и применение сохранённого плана вместо вычисления нового плана при каждом выполнении запроса.

  • Дополнительный модуль dump_stat. Этот модуль позволяет экспортировать статистику таблиц при выгрузке и восстанавливать её вместо того, чтобы выполнять VACUUM ANALYZE после восстановления базы или обновления сервера.

  • Несколько словарей hunspell для полнотекстового поиска теперь включены как дополнительные модули и могут быть легко установлены в базу данных с помощью команды CREATE EXTENSION.