Коннектор Memory#
Коннектор Memory хранит все данные и метаданные в RAM на workers; и данные, и метаданные удаляются при перезапуске Trino.
Конфигурация#
Чтобы настроить коннектор Memory, создайте файл свойств каталога
etc/catalog/example.properties со следующим содержимым:
connector.name=memory
memory.max-data-per-node=128MB
memory.max-data-per-node задает ограничение памяти для страниц, хранимых этим
коннектором на каждом узле (значение по умолчанию — 128MB).
Примеры#
Создание таблицы с помощью коннектора Memory:
CREATE TABLE example.default.nation AS
SELECT * from tpch.tiny.nation;
Вставка данных в таблицу в коннекторе Memory:
INSERT INTO example.default.nation
SELECT * FROM tpch.tiny.nation;
Выборка из коннектора Memory:
SELECT * FROM example.default.nation;
Удаление таблицы:
DROP TABLE example.default.nation;
Создание таблицы со столбцом, у которого есть значение по умолчанию:
CREATE TABLE orders (
orderkey bigint,
status varchar DEFAULT 'created'
)
Сопоставление типов#
Trino поддерживает все типы данных, используемые в схемах Memory, поэтому сопоставление не требуется.
Поддержка SQL#
Коннектор предоставляет доступ на чтение и запись к временным данным и метаданным, хранящимся в памяти. Помимо глобально доступных операторов и операторов чтения, коннектор поддерживает следующие возможности:
TRUNCATE и DROP TABLE#
При выполнении операций TRUNCATE и DROP TABLE память освобождается не
сразу. Вместо этого она освобождается после следующей операции записи в
каталог.
Динамическая фильтрация#
Коннектор Memory поддерживает оптимизацию динамической фильтрации. Динамические фильтры проталкиваются в локальное сканирование таблиц на worker-узлах для broadcast joins.
Отложенное выполнение для динамических фильтров#
Для коннектора Memory сканирование таблицы откладывается до сбора динамических
фильтров. Это можно отключить с помощью свойства конфигурации
memory.enable-lazy-dynamic-filtering в файле каталога.
Ограничения#
Если worker завершится с ошибкой или перезапустится, все данные, хранившиеся в его памяти, будут потеряны. Чтобы предотвратить незаметную потерю данных, коннектор выдает ошибку при любом доступе на чтение к такой поврежденной таблице.
Если запрос завершится с ошибкой по любой причине во время записи в таблицу Memory, таблица перейдет в неопределенное состояние. Таблицу следует удалить и создать заново вручную. Попытки чтения из таблицы могут завершаться ошибкой или возвращать частичные данные.
Если координатор завершится с ошибкой или перезапустится, все метаданные о таблицах будут потеряны. Таблицы останутся на workers, но станут недоступными.