Перейти к основному содержимому
Перейти к основному содержимому

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

Также смотрите