Desenvolvimento e bases de dados

Que variáveis MySQL podem ser alteradas num alojamento gerido

Revisto a 4 min de leitura MySQL variáveis alojamento gerido bases de dados

O MySQL distingue variáveis globais, que afetam o servidor completo, e variáveis de sessão, que só se aplicam a uma ligação. Num plano de alojamento cloud gerido, várias contas utilizam o mesmo serviço MySQL, pelo que uma conta não dispõe de acesso root nem de privilégios administrativos como os necessários para modificar variáveis globais (SYSTEM_VARIABLES_ADMIN no MySQL 8) e alterar a configuração global.

Alcance das variáveis

Os buffers do InnoDB, o limite total de ligações e determinados registos são geridos ao nível do servidor. max_allowed_packet tem valor global e de sessão, mas o seu valor de sessão é só de leitura para o servidor MySQL: não se aumenta com um SET SESSION da aplicação. Outros parâmetros, como determinados modos SQL, tempos de espera ou conjuntos de carateres, podem ter valores globais e de sessão diferentes.

Pode consultar ambos os alcances com:

SHOW GLOBAL VARIABLES LIKE 'max_allowed_packet';
SHOW SESSION VARIABLES LIKE 'max_allowed_packet';

Variáveis de sessão

Algumas aplicações podem executar SET SESSION ao abrir cada ligação, se o MySQL permitir modificar essa variável. A alteração dura apenas essa sessão e deve ser configurada no código, no framework ou no conector da base de dados.

Não utilize SET GLOBAL como solução: falhará por falta de permissões ou afetaria outras contas. Também não confunda limites do PHP, como memory_limit ou upload_max_filesize, com variáveis do MySQL.

Alternativas

  • Divida importações ou consultas grandes em lotes.
  • Reveja a compatibilidade do modo SQL; não desative validações só para ocultar dados ou consultas incorretos. Se o projeto exigir um ajuste de sessão permitido, teste-o antes.
  • Corrija consultas e esquemas que consumam memória ou tempo em excesso.
  • Utilize tarefas pela linha de comandos para evitar limites do servidor web ou do PHP, tendo em conta que isto não altera os limites do próprio MySQL.
  • Perante desligamentos por inatividade, configure a recuperação da ligação e verifique que operação terminou antes de a repetir. Um desligamento não demonstra que uma escrita tenha falhado.
  • Verifique se uma versão atual da aplicação evita o requisito global.

Antes de excluir a compatibilidade, envie-nos o nome da variável, o valor exigido e a documentação do software. Podemos verificar o seu alcance e avaliar se existe uma alternativa por sessão ou um ajuste seguro no servidor, mas não é possível garantir uma alteração global.

Se o requisito for incompatível com um ambiente partilhado e exigir privilégios administrativos permanentes, será necessária uma infraestrutura sob controlo próprio, como um VPS ou um servidor dedicado. A Hostsuar não oferece atualmente esses ambientes; reveja as diferenças entre um VPS e o nosso alojamento cloud.

Um SET SESSION executado no phpMyAdmin só modifica essa ligação; não altera as sessões do seu site nem as futuras ligações de um pool. Consulte o alcance e as permissões de cada variável para a versão que utiliza e verifique o valor a partir da própria aplicação.

Também lhe pode ser útil

Algo não bate certo ou mudou? Diga-nos e revemos.