Li aqui e ali que o uso do utf8_unicode_ci
agrupamento garante um melhor tratamento do texto unicode (por exemplo, ele sabe como expandir caracteres como 'œ' para 'oe' para pesquisa e pedido) em comparação com o padrão, utf8_general_ci
que basicamente retira os diacríticos. Infelizmente, ambas as fontes indicam que utf8_unicode_ci
é um pouco mais lento que utf8_general_ci
.
Então, minha pergunta é: o que significa "um pouco mais lento"? Alguém já executou benchmarks? Estamos falando de um impacto no desempenho de -0,01% ou algo como -25%?
Obrigado pela ajuda.
Respostas:
Bem, eu não encontrei nenhum benchmark na Internet, então decidi fazer benchmarks sozinho.
Criei uma tabela muito simples com 500000 linhas:
Em seguida, preenchi-o com dados aleatórios executando este procedimento armazenado:
Em seguida, criei os seguintes procedimentos armazenados para fazer o benchmark simples SELECT, SELECT com LIKE e classificação (SELECT com ORDER BY):
Nos procedimentos armazenados acima, o agrupamento utf8_general_ci é usado, mas é claro que durante os testes eu usei utf8_general_ci e utf8_unicode_ci.
Chamei cada procedimento armazenado 5 vezes para cada agrupamento (5 vezes para utf8_general_ci e 5 vezes para utf8_unicode_ci) e calculei os valores médios.
Aqui estão os resultados:
benchmark_simple_select () com utf8_general_ci: 9957 ms
benchmark_simple_select () com utf8_unicode_ci: 10271 ms
Neste benchmark, o uso de utf8_unicode_ci é mais lento que utf8_general_ci em 3,2%.
benchmark_select_like () com utf8_general_ci: 11441 ms
benchmark_select_like () com utf8_unicode_ci: 12811 ms
Neste benchmark, o uso de utf8_unicode_ci é mais lento que utf8_general_ci em 12%.
benchmark_order_by () com utf8_general_ci: 11944 ms
benchmark_order_by () com utf8_unicode_ci: 12887 ms
Nesse benchmark, o uso de utf8_unicode_ci é mais lento que o utf8_general_ci em 7,9%.
fonte
Não vi nenhum benchmark, mas você pode executar o seu próprio usando a função BENCHMARK :
BENCHMARK (contagem, expr)
Conforme recomendado por Matthew, você pode executar uma instalação paralela do MYSQL, mas considere que pode haver uma grande diferença entre diferentes arquiteturas (sparc, intel, 32bit, 64bit, ...).
fonte