Skip to main content
O mecanismo MySQL permite executar consultas SELECT e INSERT em dados armazenados em um servidor MySQL remoto.

Criando uma tabela

Veja uma descrição detalhada da consulta CREATE TABLE. A estrutura da tabela pode ser diferente da estrutura da tabela MySQL original:
  • Os nomes das colunas devem ser os mesmos da tabela MySQL original, mas você pode usar apenas algumas delas e em qualquer ordem.
  • Os tipos das colunas podem ser diferentes dos da tabela MySQL original. O ClickHouse tenta converter os valores para os tipos de dados do ClickHouse.
  • A configuração external_table_functions_use_nulls define como lidar com colunas Nullable. Valor padrão: 1. Se for 0, a função de tabela não cria colunas Nullable e insere valores padrão em vez de nulos. Isso também se aplica a valores NULL dentro de arrays.
Parâmetros do mecanismo
  • host:port — Endereço do servidor MySQL.
  • database — nome do banco de dados remoto.
  • table — Nome da tabela remota ou uma consulta passada ao MySQL como está (consulte Passando uma consulta em vez de um nome de tabela).
  • user — usuário MySQL.
  • password — Senha do usuário.
  • replace_query — Sinalizador que converte consultas INSERT INTO em REPLACE INTO. Se replace_query=1, a consulta é substituída.
  • on_duplicate_clause — A expressão ON DUPLICATE KEY on_duplicate_clause adicionada à consulta INSERT. Exemplo: INSERT INTO t (c1,c2) VALUES ('a', 2) ON DUPLICATE KEY UPDATE c2 = c2 + 1, em que on_duplicate_clause é UPDATE c2 = c2 + 1. Consulte a documentação do MySQL para ver qual on_duplicate_clause você pode usar com a cláusula ON DUPLICATE KEY. Para especificar on_duplicate_clause, você precisa passar 0 para o parâmetro replace_query. Se passar replace_query = 1 e on_duplicate_clause ao mesmo tempo, o ClickHouse gera uma exceção.
Os argumentos também podem ser passados usando coleções nomeadas. Nesse caso, host e port devem ser especificados separadamente. Essa abordagem é recomendada para o ambiente de produção. Cláusulas WHERE simples, como =, !=, >, >=, <, <=, são executadas no servidor MySQL. O restante das condições e a restrição de amostragem LIMIT são executados no ClickHouse somente após o término da consulta ao MySQL.

Passando uma consulta em vez do nome de uma tabela

Em vez do nome de uma tabela, o argumento table pode ser uma consulta SELECT passada ao MySQL como está. A estrutura da tabela é inferida a partir do resultado da consulta. A consulta pode ser escrita como uma subconsulta ou encapsulada na função query:
Isso é útil para delegar junções, agregações ou qualquer outro processamento ao MySQL. Essa tabela é somente leitura: INSERT nela não é permitido. A mesma sintaxe também é compatível com a função de tabela mysql.
A forma de subconsulta (SELECT ...) é analisada pelo ClickHouse e serializada novamente no dialeto do MySQL (com identificadores entre crases) antes de ser enviada ao servidor. Portanto, ela deve ser um SQL do ClickHouse válido. Para passar uma sintaxe específica do MySQL que o ClickHouse não analisa, use a forma query('...'), cujo texto é enviado ao MySQL literalmente.Qualquer WHERE, LIMIT, agregação etc. externo da consulta ClickHouse envolvente não é delegado à consulta fornecida — ele é aplicado no ClickHouse depois que o resultado completo da consulta é obtido. Para restringir os dados lidos do MySQL, coloque o filtro dentro da consulta fornecida. Com external_table_strict_query = 1, um filtro externo que não pode ser delegado é rejeitado com uma exceção em vez de ser aplicado localmente.
Compatível com múltiplas réplicas, que devem ser listadas com |. Por exemplo:

Exemplo de uso

Criar tabela no MySQL:
Crie uma tabela no ClickHouse usando argumentos simples:
Ou use coleções nomeadas:
Recuperando dados da tabela do MySQL:

Configurações

As configurações padrão não são muito eficientes, pois nem sequer reutilizam as conexões. Essas configurações permitem aumentar o número de consultas que o servidor executa por segundo.

connection_auto_close

Permite fechar automaticamente a conexão após a execução da consulta, ou seja, desativa a reutilização da conexão. Valores possíveis:
  • 1 — O fechamento automático da conexão é permitido, portanto a reutilização da conexão fica desativada
  • 0 — O fechamento automático da conexão não é permitido, portanto a reutilização da conexão fica ativada
Valor padrão: 1.

connection_max_tries

Define o número de novas tentativas para o pool com failover. Valores possíveis:
  • Inteiro positivo.
  • 0 — Não há novas tentativas para o pool com failover.
Valor padrão: 3.

connection_pool_size

Tamanho do pool de conexões (se todas as conexões estiverem em uso, a consulta aguardará até que alguma seja liberada). Valores possíveis:
  • Inteiro positivo.
Valor padrão: 16.

connection_wait_timeout

Tempo limite (em segundos) para aguardar uma conexão livre (caso já haja connection_pool_size conexões ativas); 0 - não aguardar. Valores possíveis:
  • Inteiro positivo.
Valor padrão: 5.

connect_timeout

Tempo limite de conexão (em segundos). Valores possíveis:
  • Inteiro positivo.
Valor padrão: 10.

read_write_timeout

Tempo limite de leitura e gravação (em segundos). Valores possíveis:
  • Inteiro positivo.
Valor padrão: 300.

enable_compression

Habilita a compressão para a conexão do protocolo MySQL. Valor padrão: false. Esta configuração se aplica a:
  • o mecanismo de tabela MySQL;
  • o mecanismo de banco de dados MySQL;
  • a função de tabela mysql;
  • coleções nomeadas usadas por integrações do MySQL.
Quando habilitada, o ClickHouse solicita compressão para a conexão. Exemplo:

Veja também

Última modificação em 23 de julho de 2026