Desenvolvimento e bases de dados
Que variáveis MySQL podem ser alteradas num alojamento gerido
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
- Criar bases de dados MySQL, utilizadores e permissões no cPanel Crie uma base de dados MySQL no cPanel, adicione o respetivo utilizador, atribua-lhe todos os privil...
- Criar uma base de dados e o respetivo utilizador com o assistente do cPanel Crie uma base de dados MySQL, o seu utilizador e a associação de permissões com o assistente do cPan...
- Clonar uma base de dados Duplique uma base de dados MySQL criando primeiro o destino e as suas permissões no cPanel e copiand...
- Consultar a versão do MySQL e verificar a compatibilidade Identifique a versão real do servidor MySQL que a sua aplicação utiliza, reveja a compatibilidade e...
Algo não bate certo ou mudou? Diga-nos e revemos.