terça-feira, 9 de abril de 2019

Às vezes, o banco de dados lento .. não é o banco de dados ...

Então eu fui recentemente perguntado por que o MySQL 5 atualizado, .6 era mais lento que o mais antigo 5.5

Então eu comecei a olhar por cima das variáveis ​​padrão e caches e etc.

O caso de teste era uma rotina simples que levava cerca de duas vezes mais tempo para ser executada em 5.6 do que em 5.5.

Para adicionar ao mix .. a versão 5.6 tinha o dobro do Innodb_buffer_pool_size e, claro, mais ram geral.

Então eu comecei alguns testes com o MySQLslap ...

Testes do Mysqlslap mostram mais lento em 5.6

5,6:
mysqlslap --defaults-file =. /. my.cnf --concurrency = 150 --iterações = 130 - consulta = / teste.sql --create-schema = applicationdata --verbose
Referência
Número médio de segundos para executar todas as consultas: 0,028 segundos
Número mínimo de segundos para executar todas as consultas: 0,019 segundos
Número máximo de segundos para executar todas as consultas: 0,071 segundos
Número de clientes executando consultas: 150
Número médio de consultas por cliente: 1

5,5:
mysqlslap --defaults-file =. /. my.cnf --concurrency = 150 --iterações = 130 --query = / test.sql --create-schema = applicationdata --verbose
Referência
Número médio de segundos para executar todas as consultas: 0,015 segundos
Número mínimo de segundos para executar todas as consultas: 0,011 segundos
Número máximo de segundos para executar todas as consultas: 0,024 segundos
Número de clientes executando consultas: 150
Número médio de consultas por cliente: 1


Tudo isso vai contra os benchmarks públicos
http://dimitrik.free.fr/blog/archives/2013/02/mysql-performance-mysql-56-ga-vs-mysql-55-32cores.html

Então eu verifiquei o nível do disco -

5,6:
# dd if = / dev / zero de = teste bs = 1048576 contagem = 2048
2048 + 0 registros em
2048 + 0 registra
2147483648 bytes (2,1 GB) copiados, 25,7401 s, 83,4 MB / s

# dd if = teste de = / dev / null bs = 1048576
2048 + 0 registros em
2048 + 0 registra
2147483648 bytes (2,1 GB) copiados, 29,1527 s, 73,7 MB / s

5,5:
# dd if = / dev / zero de = teste bs = 1048576 contagem = 2048
2048 + 0 registros em
2048 + 0 registra
2147483648 bytes (2,1 GB) copiados, 19,9214 segundos, 108 MB / s

# dd if = teste de = / dev / null bs = 1048576
2048 + 0 registros em
2048 + 0 registra
2147483648 bytes (2,1 GB) copiados, 20,0243 segundos, 107 MB / s



Aqui os discos com 5.5 são mais lentos independentemente do MySQL. Então, neste caso .... Olhe para corrigir a velocidade do disco .. MySQL estava funcionando bem e vontade.