Новые функции¶
В Arenadata DB 6 добавлено:
- Основные возможности PostgreSQL;
- Алгоритм сжатия Zstandard;
- Послабления для столбцов в распределенных таблицах;
- Функции Ресурсных Групп;
- Доработка процедурного языка PL/pgSQL;
- Репликация данных таблицы;
- Доработки параллельной обработки;
- Дополнительные модули Contrib;
- PXF версии 5.8.1;
- Дополнительные функции.
Основные возможности PostgreSQL¶
Arenadata DB 6 включает в себя несколько новых функций от PostgreSQL версий 8.4 – 9.4.
Обработка типа данных INTERVAL улучшена в PostgreSQL 8.4 в ключе синтаксического анализа литералов интервала в целях соответствия стандартам SQL. Это изменяет вывод для запросов, использующих литералы INTERVAL между версиями 5 и 6. Например:
$ psql
psql (8.3.23)
Type "help" for help.
gpadmin=# select INTERVAL '1' YEAR;
interval
----------
00:00:00
(1 row)
```
``` sql
$ psql
psql (9.2beta2)
Type "help" for help.
gpadmin=# select INTERVAL '1' YEAR;
interval
----------
1 year
(1 row)
Так же в Arenadata DB 6 включены следующие функции и изменения из PostgreSQL:
- Поддержка пользовательских преобразований ввода-вывода (PostgreSQL 8.4);
- Поддержка привилегий на уровне столбцов (PostgreSQL 8.4);
- Таблица каталога pg_db_role_setting, обеспечивающая поддержку настройки параметров конфигурации сервера для конкретной комбинации базы данных и роли (PostgreSQL 9.0);
- Значения в столбце relkind таблицы каталога pg_class изменены, чтобы соответствовать записям в PostgreSQL 9.3;
- Поддержка метода GIN-индекса (PostgreSQL 8.3);
- Поддержка Postgres Planner для метода доступа к индексам SP-GiST (PostgreSQL 9.2). GPORCA игнорирует индексы SP-GiST;
- Поддержка Postgres Planner для агрегатов упорядоченного набора (ordered-set aggregates) и агрегатов перемещения (moving-aggregates) (PostgreSQL 9.4).
- Поддержка типа данных jsonb (PostgreSQL 9.4);
- DELETE, INSERT и UPDATE поддерживают CTE (common table expression) условие WITH (PostgreSQL 9.1);
- Поддержка правил сортировки для задания ее порядка и классификации символов для данных на уровне столбцов (PostgreSQL 9.1). Но GPORCA поддерживает правила сортировки, только когда все столбцы в запросе используют одинаковые правила сортировки. Если столбцы в запросе используют разные правила сортировки, то ADB использует Postgres Planner.
Алгоритм сжатия Zstandard¶
В Arenadata DB 6 для некоторых операций с базой данных добавлена поддержка сжатия zstd (Zstandard).
Послабления для столбцов в распределенных таблицах¶
В предыдущих выпусках при указании ограничения UNIQUE и условия DISTRIBUTED BY в операторе CREATE TABLE условие DISTRIBUTED BY должно было быть равно или являться левым подмножеством столбцов UNIQUE. Arenadata DB 6 ослабляет это правило, так что любое подмножество столбцов UNIQUE принимается.
Это изменение также влияет на правила того, как Arenadata DB 6 выбирает ключ распределения по умолчанию. Если параметр gp_create_table_random_default_distribution выключен (по умолчанию) и условие DISTRIBUTED BY не включено, то ADB выбирает ключ распределения таблицы, основываясь на следующем:
- Если указано условие LIKE или INHERITS, то ADB копирует ключ распределения из исходной или родительской таблицы;
- Если указаны ограничения PRIMARY KEY или UNIQUE, то ADB выбирает в качестве ключа распределения наибольшее подмножество из всех столбцов ключей;
- Если не указаны ни ограничения, ни условия LIKE или INHERITS, то ADB выбирает в качестве ключа распределения первый подходящий столбец (столбцы с геометрическими или пользовательскими типами данных не допускаются в качестве столбцов ключей распределения ADB).
Функции Ресурсных Групп¶
В ADB добавлены следующие новые функции для ресурсных групп:
- При настройке группы ресурсов больше не требуется указывать MEMORY_LIMIT. При указании
MEMORY_LIMIT=0
база данных использует глобальный пул общей памяти группы ресурсов для обслуживания запросов, выполняющихся в группе. - При указании
MEMORY_SPILL_RATIO=0
для определения начального объема памяти оператора запроса база данных теперь использует параметр конфигурации сервера statement_mem. - При совместном использовании настроек групп ресурсов
MEMORY_LIMIT=0
иMEMORY_SPILL_RATIO=0
эти новые возможности обеспечивают схему управления памятью, аналогичную схеме, предоставляемой очередями ресурсов базы данных ADB.
Значения по умолчанию атрибутов MEMORY_SHARED_QUOTA, MEMORY_SPILL_RATIO и MEMORY_LIMIT для групп ресурсов admin_group и default_group установлены для использования схемы управления памятью, подобной очереди ресурсов, поэтому при первоначальном включении групп ресурсов запросы выполняются в аналогичной предыдущей среде памяти.
Resource Group | admin_group | default_group |
---|---|---|
MEMORY_LIMIT | 10 | 0 |
MEMORY_SHARED_QUOTA | 80 | 80 |
MEMORY_SPILL_RATIO | 0 | 0 |
Доработка процедурного языка PL/pgSQL¶
Процедурный язык PL/pgSQL в Arenadata DB 6 включает поддержку следующих новых функций:
- Прикрепление текста DETAIL и HINT к выдаваемым пользователю сообщениям об ошибках. Также можно указать коды SQLSTATE и SQLERRMSG для возврата ошибки, вызванной пользователем (PostgreSQL 8.4);
- Оператор RETURN QUERY EXECUTE, задающий запрос для динамического выполнения (PostgreSQL 8.4);
- Условное выполнение с использованием оператора CASE (PostgreSQL 8.4). Подробнее в документации PostgreSQL.
Репликация данных таблицы¶
Команда CREATE TABLE поддерживает DISTRIBUTED REPLICATED в качестве политики распределения. Если указана эта политика распределения, база данных распределяет все строки таблицы по всем экземплярам сегмента в системе ADB.
Important
В пользовательских запросах к реплицированным таблицам нельзя ссылаться на скрытые системные столбцы (ctid, cmin, cmax, xmin, xmax и gp_segment_id), поскольку они не имеют единую, однозначную величину. Для такого запроса ADB возвращает ошибку несуществующего столбца
Доработки параллельной обработки¶
Arenadata DB 6 включает следующие усовершенствования параллельной обработки:
- Global Deadlock Detector – предыдущие версии ADB препятствуют глобальной взаимоблокировке, удерживая исключительную блокировку таблиц для операций UPDATE и DELETE. Хотя эта стратегия действительно предотвращает deadlocks, это обеспечивается за счет низкой производительности при одновременных обновлениях. База данных Arenadata DB 6 включает в себя глобальный детектор взаимоблокировок – это внутренний процесс, который собирает и анализирует данные ожидания в кластере ADB. Если Global Deadlock Detector определяет, что deadlock существует, он ее прерывает, отменяя один или несколько внутренних процессов. По умолчанию детектор отключен, и для обновлений таблиц проводятся исключительные блокировки на уровне таблицы. А когда детектор включен, база данных ADB проводит исключительные блокировки на уровне строк, и в таком случае одновременные обновления допускаются;
- Transaction Lock Optimization – Arenadata DB 6 оптимизирует использование блокировки транзакций как при BEGIN, так и при COMMIT транзакции. Это особо выгодно при одновременных смешанных рабочих нагрузках;
- Upstream PostgreSQL Features – Arenadata DB 6 включает в себя основные функции PostgreSQL, в том числе fastpath lock, сокращающие конфликты блокировок. Это выгодно для одновременных коротких запросов и смешанных рабочих нагрузок;
- Команда VACUUM пропускает страницы, которые не может заблокировать. Это уменьшает частоту появления вакуума, который “застревает” в результате ожидания блокировки блока для очистки в то время, когда другая сессия удерживает блокировку этого блока. Теперь VACUUM пропускает блоки, который не может заблокировать сразу, и пытается повторить их блокировку позже;
- Команда VACUUM перепроверяет видимость блока после удаления “мертвых” кортежей. Если все оставшиеся кортежи в блоке видимы для текущих и будущих транзакций, блок помечается как полностью видимый;
- Таблицы, являющиеся частью иерархии партиционированных таблиц, но не содержащие данных, замораживаются, поэтому их не нужно очищать отдельно, и при этом они не влияют на вычисление количества оставшихся идентификаторов транзакций даже до того, как произойдет wraparound. Эти таблицы включают корневую и промежуточную таблицы в иерархии партиций и, если они являются append-optimized, связанные с ними таблицы метаданных. Это делает ненужной операцию vacuum для корневой партиции для сокращения ее возраста и устраняет вероятно излишнюю очистку всех дочерних таблиц.
Дополнительные модули Contrib¶
База данных Arenadata DB 6 разворачивается с дополнительными модулями PostgreSQL и GPDB:
- auto_explain;
- diskquota;
- fuzzystrmatch;
- gp_sparse_vector;
- pageinspect;
- sslinfo.
PXF версии 5.8.1¶
Arenadata DB 6 включает PXF 5.8.1, который вводит следующие новые и измененные функции:
- Коннектор PXF S3 теперь поддерживает доступ к данным CSV и Parquet на S3 с помощью сервиса Amazon S3 Select;
- PXF объединяет новые и обновленные библиотеки, чтобы обеспечить поддержку Java 11;
- В PXF добавлена поддержка типа timestamptz при записи данных Parquet во внешний источник данных;
- PXF теперь предоставляет команду сброса локального экземпляра PXF-сервера или всех экземпляров PXF-сервера в кластере в неинициализированное состояние;
- PXF больше не поддерживает уточнение DELIMITER в CREATE EXTERNAL TABLE команды LOCATION URI.
Дополнительные функции¶
Arenadata DB 6 также включает следующие функции, отличные от версии 5:
- Recursive WITH Queries (Common Table Expressions) больше не считаются бета-функцией и теперь включены по умолчанию;
- VACUUM обновлен для упрощения пропуска страниц, которые нельзя заблокировать. Это изменение должно значительно снизить частоту “застревания” операции VACUUM во время ожидания завершения других сессий;
- Appendoptimized alias для опции хранения appendonly-таблицы;
- Новые gp_toolkit-представления gp_resgroup_status_per_host и gp_resgroup_status_per_segment отображают CPU группы ресурсов и использование памяти для каждого хоста и/или сегмента;
- Новое представление gp_stat_replication содержит статистику репликации, когда включено зеркалирование мастера или сегмента. Представление pg_stat_replication содержит только статистику репликации мастера;
- Программы gpfdists и psql в пакете Client and Loader Tools для Windows поддерживают шифрование OpenSSL;
- Arenadata DB 6 включает некоторые улучшения производительности PostgreSQL 9.6.
- Утилита gpload совместима с базой данных ADB 5.х.