Начало работы
Подключение
Тесты производительности
Развёртывание
Использование данных
Загрузка данных
Миграция данных
Запрос данных
Управление кластерами
Обновление
Глобальное обслуживание
Масштабирование
Мониторинг
Безопасность
Лучшие практики
Технические принципы
Типы данных
Хранилище
Исполняющий движок
Потоковая обработка (Domino)
MARS3 Индексы
Расширения
Расширенные функции
Расширенный запрос
Федеративные запросы
Grafana
Резервное копирование и восстановление
Аварийное восстановление
Графовая база данных
Введение
Предложения
Функции
Расширенные темы
Руководство
Настройка производительности
Устранение неполадок
Инструменты
Параметры конфигурации
SQL-команда
Часто задаваемые вопросы
В этом документе описаны рекомендации по созданию таблиц в YMatrix.
| Правило | Обязательно |
|---|---|
Имена баз данных, таблиц, столбцов, функций, представлений, последовательностей и псевдонимов должны содержать только строчные буквы, подчёркивания и цифры. Имя должно начинаться с буквы, не должно начинаться с pg, а также не может превышать 63 символов в длину |
Да |
Имена столбцов не должны использовать зарезервированные или SQL-ключевые слова, такие как oid, xmin, ctid, select, insert, update |
Да |
Имена индексов первичного ключа должны соответствовать шаблону pk_column_name; имена уникальных индексов — шаблону uk_column_name; обычные индексы — шаблону idx_column_name |
Да |
Для секционированных таблиц следует использовать имя родительской таблицы в качестве префикса и правило секционирования — в качестве суффикса. Например: родительская таблица order, дочерние таблицы order_p_202010, order_p_202009 |
Да |
Если поле представляет собой is_xxx, рекомендуется использовать формат имени is_xxx и тип BOOLEAN, например: is_deleted |
Нет |
| Рекомендуется, чтобы имена баз данных совпадали с именами сервисов приложения | Нет |
Имена таблиц должны быть понятными и самодостаточными. Избегайте двусмысленных сокращений и чрезмерно длинных имён. Следуйте шаблону Business Name_Table Function. Представлениям следует давать префикс, временным таблицам — использовать префикс tmp. Рекомендуется: trade_config, payment_task. Не рекомендуется: tradeconfig, paymenttask |
Нет |
| Тип хранилища | Подходит для |
|---|---|
| Ориентированное на строки | Частые обновления или вставки Запросы, обращающиеся к нескольким столбцам таблицы одновременно |
| Ориентированное на столбцы | Таблицы с большим количеством столбцов, но запросы затрагивают лишь несколько из них Операции агрегации по небольшому числу столбцов Частые обновления отдельных столбцов без изменения остальных Рекомендуется для большинства OLAP- и временных рядов |
YMatrix предоставляет четыре движка хранения: HEAP, AO и MARS3. Выбирайте подходящий движок в зависимости от объёма данных и требований к производительности записи.
| Движок хранения | Поддерживает | Подходит для | Уникальные особенности |
|---|---|---|---|
| HEAP | Хранение строк | Таблицы, требующие частых обновлений Таблицы, использующие хранение строк |
|
| AO | Хранение строк или столбцов | Таблицы и секционированные таблицы с редкими обновлениями после начальной загрузки, где данные вставляются пакетами | Интеграция с векторизованным исполняющим движком |
| MARS3 | Гибридное (строка-столбец) или столбцовое хранение | Сценарии временных рядов OLTP-сценарии с высокочастотной малопакетной записью OLAP-сценарии с низкочастотной крупнопакетной записью |
Интеграция с векторизованным исполняющим движком Сжатие цепочкой кодирования Автоматическое многоуровневое хранение |
Примечание!
Дополнительную информацию о движках хранения см. в разделе Обзор движков хранения.
Выбор точных типов данных помогает уменьшить занимаемое место, использование памяти и повысить эффективность запросов. Учитывайте следующее:
int2 вместо int4 или int8 для столбца возраста.int, float), при условии соответствия бизнес-требованиям.YMatrix распределяет данные по сегментам для использования параллельной обработки. При выборе ключа распределения учитывайте следующее:
SELECT gp_segment_id,count(*) FROM table_name GROUP BY gp_segment_id;.count(distinct column_name), тем лучше подходит столбец в качестве ключа распределения.WHERE, в качестве ключей распределения; рассмотрите возможность их использования в качестве ключей секционирования.YMatrix — распределённая база данных. Создавайте секции на основе объёма данных. Основные моменты:
Особые замечания по обслуживанию секций таблиц MARS3:
ALTER требуют блокировки всей таблицы и могут блокировать параллельные запросы.Особые замечания по обслуживанию секций таблиц HEAP/AOCO:
Примечание!
Вышеуказанные рекомендации по размеру секций применимы к YMatrix 6.X.
Для таблиц MARS3 настройте параметр compress_threshold на уровне таблицы. Увеличение этого значения снижает частоту операций ввода-вывода, но может снизить эффективность фильтрации на уровне блоков.
Сжатие, как правило, рекомендуется, особенно для таблиц с ориентацией на столбцы. Оно позволяет использовать простаивающие ресурсы ЦП для снижения времени ввода-вывода, уменьшая нагрузку на I/O и повышая производительность запросов.
Если используется движок хранения MARS3:
HEAP не поддерживает явное сжатие.
Индексы ускоряют выполнение запросов и хранятся отдельно. Этот раздел описывает особенности индексации.
Для таблиц HEAP и AO поддерживаются методы индексов B-tree, BRIN, Bitmap и Hash. Специализированные индексы для текстовых, пространственных и других типов данных включают GIN, GiST, ODIN, SP-GiST и TOAST.
MARS3 в настоящее время поддерживает только индексы BRIN. Вы можете дополнительно создать один или несколько индексов mars3_brin для повышения производительности запросов.
DISTRIBUTED REPLICATED для определения реплицированных таблиц.Таблицы только на мастер-узле хранят данные исключительно на мастер-узле (MXMaster), не распределяя их по вычислительным узлам (MXSegments).
DISTRIBUTED MASTERONLY. Подробности см. в разделе CREATE TABLE.mxstart -am для запуска базы данных в режиме только мастер-узла.