Обзор таблиц
Таблица — это основной объект для хранения информации в базе данных. Таблицы Greengage DB идентичны таблицам в любой реляционной СУБД, за исключением распределения строк по различным сегментам кластера для параллельной обработки и масштабируемости. Подробнее о базовых концепциях работы с таблицами вы можете узнать в соответствующем разделе документации PostgreSQL: Table Basics.
Обзор создания таблиц
Описание таблицы
Команда CREATE TABLE
создает таблицу и определяет ее структуру.
При создании таблицы необходимо указать:
-
Типы данных столбцов
Типы данных определяют, какие значения могут храниться в столбцах.
-
Ограничения таблиц и столбцов
Ограничения позволяют задать дополнительные требования к значениям в таблице или ее столбцах.
-
Тип хранения таблицы
СУБД Greengage поддерживает несколько моделей хранения таблиц, оптимизированных для определенных типов нагрузок, таких как OLTP или OLAP. Узнайте подробнее в статье Типы таблиц.
-
Политика распределения данных
Распределение данных в Greengage DB обеспечивает параллельную обработку за счет размещения данных таблицы на различных сегментах кластера. Узнайте подробнее в статье Распределение данных.
-
Сжатие данных
Сжатие данных позволяет уменьшить их объем и повысить эффективность операций ввода-вывода. Узнайте подробнее в статье Сжатие данных.
-
Стратегия партиционирования таблиц
Партиционирование дает возможность разбить большую таблицу на небольшие части, что повышает производительность запросов и позволяет оптимизировать хранение исторических данных, размещая их в более медленном хранилище. Узнайте подробнее в статье Партиционирование.
Команда CREATE TABLE AS
позволяет создать новую таблицу на основе результатов запроса.
Синтаксис CREATE TABLE
Чтобы создать пустую таблицу в текущей базе данных и определить структуру таблицы, используйте команду CREATE TABLE
.
Пользователь, выполняющий эту команду, становится владельцем таблицы.
Ниже описан упрощенный синтаксис команды CREATE TABLE
.
CREATE [ TEMP ] TABLE <table_name>
(
[ { <column_name> <data_type> [<column_constraint> [ ... ] ]
| <table_constraint>
| LIKE <source_table> [ <like_option> ... ] }
[, ... ]
]
)
[ INHERITS ( <parent_table> [, ... ] ) ]
[ WITH ( <storage_table_directive> [, ... ] ) ]
[ DISTRIBUTED BY (<column_name> [<opclass>], [ ... ] )
| DISTRIBUTED RANDOMLY | DISTRIBUTED REPLICATED ]
[ PARTITION BY <partition_type> (<column_name>) <partition_specification>]
Аргументы
Основные аргументы для определения таблицы, ее столбцов и ограничений следующие:
-
table_name
Имя таблицы. По умолчанию, команда
CREATE TABLE
создает таблицу в предопределенной схемеpublic
. Чтобы использовать другую схему, укажите ее имя в аргументеtable_name
или измените путь поиска схемы по умолчанию, как описано в статье Схемы. -
column_name
иdata_type
Имя столбца и его тип данных, соответственно. Смотрите рекомендации по выбору типов данных в разделе Типы данных столбцов ниже.
-
column_constraint
Ограничение, определенное для указанного столбца. Смотрите раздел Установка ограничений ниже.
-
table_constraint
Ограничение, определенное на уровне таблицы. Смотрите раздел Установка ограничений ниже.
Выражения
Ниже приведены описания выражений, упомянутых в приведенном выше фрагменте синтаксиса CREATE TABLE
:
-
TEMP
Создает временную таблицу, которая существует только во время сессии или до окончания текущей транзакции. Затем таблица удаляется автоматически.
-
LIKE
Создает новую таблицу, копируя настройки столбцов из существующей таблицы, включая имена столбцов, типы данных и ограничения
NOT NULL
. -
INHERITS
Создает новую таблицу, которая наследует столбцы и ограничения родительских таблиц. Все изменения, применяемые к структуре родительской таблицы, также распространяются на дочернюю.
-
WITH
Устанавливает параметры хранения для таблицы, такие как
appendoptimized
иorientation
.ПРИМЕЧАНИЕПараметр конфигурации сервера
gp_default_storage_options
позволяет задавать значения по умолчанию для параметров хранения таблиц, включаяappendoptimized
иorientation
. -
DISTRIBUTED
Устанавливает политику распределения, которая определяет, как данные таблицы распределяются по сегментам в кластере Greengage DB.
-
PARTITION BY
Определяет стратегию партиционирования для таблицы.
Типы данных столбцов
Есть несколько рекомендаций по выбору типов данных для столбцов:
-
Выбирайте тип данных в соответствии с хранимой в столбце информацией.
Например, используйте числовые типы для чисел, символьные типы — для текста, а типы
date
илиtimestamp
— для дат и времени. -
Используйте тип данных с наименьшим размером.
Например, используйте
INT
вместоBIGINT
илиTEXT
вместоCHAR(<n>)
. -
Учитывайте возможный рост данных при выборе небольших числовых типов.
Например,
SMALLINT
может быть достаточным на данный момент, но переход наINT
в будущем потребует значительных ресурсов, если в таблице накопилось много данных. Если значения могут со временем увеличиться, лучше сразу выбрать тип с большим диапазоном. -
Если возможно, используйте специализированные типы данных.
Применяйте такие типы, как
INET
,CIDR
,JSON
,JSONB
илиMACADDR
для улучшения производительности, валидации и наглядности при работе с IP-адресами, JSON-данными и т.д. -
Используйте одинаковые типы данных для столбцов, участвующих в соединениях (JOIN).
Если типы данных различаются, перед сравнением их необходимо преобразовывать, что может замедлить выполнение запросов.
-
Используйте собственные типы данных, когда это необходимо.
В частности, тип
ENUM
подходит, если столбец должен содержать только ограниченный набор значений (например,low
,medium
иhigh
). Значения типаENUM
хранятся более эффективно и обрабатываются быстрее, чем эквивалентные значения типаTEXT
.
Создание таблиц
Создание новой таблицы
SQL-запрос ниже создает новую таблицу customers
со следующими параметрами:
-
Выражение
WITH
используется для создания оптимизированной для добавления (Append-Optimized, AO) таблицы со строковым (row-oriented) хранением данных. -
Выражение
DISTRIBUTED BY
указывает, что столбецcustomer_id
используется в качестве ключа распределения строк таблицы по сегментам.
CREATE TABLE customers
(
customer_id INTEGER,
name TEXT,
email TEXT,
customer_type TEXT
)
WITH (appendoptimized = true, orientation = row)
DISTRIBUTED BY (customer_id);
INSERT INTO customers (customer_id, name, email, customer_type)
VALUES (1, 'Andrew Fuller', 'andrew@example.com', 'Regular'),
(2, 'Michael Suyama', 'michael@testmail.com', 'Premium'),
(3, 'Laura Callahan', 'laura@example.io', 'Regular'),
(4, 'Nancy Davolio', 'nancy@samplemail.com', 'Premium'),
(5, 'Steven Buchanan', 'steven@fastmail.net', 'Regular'),
(6, 'Margaret Peacock', 'margaret@example.com', 'Regular');
При необходимости вы можете добавить комментарий к созданной таблице с помощью команды COMMENT
:
COMMENT ON TABLE customers IS 'Customer information';
Создание таблицы с использованием выражения LIKE
Команда ниже использует выражение LIKE
для создания новой таблицы stg_customers
с такими же именами столбцов и типами данных, как у таблицы customers
:
CREATE TABLE stg_customers
(
LIKE customers
)
WITH (appendoptimized = true, orientation = row)
DISTRIBUTED BY (customer_id);
Обратите внимание, что параметры хранения не копируются в новую таблицу и должны быть определены явно с помощью выражения WITH
.
Создание таблицы с использованием выражения INHERITS
Чтобы создать таблицу, которая наследует все столбцы и ограничения существующей таблицы, используйте выражение INHERITS
.
В приведенном ниже примере новая таблица business_customers
наследует таблицу customers
и добавляет дополнительный столбец company
:
CREATE TABLE business_customers
(
company TEXT
)
INHERITS (customers)
WITH (appendoptimized = true, orientation = row)
DISTRIBUTED BY (customer_id);
INSERT INTO business_customers (customer_id, name, email, customer_type, company)
VALUES (7, 'Robert King', 'robert@demo.org', 'Business', 'King Enterprises'),
(8, 'Janet Leverling', 'janet@businessmail.com', 'Business', 'Leverling Ltd');
Создание временной таблицы
Команда ниже создает временную таблицу из результатов SQL-запроса SELECT
с помощью CREATE TABLE AS
:
CREATE TEMP TABLE temp_premium_customers AS
SELECT customer_id, name, email
FROM customers
WHERE customer_type = 'Premium'
DISTRIBUTED BY (customer_id);
Чтобы проверить, что таблица temp_premium_customers
создана, используйте метакоманду \dt
:
List of relations Schema | Name | Type | Owner | Storage ------------+------------------------+-------+---------+------------- pg_temp_17 | temp_premium_customers | table | gpadmin | heap public | business_customers | table | gpadmin | append only public | customers | table | gpadmin | append only public | stg_customers | table | gpadmin | append only
Переподключитесь к базе данных, используя метакоманду \c
:
\c marketplace
Временная таблица автоматически удаляется, когда сессия завершается.
Чтобы проверить это, выполните \dt
еще раз для отображения списка таблиц.
Вывод должен подтвердить, что таблица temp_premium_customers
больше не существует:
List of relations Schema | Name | Type | Owner | Storage --------+--------------------+-------+---------+------------- public | business_customers | table | gpadmin | append only public | customers | table | gpadmin | append only public | stg_customers | table | gpadmin | append only
Чтобы узнать больше о том, как просматривать информацию о таблицах, смотрите раздел Просмотр информации о таблицах ниже.
Установка ограничений
Ограничения уникальности
Следующий SQL-запрос создает таблицу orders
с ограничением уникальности для столбца order_id
с помощью выражения UNIQUE
:
CREATE TABLE orders
(
order_id INTEGER UNIQUE,
customer_id INTEGER,
product_id INTEGER,
price NUMERIC(6, 2)
)
DISTRIBUTED BY (order_id);
Каждое значение в столбце order_id
должно быть уникальным — повторяющиеся значения не допускаются.
Например, следующий запрос INSERT
нарушает указанное ограничение уникальности:
INSERT INTO orders (order_id, customer_id, product_id, price)
VALUES (1, 1, 11, 99.9),
(1, 2, 35, 25.5);
В этом случае должна возникнуть следующая ошибка:
duplicate key value violates unique constraint "orders_order_id_key"
Обратите внимание на следующее при использовании ограничения уникальности, а также ограничения первичного ключа:
-
При задании ограничения уникальности неявно создается уникальный индекс.
-
Ограничение уникальности должно включать все столбцы ключа распределения, а также столбцы ключа партиционирования (если он задан).
-
Ограничения уникальности не поддерживаются для оптимизированных для добавления (Append-Optimized, AO) таблиц.
Ограничения NOT NULL
Команда ниже создает таблицу orders
с ограничением NOT NULL
для столбца order_id
:
CREATE TABLE orders
(
order_id INTEGER NOT NULL,
customer_id INTEGER,
product_id INTEGER,
price NUMERIC(6, 2)
)
DISTRIBUTED BY (order_id);
Столбец order_id
не должен содержать значение NULL
.
Например, следующий запрос INSERT
нарушает заданное ограничение:
INSERT INTO orders (order_id, customer_id, product_id, price)
VALUES (1, 1, 11, 99.9),
(NULL, 2, 35, 25.5);
Должна возникнуть следующая ошибка:
null value in column "order_id" violates not-null constraint
Первичные ключи
Ограничение первичного ключа представляет собой сочетание ограничений уникальности и NOT NULL
.
Указание первичного ключа накладывает ограничения на то, как может быть определена политика распределения таблицы:
-
Таблица должна использовать хеш-распределение.
-
Столбцы первичного ключа должны совпадать со столбцами ключа распределения таблицы.
Если у таблицы задан первичный ключ, соответствующий столбец по умолчанию используется в качестве ключа распределения.
Команда ниже создает таблицу orders
с ограничением первичного ключа для столбца order_id
:
CREATE TABLE orders
(
order_id INTEGER PRIMARY KEY,
customer_id INTEGER,
product_id INTEGER,
price NUMERIC(6, 2)
)
DISTRIBUTED BY (order_id);
Например, следующий запрос INSERT
нарушает указанное ограничение:
INSERT INTO orders (order_id, customer_id, product_id, price)
VALUES (1, 1, 11, 99.9),
(1, 2, 35, 25.5);
Должна возникнуть следующая ошибка:
duplicate key value violates unique constraint "orders_pkey"
Ограничения-проверки
Ограничение-проверка позволяет указать, что значения в одном или нескольких столбцах должны удовлетворять логическому выражению (проверке истинности).
Ограничения столбцов
В приведенном ниже примере цена товара ограничена положительными значениями:
CREATE TABLE orders
(
order_id INTEGER,
customer_id INTEGER,
product_id INTEGER,
price NUMERIC(6, 2) CHECK (price >= 0)
)
WITH (appendoptimized = true, orientation = row)
DISTRIBUTED BY (order_id);
Например, следующий запрос INSERT
нарушает указанное ограничение:
INSERT INTO orders (order_id, customer_id, product_id, price)
VALUES (1, 1, 11, -10);
Должна быть вызвана следующая ошибка:
new row for relation "orders" violates check constraint "orders_price_check"
Ограничения таблицы
В примере ниже установлено ограничение-проверка на уровне таблицы для столбцов price
и count
:
CREATE TABLE orders
(
order_id INTEGER,
customer_id INTEGER,
product_id INTEGER,
price NUMERIC(6, 2),
count INTEGER,
CHECK (price > 0 AND count >= 1)
)
WITH (appendoptimized = true, orientation = row)
DISTRIBUTED BY (order_id);
Следующий запрос INSERT
нарушает указанное ограничение:
INSERT INTO orders (order_id, customer_id, product_id, price, count)
VALUES (1, 1, 11, -25.5, 0);
Этот запрос должен вызвать следующую ошибку:
new row for relation "orders" violates check constraint "orders_check"
Внешние ключи
Ограничения внешнего ключа не поддерживаются. Вы можете их объявить, но контроль ссылочной целостности между сегментами распределенной таблицы невозможен.
В этом примере создается таблица products
и таблица orders
с внешним ключом, ссылающимся на products
:
CREATE TABLE products
(
product_id INTEGER PRIMARY KEY,
name TEXT
)
DISTRIBUTED REPLICATED;
CREATE TABLE orders
(
order_id INTEGER,
product_id INTEGER REFERENCES products (product_id),
price NUMERIC(6, 2)
)
WITH (appendoptimized = true, orientation = row)
DISTRIBUTED BY (order_id);
При создании таблицы orders
должно отображаться следующее предупреждение:
referential integrity (FOREIGN KEY) constraints are not supported in Greengage Database, will not be enforced
Эти запросы вставляют допустимые строки в таблицу products
и строку с несуществующим product_id
в таблицу orders
:
INSERT INTO products (product_id, name)
VALUES (1, 'Chai'),
(2, 'Chang');
INSERT INTO orders (order_id, product_id, price)
VALUES (1, 3, 19.99);
При вставке данных не должно возникнуть ошибок или предупреждений.
Изменение таблиц
Чтобы изменить таблицу, используйте команду ALTER TABLE
.
SQL-запрос ниже добавляет новый столбец signup_date
в таблицу customers
:
ALTER TABLE customers
ADD COLUMN signup_date DATE;
Вы можете использовать метакоманду \d customers
, чтобы проверить, что столбец добавлен:
Column | Type | Modifiers ---------------+---------+----------- customer_id | integer | name | text | email | text | customer_type | text | signup_date | date |
Обратите внимание, что таблицы, созданные с использованием выражения INHERITS
, наследуют все столбцы родительских таблиц.
Например, при выполнении команды \d business_customers
видно, что таблица содержит столбец signup_date
, унаследованный от родительской таблицы customers
:
Column | Type | Modifiers ---------------+---------+----------- customer_id | integer | name | text | email | text | customer_type | text | company | text | signup_date | date |
Некоторые команды ALTER TABLE
, включая ADD COLUMN
, требуют полной перезаписи таблицы и устанавливают на нее блокировку.
Это блокирует доступ к таблице, включая операции чтения, до завершения выполнения команды.
Для больших таблиц такие команды лучше выполнять во время планового обслуживания, чтобы избежать перерыва в сервисе.
Для очень больших таблиц, которые требуют перезаписи, эффективнее создать копию таблицы, вставить в нее данные, а затем переименовать ее. Это позволяет избежать блокировки исходной таблицы и внести изменения без прерывания доступа к ней.
Просмотр информации о таблицах
Просмотр списка таблиц
Метакоманды psql
-
Чтобы вывести список таблиц, используйте метакоманду
\dt
:\dt
Вывод включает различную информацию, включая схему, к которой принадлежит каждая таблица, имя таблицы, ее тип, владельца и модель хранения:
List of relations Schema | Name | Type | Owner | Storage --------+--------------------+-------+---------+------------- public | business_customers | table | gpadmin | append only public | customers | table | gpadmin | append only public | stg_customers | table | gpadmin | append only
-
Метакоманда
\dt+
возвращает дополнительные поля:\dt+
Вывод включает размер и описание таблицы:
List of relations Schema | Name | Type | Owner | Storage | Size | Description --------+--------------------+-------+---------+-------------+--------+---------------------- public | business_customers | table | gpadmin | append only | 448 kB | public | customers | table | gpadmin | append only | 449 kB | Customer information public | stg_customers | table | gpadmin | append only | 320 kB |
-
Чтобы отобразить системные таблицы, используйте метакоманду
\dtS
:\dtS
Вывод должен включать таблицы из схемы системного каталога
pg_catalog
:List of relations Schema | Name | Type | Owner | Storage ------------+--------------------------+-------+---------+------------- pg_catalog | gp_configuration_history | table | gpadmin | heap pg_catalog | gp_distribution_policy | table | gpadmin | heap pg_catalog | gp_fastsequence | table | gpadmin | heap pg_catalog | gp_id | table | gpadmin | heap pg_catalog | gp_segment_configuration | table | gpadmin | heap pg_catalog | gp_version_at_initdb | table | gpadmin | heap pg_catalog | pg_aggregate | table | gpadmin | heap pg_catalog | pg_am | table | gpadmin | heap pg_catalog | pg_amop | table | gpadmin | heap pg_catalog | pg_amproc | table | gpadmin | heap ...
-
Для поиска таблиц в конкретной схеме можно использовать регулярные выражения. Например, следующая команда возвращает все таблицы в схеме
information_schema
:\dt information_schema.*
Результат должен выглядеть следующим образом:
List of relations Schema | Name | Type | Owner | Storage --------------------+-------------------------+-------+---------+--------- information_schema | sql_features | table | gpadmin | heap information_schema | sql_implementation_info | table | gpadmin | heap information_schema | sql_languages | table | gpadmin | heap information_schema | sql_packages | table | gpadmin | heap information_schema | sql_parts | table | gpadmin | heap information_schema | sql_sizing | table | gpadmin | heap information_schema | sql_sizing_profiles | table | gpadmin | heap
-
Чтобы отобразить привилегии доступа к объектам базы данных, включая таблицы, используйте метакоманду
\dp
:\dp
Результат должен выглядеть так:
Access privileges Schema | Name | Type | Access privileges | Column access privileges --------+--------------------+-------+-------------------+-------------------------- public | business_customers | table | | public | customers | table | | public | stg_customers | table | |
Столбец
Access privileges
для новых таблиц пуст, что означает, что привилегии не настроены. Смотрите раздел Роли и привилегии, чтобы узнать, как предоставить пользователям доступ к этим таблицам.
SQL-команды
-
Выполните SQL-запрос к системному представлению
pg_catalog.pg_tables
:SELECT * FROM pg_catalog.pg_tables WHERE schemaname = 'public' ORDER BY schemaname, tablename;
Вывод содержит информацию о таблицах, включая их схему, имя, владельца, а также связанные характеристики: наличие индексов, правил и триггеров:
schemaname | tablename | tableowner | tablespace | hasindexes | hasrules | hastriggers ------------+--------------------+------------+------------+------------+----------+------------- public | business_customers | gpadmin | | f | f | f public | customers | gpadmin | | f | f | f public | stg_customers | gpadmin | | f | f | f
-
Выполните SQL-запрос к таблице
information_schema.tables
. Используйтеtable_type = 'BASE TABLE'
в выраженииWHERE
, чтобы вывести только таблицы:SELECT table_catalog, table_schema, table_name, table_type FROM information_schema.tables WHERE table_type = 'BASE TABLE' AND table_schema = 'public' ORDER BY table_schema, table_name;
Результат выглядит следующим образом:
table_catalog | table_schema | table_name | table_type ---------------+--------------+--------------------+------------ marketplace | public | business_customers | BASE TABLE marketplace | public | customers | BASE TABLE marketplace | public | stg_customers | BASE TABLE
Просмотр информации о таблице
-
Для просмотра структуры указанной таблицы используйте метакоманду
\d
:\d customers
Вывод содержит информацию о столбцах таблицы, типах данных и других настройках таблицы:
Append-Only Table "public.customers" Column | Type | Modifiers ---------------+---------+----------- customer_id | integer | name | text | email | text | customer_type | text | signup_date | date | Compression Type: None Compression Level: 0 Block Size: 32768 Checksum: t Number of child tables: 1 (Use \d+ to list them.) Distributed by: (customer_id)
-
Метакоманда
\d+
возвращает дополнительную информацию:\d+ customers
Вывод может включать параметры хранения столбцов, такие как тип и уровень сжатия, дочерние таблицы, созданные с использованием выражения
INHERITS
, и так далее:Append-Only Table "public.customers" Column | Type | Modifiers | Storage | Stats target | Description ---------------+---------+-----------+----------+--------------+------------- customer_id | integer | | plain | | name | text | | extended | | email | text | | extended | | customer_type | text | | extended | | signup_date | date | | plain | | Compression Type: None Compression Level: 0 Block Size: 32768 Checksum: t Child tables: business_customers Distributed by: (customer_id) Options: appendonly=true, orientation=row
Полезные SQL-запросы
-
Следующий SQL-запрос возвращает число отношений (relation) базы данных, сгруппированных по их типу:
SELECT relkind, COUNT(*) FROM pg_catalog.pg_class GROUP BY(relkind) ORDER BY COUNT(*);
Результат выглядит следующим образом:
relkind | count ---------+------- o | 3 M | 3 c | 4 t | 25 r | 88 i | 166 v | 166
Например,
r
— это heap-таблица или таблица, оптимизированная для добавления (Append-Optimized, AO),i
— индекс,v
— представление. -
Команда ниже позволяет получить информацию об отношении (relation) по его имени:
SELECT relation.oid, relation.relname, schema.nspname, tablespace.spcname, relation.relstorage, relation.relpersistence, relation.relkind, relation.relpages, relation.reltuples FROM pg_catalog.pg_class relation LEFT JOIN pg_catalog.pg_namespace schema ON schema.oid = relation.relnamespace LEFT JOIN pg_catalog.pg_tablespace tablespace ON tablespace.oid = relation.reltablespace WHERE relation.relname = 'customers';
Результат выглядит следующим образом:
oid | relname | nspname | spcname | relstorage | relpersistence | relkind | relpages | reltuples --------+-----------+---------+---------+------------+----------------+---------+----------+----------- 147889 | customers | public | | a | p | r | 1 | 6
-
Команда ниже отображает список TOAST-таблиц вместе с основными таблицами, с которыми они связаны:
SELECT toast_table.oid AS "TOAST OID", toast_table.relname AS "TOAST name", main_table.oid AS "Main OID", main_table.relname AS "Main name" FROM pg_catalog.pg_class toast_table LEFT JOIN pg_catalog.pg_class main_table ON toast_table.oid = main_table.reltoastrelid WHERE main_table.relname LIKE '%customers%' ORDER BY main_table.relname;
Вывод должен выглядеть так:
TOAST OID | TOAST name | Main OID | Main name -----------+-----------------+----------+-------------------- 147988 | pg_toast_147909 | 147909 | business_customers 147978 | pg_toast_147889 | 147889 | customers 147901 | pg_toast_147899 | 147899 | stg_customers
Удаление таблиц
Чтобы удалить таблицу, используйте команду DROP TABLE
:
DROP TABLE stg_customers;
Чтобы удалить таблицу и связанные с ней объекты, такие как представления или унаследованные таблицы, используйте параметр CASCADE
:
DROP TABLE customers CASCADE;
Таблицы системного каталога
Greengage DB предоставляет набор предопределенных системных каталогов в схеме pg_catalog
.
Некоторые из этих таблиц могут быть полезны для мониторинга кластера и других задач администратора базы данных.
Примеры таких таблиц:
-
gp_segment_configuration
— содержит информацию о конфигурации кластера: статусе мастеров, сегментов и их зеркал. -
gp_distribution_policy
— включает информацию о таблицах и политике распределения данных по сегментам. -
gp_configuration_history
— содержит информацию об изменениях в системе, связанных с обнаружением сбоев и восстановлением после них.