MySQL
Движок MySQL позволяет выполнять запросы SELECT
и INSERT
над данными, хранящимися на удалённом MySQL сервере.
Создание таблицы
Смотрите подробное описание запроса CREATE TABLE.
Структура таблицы может отличаться от структуры исходной таблицы MySQL:
- Имена столбцов должны быть такими же, как в исходной таблице MySQL, но можно использовать только некоторые из этих столбцов и в любом порядке.
- Типы столбцов могут отличаться от типов в исходной таблице MySQL. ClickHouse пытается привести значения к типам данных ClickHouse.
- Настройка external_table_functions_use_nulls определяет как обрабатывать Nullable столбцы. Значение по умолчанию: 1. Если значение 0, то табличная функция не делает Nullable столбцы, а вместо NULL выставляет значения по умолчанию для скалярного типа. Это также применимо для значений NULL внутри массивов.
Параметры движка
-
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
. Чтобы узнать какиеon_duplicate_clause
можно использовать с секциейON DUPLICATE KEY
обратитесь к документации MySQL.Чтобы указать
on_duplicate_clause
необходимо передать0
в параметрreplace_query
. Если одновременно передатьreplace_query = 1
иon_duplicate_clause
, то ClickHouse сгенерирует исключение.
Простые условия 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
.