Движок таблиц MySQL
Движок MySQL позволяет выполнять SELECT и INSERT запросы к данным, хранящимся на удалённом сервере MySQL.
Создание таблицы
Смотрите подробное описание запроса CREATE TABLE.
Структура таблицы может отличаться от оригинальной структуры таблицы MySQL:
- Имена колонок должны совпадать с именами в оригинальной таблице MySQL, но вы можете использовать только некоторые из этих колонок и в любом порядке.
- Типы колонок могут отличаться от тех, что в оригинальной таблице MySQL. ClickHouse пытается привести значения к типам данных ClickHouse.
- Параметр external_table_functions_use_nulls определяет, как обрабатывать Nullable колонки. Значение по умолчанию: 1. Если 0, функция таблицы не делает Nullable колонки и вставляет значения по умолчанию вместо null. Это также относится к NULL-значениям внутри массивов.
Движок таблиц MySQL в данный момент недоступен в сборках ClickHouse для MacOS (issue)
Параметры двигателя
host:port— адрес сервера MySQL.database— имя удалённой базы данных.table— имя удалённой таблицы.user— пользователь MySQL.password— пароль пользователя.replace_query— флаг, который преобразует запросыINSERT INTOвREPLACE INTO. Еслиreplace_query=1, запрос будет заменён.on_duplicate_clause— выражениеON DUPLICATE KEY on_duplicate_clause, которое добавляется к запросуINSERT. Пример:INSERT INTO t (c1,c2) VALUES ('a', 2) ON DUPLICATE KEY UPDATE c2 = c2 + 1, гдеon_duplicate_clauseэтоUPDATE c2 = c2 + 1. Смотрите документацию MySQL, чтобы узнать, какоеon_duplicate_clauseвы можете использовать с клаузойON DUPLICATE KEY. Чтобы указатьon_duplicate_clause, вам нужно передать0в параметрreplace_query. Если одновременно передатьreplace_query = 1иon_duplicate_clause, ClickHouse выдаст исключение.
Также аргументы могут быть переданы с использованием именованных коллекций. В этом случае host и port должны быть указаны отдельно. Этот подход рекомендуется для производственной среды.
Простые условия WHERE, такие как =, !=, >, >=, <, <=, выполняются на сервере MySQL.
Остальные условия и ограничение LIMIT выполняются в ClickHouse только после завершения запроса к MySQL.
Поддерживает несколько реплик, которые должны быть перечислены через |. Например:
Пример использования
Создайте таблицу в MySQL:
Создайте таблицу в ClickHouse, используя простые аргументы:
Или используя именованные коллекции:
Получение данных из таблицы MySQL:
Настройки
Настройки по умолчанию не очень эффективны, поскольку они даже не повторно используют соединения. Эти настройки позволяют увеличить количество запросов, выполняемых сервером в секунду.
connection_auto_close
Позволяет автоматически закрывать соединение после выполнения запроса, т.е. отключает повторное использование соединений.
Возможные значения:
- 1 — Автозакрытие соединения разрешено, повторное использование соединения отключено.
- 0 — Автозакрытие соединения не разрешено, повторное использование соединения включено.
Значение по умолчанию: 1.
connection_max_tries
Устанавливает количество попыток для пула с резервированием.
Возможные значения:
- Положительное целое число.
- 0 — Нет попыток для пула с резервированием.
Значение по умолчанию: 3.
connection_pool_size
Размер пула соединений (если все соединения заняты, запрос будет ждать, пока какое-то соединение не освободится).
Возможные значения:
- Положительное целое число.
Значение по умолчанию: 16.
connection_wait_timeout
Тайм-аут (в секундах) для ожидания свободного соединения (в случае, если уже есть активные соединения, равные connection_pool_size), 0 - не ждать.
Возможные значения:
- Положительное целое число.
Значение по умолчанию: 5.
connect_timeout
Тайм-аут соединения (в секундах).
Возможные значения:
- Положительное целое число.
Значение по умолчанию: 10.
read_write_timeout
Тайм-аут чтения/записи (в секундах).
Возможные значения:
- Положительное целое число.
Значение по умолчанию: 300.