Saya membaca di sini dan ada yang menggunakan utf8_unicode_ci
pemeriksaan menjamin perlakuan yang lebih baik dari teks unicode (misalnya, knowns bagaimana untuk memperluas karakter seperti 'œ' ke 'oe' untuk mencari dan memesan) dibandingkan dengan standar utf8_general_ci
yang pada dasarnya hanya strip diakritik. Sayangnya, kedua sumber menunjukkan bahwa utf8_unicode_ci
sedikit lebih lambat daripada utf8_general_ci
.
Jadi pertanyaan saya adalah: apa artinya "sedikit lebih lambat"? Adakah yang menjalankan tolok ukur? Apakah kita berbicara tentang dampak kinerja -0,01% atau lebih tepatnya seperti -25%?
Terima kasih atas bantuan Anda.
Jawaban:
Yah, saya tidak menemukan benchmark apa pun di Internet, jadi saya memutuskan untuk membuat benchmark sendiri.
Saya membuat tabel yang sangat sederhana dengan 500000 baris:
Lalu saya mengisinya dengan data acak dengan menjalankan prosedur tersimpan ini:
Kemudian saya membuat prosedur tersimpan berikut untuk membandingkan SELECT sederhana, SELECT dengan LIKE, dan mengurutkan (SELECT with ORDER BY):
Dalam prosedur tersimpan utf8_general_ci collation digunakan, tetapi tentu saja selama tes saya menggunakan utf8_general_ci dan utf8_unicode_ci.
Saya memanggil setiap prosedur tersimpan 5 kali untuk setiap pemeriksaan (5 kali untuk utf8_general_ci dan 5 kali untuk utf8_unicode_ci) dan kemudian menghitung nilai rata-rata.
Inilah hasilnya:
benchmark_simple_select () dengan utf8_general_ci: 9957 ms
benchmark_simple_select () dengan utf8_unicode_ci: 10271 ms
Dalam benchmark ini menggunakan utf8_unicode_ci lebih lambat daripada utf8_general_ci sebesar 3,2%.
benchmark_select_like () dengan utf8_general_ci: 11441 ms
benchmark_select_like () dengan utf8_unicode_ci: 12811 ms
Dalam benchmark ini menggunakan utf8_unicode_ci lebih lambat dari utf8_general_ci sebesar 12%.
benchmark_order_by () dengan utf8_general_ci: 11944 ms
benchmark_order_by () dengan utf8_unicode_ci: 12887 ms
Dalam benchmark ini menggunakan utf8_unicode_ci lebih lambat dari utf8_general_ci sebesar 7,9%.
sumber
Saya tidak melihat patokan apa pun, tetapi Anda dapat menjalankannya sendiri menggunakan fungsi BENCHMARK :
BENCHMARK (hitung, expr)
Seperti yang disarankan oleh Matthew, Anda dapat menjalankan instalasi paralel MYSQL, tetapi pertimbangkan bahwa mungkin ada perbedaan besar antara arsitektur yang berbeda (sparc, intel, 32bit, 64bit, ...).
sumber