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.