MySQL8: performance péssima depois de atualizar
O Ubuntu 20.04 usa o MySQL8 por padrão. Que, em teoria, é até 2x mais rápido que o 5.7.
Em alguns projetos do meu trabalho, as base de dados foram criadas no 5.x
. No projeto atual, executar a test suite inteira no MySQL 5.7, demora algo em torno de 6
minutos.
No MySQL8, está levando 18
minutos.
Ou seja, 3x
mais lerdo!
Depois de procurar um pouco, achei um bug aberto no MySQL bug tracker, com uma configuração similar: todo mundo usando como armazenamento um SSD Samsung 970 EVO Plus m.2.
Update: No Ubuntu 22.04, que usa o MySQL 8.0.31, esse problema não occorre mais.
Solução
As soluções sugeridas no bug tracker não surtiram muito efeito: melhoraram a performance, mas ainda muito aquém do 5.7
.
Mas então eu achei nos fórums do MySQL uma sugestão pra configurar o MySQL8 pra imitar o comportamento do MySQL 5.7. Teste e… deu certo!
Usando sudo
, edite o arquivo /etc/mysql/mysql.conf.d/mysqld.cnf
e adicione as configurações abaixo depois da seção [mysqld]
:
ssl=0
default_authentication_plugin=mysql_native_password
skip_log_bin=1
character_set_server=latin1
collation_server=latin1_swedish_ci
skip-character-set-client-handshake
Salve e reinicie o MySQL com o comando sudo service mysql restart
.
Problema com o mysqldump
Se você estiver tendo algum problema com o mysqldump
, mais precisamente:
Got error: 2061: Authentication plugin ‘caching_sha2_password’ reported error: Authentication requires secure connection. when trying to connect
Adicione este parâmetros na linha de comando que faz a importação:
--ssl-mode=DISABLED --get-server-public-key