Движок таблиц 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
.