Различия | PostgreSQL | PostgresPro |
Оптимизация производительности |
Оптимизации выделения хэш-таблиц в shared memory, исключающая lock contention при большом количестве процессов. | Нет | Есть |
Оптимизации Resource Owner. Улучшает производительность сложных запросов и запросов к таблицам с большим количеством секций. | Нет | Есть |
Оптимизации buffer manager | Нет | Есть |
Оптимизация LWLock для архитектуры Power8 | Нет | Есть |
Оптимизации двухфазного коммита | Нет | Есть |
Кеширование планов запросов | Нет | Добавлен модуль sr_plan, который позволяет - сохранять планы выполнения запросов и использовать сохраненные планы вместо того, чтобы формировать план запроса заново, при каждом выполнении
|
Дополнительные возможности для разработчиков |
Усовершенствования полнотекстового поиска | | - поддержка поиска фраз
- поддержка словарей hunspell для работы со словоформами
- некоторые словари, в том числе русский и английский, включены в состав дистрибутива и их подключение требует одной команды SQL
- модуль shared_ispell, оптимизирующий производительность полнотекстового поиска, путем загрузки словарей в память при старте сервера, а не при начале сессии
|
Нечеткий поиск | Модуль pg_trgm, который обеспечивает: | Модуль pg_trgm, который обеспечивает: - нечеткое сравнение строк
- нечеткий поиск подстроки
|
Покрывающие индексы | Нет | Поддерживается конструкция INCLUDING в CREATE INDEX |
Интроспекция | Модуль pageinspect, поддерживает доступ к: | Модуль pageinspect, поддерживает доступ к: - метаинформации
- внутреннему представлению данных таблиц
|
Язык запросов JSQuery | | Добавлен модуль jsquery, позволяющий - на специальном языке формулировать запросы к полям типа JSONB с поддержкой GIN-индексов
|
Сессионные переменные | Нет | Добавлен модуль pg_variables, позволяющий - создавать и использовать переменные различных типов в рамках пользовательских сессий (по аналогии с Oracle Package Variables)
|
Секционирование | - Осуществляется вручную на базе встроенного мехнизима наследования
- Запросы к унаследованным таблицам автоматически не оптимизируются
| Добавлен модуль pg_pathman, позволяющий - осуществлять секционирование таблиц спецаильными встроенными функциями
- создание
- удаление
- объединение
- разделение
- использовать секционирование
- оптимизировать запросы, включающие в себя JOIN и/или выборку с условием по секционированным таблицам для случаев
- подготовленных запросов
- nested loop
- подзапросов
В релизе 9.5.4.1+1 ожидается pg_pathman (версии 1.0), в котором реализована: - Поддержка неблокирующего (конкурентного) секционирования
- Ускорение операции INSERT, за счёт отказа от триггеров и осуществления прямой записи в секцию
- Поддержка полностью ручного управления секциями
|
Дополнительные возможности для администраторов |
Резервное копирование статистики и восстановление | Нет | Добавлен модуль dump_stat, позволяющий - при дампе базы данных сохранять информацию о статистике и восстанавливать её. Это позволяет ускорить процедуру восстановления, избавляя от необходимости вычисления статистики командой VACUUM ANALYZE после восстановления
|
Улучшения переносимости |
Платформонезависимая поддержка Unicode | Используется системная библиотека | Задействована библиотека LIBICU, которая - обеспечивает однозначную обработку порядка сортировки и прочих операций с юникодными символами
- на ряде платформ улучшает производительность сортировки
- позволяет в Postgres Pro пользоваться abbreviated keys, которые были отключены в основной версии PostgreSQL
|