As variáveis do ApsaraDB for SelectDB controlam o comportamento de consultas, as configurações de sessão e as definições em todo o cluster. Elas se dividem em duas categorias: específicas do ApsaraDB for SelectDB e compatíveis com o protocolo de cliente MySQL.
Funcionamento das variáveis
É possível definir variáveis em dois escopos:
Escopo de sessão: Aplica-se apenas à conexão atual e é redefinido ao término da sessão.
Escopo global: Aplica-se à sessão atual e a todas as sessões subsequentes. Somente o usuário admin pode definir variáveis globais.
Quando há configurações em múltiplos níveis, elas entram em vigor seguindo esta ordem de prioridade (da maior para a menor):
Variáveis de sessão
Propriedades do usuário
Variáveis globais
Valores padrão
Caso uma configuração de prioridade mais alta não esteja definida, o próximo nível entra em vigor automaticamente.
Consultar variáveis
Execute SHOW VARIABLES para listar todas as variáveis e seus valores atuais:
SHOW VARIABLES;
Para filtrar por padrão de nome:
SHOW VARIABLES LIKE '%time_zone%';
Definir variáveis
Definir uma variável de sessão
As variáveis de sessão entram em vigor imediatamente e aplicam-se apenas à conexão atual:
SET exec_mem_limit = 137438953472;
SET forward_to_master = true;
SET time_zone = "Asia/Shanghai";
As variáveis também aceitam expressões constantes:
SET exec_mem_limit = 10 * 1024 * 1024 * 1024;
SET forward_to_master = concat('tr', 'u', 'e');
Definir uma variável global
As variáveis globais entram em vigor na sessão atual e em todas as sessões subsequentes:
SET GLOBAL exec_mem_limit = 137438953472;
Somente o usuário admin pode definir variáveis globais.
As variáveis a seguir suportam os escopos de sessão e global:
time_zonewait_timeoutsql_modeenable_profilequery_timeoutinsert_timeoutexec_mem_limitbatch_sizeallow_partition_column_nullableinsert_visible_timeout_msenable_fold_constant_by_be
As variáveis abaixo suportam apenas o escopo global:
default_rowset_typedefault_password_lifetimepassword_historyvalidate_password_policy
Substituir uma variável para uma única consulta
Use a dica SET_VAR para definir uma variável de sessão em uma única instrução, sem alterar o estado da sessão:
SELECT /*+ SET_VAR(exec_mem_limit = 8589934592) */ name FROM people ORDER BY name;
SELECT /*+ SET_VAR(query_timeout = 1, enable_partition_cache=true) */ sleep(3);
Os comentários devem começar com /*+ e seguir a instrução SELECT.
Variáveis de fuso horário
O ApsaraDB for SelectDB oferece duas variáveis de fuso horário:
|
Variável |
Descrição |
Modificável |
|
|
Fuso horário do sistema do cluster. Definido automaticamente na inicialização do servidor, com base no fuso horário do SO do servidor. |
Não |
|
|
Fuso horário atual do cluster. Afeta funções de tempo e dados importados com deslocamentos de fuso horário. |
Sim |
Consultar e definir variáveis de fuso horário
Para visualizar ambas as variáveis de fuso horário:
SHOW VARIABLES LIKE '%time_zone%';
Para definir o fuso horário da sessão:
SET time_zone = 'Asia/Shanghai';
Para definir o fuso horário do cluster para todas as sessões subsequentes:
SET GLOBAL time_zone = 'Asia/Shanghai';
Formatos de fuso horário suportados
|
Tipo de formato |
Exemplos |
|
Nomeado (banco de dados tz da IANA) |
|
|
Deslocamento UTC |
|
|
Abreviações |
|
|
Zulu |
|
Alguns métodos de importação de dados podem aceitar formatos adicionais de fuso horário não listados acima. Não dependa de formatos não padronizados em produção, pois o ApsaraDB for SelectDB pode alterar a forma como os trata a qualquer momento.
Impacto das configurações de fuso horário em funções e dados
Funções afetadas
As funções a seguir retornam resultados com base na configuração atual de time_zone:
|
Função |
Comportamento |
|
|
Converte um timestamp UTC para data e hora no fuso horário configurado. Com CST, |
|
|
Converte uma data e hora em um timestamp UTC. Com CST, |
|
|
Retorna a hora atual no fuso horário configurado. |
|
|
Retorna a data e hora atuais no fuso horário configurado. |
|
|
Converte uma data e hora de um fuso horário para outro. |
A saída de SHOW LOAD e SHOW BACKENDS também reflete o fuso horário configurado.
Não afetados pelas configurações de fuso horário:
Os valores
less thande colunas de chave de partição do tipo tempo emCREATE TABLEValores armazenados como tipo
DATEouDATETIME(o valor armazenado em si não muda)
Dados do tipo tempo durante a importação
Ao importar dados dos tipos DATE, DATEV2, DATETIME ou DATETIMEV2, o ApsaraDB for SelectDB trata a conversão de fuso horário da seguinte maneira:
Dados com sufixo de fuso horário (ex.:
2020-12-12 12:12:12+08:00): Convertidos para otime_zoneatual do cluster. Por exemplo, setime_zonefor+00:00, o valor armazenado torna-se2020-12-12 04:12:12.Dados sem sufixo de fuso horário (ex.:
2020-12-12 12:12:12): Tratados como tempo absoluto — importados como estão, sem conversão.
Horário de verão
Os ajustes de horário de verão estão embutidos nos fusos horários nomeados. Por exemplo, America/Los_Angeles muda de -08:00 para -07:00 em março e reverte em novembro.
Para evitar mudanças devido ao horário de verão, defina time_zone com um deslocamento UTC fixo (ex.: -08:00) em vez de usar uma zona nomeada como America/Los_Angeles.
Fontes de dados de fuso horário
Em cada nó de backend (BE), o ApsaraDB for SelectDB busca dados de fuso horário nos seguintes locais, nesta ordem:
O diretório retornado pelo comando
TZDIR/usr/share/zoneinfoO diretório
zoneinfono diretório de implantação do BE
Se nenhum dado de fuso horário for encontrado em qualquer local, o nó BE falhará ao iniciar.
Melhores práticas
Dados sensíveis a fuso horário
Antes de importar dados, decida como tratar as informações de fuso horário de forma consistente. Dados de tipos temporais como DATETIME não armazenam fuso horário — o ApsaraDB for SelectDB distingue duas categorias:
Tempo absoluto: Sem fuso horário nos dados e sem fuso horário configurado no momento da importação. Exemplo: 2023-12-12 08:00:00. Armazenado e consultado exatamente como fornecido, sem ser afetado por time_zone.
Tempo em um fuso horário específico: Os dados incluem um sufixo de fuso horário. Exemplo: 2020-12-12 12:12:12+02:00. O método de importação determina qual configuração de fuso horário se aplica:
INSERT INTO: Regido pela variável de sessãotime_zone.Stream Load ou Broker Load: Regido pelo cabeçalho de requisição
timezone. Se o cabeçalhotimezoneentrar em conflito com a variável de sessãotime_zone, o cabeçalhotimezoneterá precedência.
O ApsaraDB for SelectDB converte o fuso horário literal nos dados recebidos para o fuso horário configurado por time_zone no momento da importação.
Abordagem recomendada: Defina time_zone uma única vez antes da importação e mantenha-o consistente. Alterar time_zone após importar dados com consciência de fuso horário faz com que os valores armazenados sejam interpretados incorretamente nas consultas subsequentes.
O exemplo a seguir mostra o que acontece quando time_zone é alterado no meio da sessão:
-- Current time zone: Asia/Hong_Kong
SELECT @@time_zone;
-- +----------------+
-- | @@time_zone |
-- +----------------+
-- | Asia/Hong_Kong |
-- +----------------+
-- Import data with literal time zone +02:00
-- Stored as 2020-12-12 18:12:12 (converted to Asia/Hong_Kong)
INSERT INTO dtv23 VALUES('2020-12-12 12:12:12+02:00');
SELECT * FROM dtv23;
-- +-------------------------+
-- | k0 |
-- +-------------------------+
-- | 2020-12-12 18:12:12.000 |
-- +-------------------------+
-- Changing time_zone does not update stored values
SET time_zone = 'America/Los_Angeles';
-- A second import now uses America/Los_Angeles for conversion
INSERT INTO dtv23 VALUES('2020-12-12 12:12:12+02:00');
SELECT * FROM dtv23;
-- Rows now carry inconsistent time zone semantics
-- +-------------------------+
-- | k0 |
-- +-------------------------+
-- | 2020-12-12 02:12:12.000 | -- imported under America/Los_Angeles
-- | 2020-12-12 18:12:12.000 | -- imported under Asia/Hong_Kong
-- +-------------------------+
Resumo das melhores práticas para fuso horário:
Confirme o
time_zonedo cluster antes de importar dados e não o altere posteriormente.Ao usar Stream Load ou Broker Load, defina o cabeçalho
timezonecom o mesmo valor da variável de sessãotime_zone.Para dados de tempo absoluto, importe sem sufixo de fuso horário. Para dados com consciência de fuso horário, inclua o sufixo e permita que o ApsaraDB for SelectDB faça a conversão.
Precisão do horário de verão
Os dados de fusos horários nomeados (incluindo datas de início e fim do horário de verão) são mantidos pela Internet Assigned Numbers Authority (IANA). Os dados armazenados em cada nó BE podem não refletir as alterações mais recentes confirmadas pela IANA para o ano atual.
Se sua carga de trabalho exigir o cronograma mais recente de horário de verão, garanta que a source de dados de fuso horário em cada nó BE contenha a versão mais recente do banco de dados tz da IANA. Para obter os dados mais recentes, consulte The tz-announce Archives.
Configurações de timeout
O ApsaraDB for SelectDB suporta configuração de timeout em vários níveis usando as variáveis query_timeout e insert_timeout, além de propriedades de usuário.
Priority order (highest to lowest): Variáveis de sessão > Propriedades do usuário > Variáveis globais > Valores padrão
|
Variável |
Escopo |
Padrão |
Descrição |
|
|
Sessão, Global, Propriedade do usuário |
900 s (15 min) |
Controla o timeout para todas as instruções de consulta. |
|
|
Sessão, Global, Propriedade do usuário |
14400 s (4 h) |
Controla o timeout especificamente para instruções |
Propriedades de usuário para timeout:
As propriedades de usuário
query_timeouteinsert_timeoutsó podem ser definidas pelo usuário admin para um usuário específico.Essas propriedades não possuem semântica de cota — elas alteram o timeout padrão para o usuário especificado.
Alterações nas propriedades do usuário entram em vigor após a reconexão do cliente.
Apêndice
Variáveis suportadas
Variáveis booleanas
Variáveis booleanas ativam ou desativam um recurso. Valores válidos: true e false.
|
Variável |
Padrão |
Descrição |
|
|
false |
Quando |
|
|
false |
Se |
|
|
true |
Caso |
|
|
false |
Quando |
|
|
false |
Se |
|
|
false |
Quando |
|
|
true |
Se |
|
|
false |
Caso |
|
|
true |
Quando |
|
|
true |
Se |
|
|
false |
Caso |
|
|
false |
Quando |
|
|
false |
Se |
|
|
false |
Quando |
|
|
true |
Caso |
|
|
false |
Quando |
|
|
true |
Se |
|
|
false |
Caso |
|
|
true |
Quando |
|
|
true |
Se |
|
|
true |
Caso |
|
|
false |
Quando |
|
|
false |
Se |
|
|
false |
Quando |
|
|
false |
Caso |
|
|
false |
Quando |
|
|
false |
Se |
|
|
true |
Caso |
|
|
false |
Quando |
|
|
false |
Se |
|
|
false |
Quando |
|
|
true |
Caso |
|
|
false |
Se |
|
|
false |
Quando |
|
|
false |
Caso |
|
|
false |
Se |
|
|
false |
Quando |
|
|
false |
Caso |
|
|
true |
Se |
|
|
true |
Quando |
|
|
true |
Caso |
|
|
false |
Se |
|
|
false |
Quando |
|
|
true |
Caso |
|
|
false |
Se |
Variáveis de configuração
Variáveis de configuração aceitam uma faixa de valores além de um simples true/false.
|
Variável |
Padrão |
Descrição |
|
|
|
0.8 |
A proporção máxima de memória da tabela hash em relação à memória total de execução permitida para Broadcast Join. Quando a tabela hash excede essa proporção, o ApsaraDB for SelectDB muda para Shuffle Join. Defina como |
|
|
|
1024 |
Número de linhas por pacote transmitido entre nós durante uma consulta. Valores maiores aumentam o throughput para grandes varreduras, mas podem aumentar a latência e o uso de memória para consultas pequenas. Faixa recomendada: 1024–4096. |
|
|
|
-1 |
Quantidade padrão de linhas retornadas após |
|
|
|
2 GB |
Memória máxima para uma única consulta. Aceita unidades: bytes (padrão), KB, MB, GB, TB, PB. Limita a memória por instância de fragmento — não a memória total da consulta em todo o cluster. Se ocorrer um erro |
|
|
|
0 |
Controla a sensibilidade a maiúsculas/minúsculas em nomes de tabelas. |
|
|
|
-1 |
Número máximo de condições de predicado enviadas ao mecanismo de armazenamento por coluna. |
|
|
|
-1 |
Quantidade máxima de chaves de varredura que um nó de varredura pode dividir por consulta. |
|
|
|
-1 |
Número de nós de troca que um nó upstream usa para receber dados de nós downstream. |
|
|
|
43200 s |
Timeout para instruções |
|
|
|
— |
Hora final da janela de coleta automática de estatísticas. |
|
|
|
— |
Hora inicial da janela de coleta automática de estatísticas. |
|
|
|
70 |
Tabelas com mais colunas do que este limiar são excluídas da coleta automática de estatísticas. |
|
|
|
4 |
Número de dígitos decimais adicionais adicionados ao resultado de operações de divisão |
|
|
|
— |
Limiar de memória para operações de agregação. Quando excedido, os dados na memória são descarregados para o disco. |
|
|
|
— |
Limiar de memória para operações de ordenação. Quando excedido, os dados na memória são descarregados para o disco. |
|
|
|
86400000 ms |
Intervalo mínimo entre coletas automáticas de estatísticas para tabelas externas. |
|
|
|
lz4 |
Formato de compressão usado durante a transmissão de dados entre nós. |
|
|
|
0 |
Intervalo mínimo entre coletas automáticas de estatísticas para tabelas grandes (mais de 5 vezes o tamanho especificado por |
|
|
|
4194304 |
Número de linhas amostradas para tabelas grandes durante a coleta automática de estatísticas. |
|
|
|
0 |
Tabelas maiores que este limiar são amostradas durante a coleta automática de estatísticas. |
|
|
|
(vazio) |
IDs de filtros de runtime a serem ignorados. |
|
|
|
0 |
Proporção máxima de linhas que podem ser filtradas durante a importação (por exemplo, linhas que falham na validação). |
|
|
|
64 |
Número máximo de tarefas Pipeline concorrentes por consulta SQL quando |
|
|
|
0 |
Quantidade de tarefas Pipeline concorrentes por consulta SQL. Quando |
|
|
|
IN ou Bloom filter |
Tipo de filtro de runtime utilizado. Opções: Bloom filter, MinMax filter, predicado IN, IN ou Bloom filter, bitmap filter. |
|
|
|
GLOBAL |
Política de pushdown para filtros de runtime. Opções: |
|
|
|
1000 ms |
Duração que o nó de varredura da tabela esquerda aguarda por cada filtro de runtime. |
|
|
|
10 |
Quantidade máxima de Bloom filters por consulta. |
|
|
|
1048576 bytes (1 MB) |
Tamanho mínimo de um Bloom filter. |
|
|
|
16777216 bytes (16 MB) |
Tamanho máximo de um Bloom filter. |
|
|
|
2097152 bytes (2 MB) |
Tamanho padrão de um Bloom filter. |
|
|
|
1024 |
Número máximo de linhas na tabela direita para as quais um predicado IN pode ser gerado. |
|
|
|
1 |
Quantidade de instâncias processando intervalos de varredura em cada nó BE. Aumentar este valor melhora o throughput para grandes consultas, mas eleva o uso de CPU, memória e I/O de disco. |
|
|
|
900 s |
Timeout para todas as instruções de consulta na conexão atual. Para instruções |
|
|
|
14400 s |
Timeout para instruções |
|
|
|
— |
Concorrência padrão para envios de dados em lote durante operações |
|
|
|
— |
Controla a compatibilidade de sintaxe SQL e o rigor da validação de dados. Consulte SQL Mode. |
|
|
|
(sem limite) |
Número máximo padrão de linhas retornadas por |
|
|
|
Valor de |
Fuso horário da sessão atual. Afeta os resultados de funções de tempo. Veja Variáveis de fuso horário. |
|
|
|
28800 s (8 h) |
Timeout de conexão ociosa. O ApsaraDB for SelectDB fecha conexões que ficaram ociosas por mais tempo do que este período. |
|
|
|
beta |
Formato de armazenamento padrão para nós de computação. Valores válidos: |
|
|
|
— |
Controla se as consultas usam índices ROLLUP no formato Segment V2. Usado para verificação durante a migração para Segment V2. |
|
|
|
— |
Método de junção preferido quando Broadcast Join e Shuffle Join têm custo igual. Valores válidos: |
|
|
|
10000 ms |
Tempo que o ApsaraDB for SelectDB aguarda para que uma transação seja confirmada e os dados se tornem visíveis após a conclusão de um |
|
|
|
-1 (sem limite) |
Limita o número de threads de varredura que uma consulta pode usar em um único nó. Substitui |
|
|
|
— |
Quando |
|
|
|
NULL |
Modo de criptografia de bloco. |
|
|
|
0 (nunca expira) |
Período padrão de expiração de senha em dias. Aplica-se apenas a usuários com política |
|
|
|
0 (sem limite) |
Número de senhas anteriores retidas. Aplica-se apenas a usuários com política |
|
|
|
NONE (0) |
Política de força de senha. |
< > , . ? / : ; ' [ ] { } "`). |
|
|
2 |
Número mínimo de operadores |
|
|
|
random |
Caminho de armazenamento para o cache de arquivos de bloco no BE. O padrão é um caminho selecionado aleatoriamente da configuração do BE. |
|
|
|
1024 |
Limiar da cláusula |
|
|
|
-1 (desativado) |
Quando definido como |
Variáveis compatíveis e reservadas
Estas variáveis não têm efeito funcional no ApsaraDB for SelectDB. Existem para compatibilidade com clientes MySQL ou pools de conexões JDBC.
|
Variável |
Finalidade |
|
|
Compatibilidade com o pool de conexões JDBC c3p0. |
|
|
Compatibilidade com cliente MySQL. Não afeta o comportamento de colunas auto-incremento. |
|
|
Compatibilidade com cliente MySQL. Não afeta o comportamento de colunas auto-incremento. |
|
|
Compatibilidade com cliente MySQL. |
|
|
Compatibilidade com cliente MySQL. |
|
|
Compatibilidade com cliente MySQL. |
|
|
Compatibilidade com cliente MySQL. |
|
|
Compatibilidade com cliente MySQL. |
|
|
Compatibilidade com cliente MySQL. |
|
|
Compatibilidade com cliente MySQL. |
|
|
Compatibilidade com cliente MySQL. |
|
|
Compatibilidade com cliente MySQL. |
|
|
Compatibilidade com cliente MySQL. |
|
|
Compatibilidade com cliente MySQL. |
|
|
Compatibilidade com cliente MySQL. |
|
|
Compatibilidade com o pool de conexões JDBC c3p0. |
|
|
Compatibilidade com cliente MySQL. |
|
|
Compatibilidade com cliente MySQL. |
|
|
Compatibilidade com cliente MySQL. |
|
|
Compatibilidade com cliente MySQL. |
|
|
Compatibilidade com o pool de conexões JDBC c3p0. |
|
|
Compatibilidade com cliente MySQL. |
|
|
Compatibilidade com cliente MySQL. |
|
|
Compatibilidade com cliente MySQL. |
|
|
Compatibilidade com cliente MySQL. |
|
|
Compatibilidade com cliente MySQL. |
|
|
Compatibilidade com cliente MySQL. |
|
|
Compatibilidade com MySQL JDBC 8.0.16 e posterior. |
|
|
Define o nível de codegen LLVM. Não tem efeito. |
|
|
Exibe a licença do ApsaraDB for SelectDB. |
|
|
Reservado. |
|
|
Definido como o fuso horário do sistema na inicialização do cluster. Não pode ser modificado. |
|
|
Exibe a versão do ApsaraDB for SelectDB. Não pode ser modificado. |
|
|
Usado para testes de regressão. |
|
|
Compatibilidade com algumas ferramentas de business intelligence (BI). |
|
|
Sem efeito prático. |
|
|
Reservado. |
Referências
The tz-announce Archives — Versões mais recentes do banco de dados de fusos horários da IANA