Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Por que mudar de utf8 para utf8mb4 deixou meu banco de dados lento?


utf é realmente utfmb3 e pode usar no máximo 3 bytes por caractere, enquanto utfmb4 pode usar 4 bytes por caractere. Para colunas VARCHAR, isso normalmente não faz muita diferença, pois o MySQL armazenará apenas quantos bytes forem necessários (a menos que você tenha criado suas tabelas MyISAM com ROW_FORMAT=FIXED).

No entanto, durante a execução da consulta, o MySQL pode criar tabelas temporárias no mecanismo de armazenamento MEMORY que não suporta linhas de comprimento variável. Essas tabelas temporárias têm um tamanho máximo, e se esse tamanho for excedido, as tabelas temporárias serão convertidas em tabelas no MyISAM/InnoDB (dependendo da sua versão do MySQL). A variável de status Created_tmp_disk_tables será incrementado cada vez que isso acontecer. Se sim, tente ver se ajuda a aumentar o valor de max_heap_table_size e tmp_table_size .

Alternativamente, atualize para o MySQL 8.0 onde um novo mecanismo de armazenamento que suporta linhas de comprimento variável é usado para tabelas temporárias internas.