Sort_buffer_size ile ilgilenen tek bir durum değişkeni vardır . Şu sorudaki mesajda bulunan şey şu: Sort_merge_passes . MySQL Belgeleri şöyle diyor:
Sort_merge_passes: Sıralama algoritmasının yapmak zorunda olduğu birleştirme geçişlerinin sayısı. Bu değer büyükse , sort_buffer_size sistem değişkeninin değerini artırmayı düşünmelisiniz .
Lütfen sort_buffer_size hakkında bir şey unutmayın
GLOBAL STATUS GÖSTER çıktısında saniyede çok sayıda Sort_merge_passes görürseniz, sorgu optimizasyonu veya geliştirilmiş dizin oluşturma ile iyileştirilemeyen ORDER BY veya GROUP BY işlemlerini hızlandırmak için sort_buffer_size değerini artırmayı düşünebilirsiniz.
Yükselterek iken sort_buffer_size
ile teneke yardım sorguları GROUP BY
s ve ORDER BY
s, sizi daha iyi artırabilir sorguları iyileştirilmesi ve Sorgu Doktoru tarafından kullanılabilecek indeksleri eklemeyi kapalıdır.
Soru kaldı: Sort_merge_passes nasıl kontrol edilir ???
Son 5 dakika içinde kaç tane Sort_merge_passes olduğunu kontrol etmek için bu kodu kullanın. Ayrıca saatte Sort_merge_passes değerini hesaplar.
SET @SleepTime = 300;
SELECT variable_value INTO @SMP1
FROM information_schema.global_status WHERE variable_name = 'Sort_merge_passes';
SELECT SLEEP(@SleepTime) INTO @x;
SELECT variable_value INTO @SMP2
FROM information_schema.global_status WHERE variable_name = 'Sort_merge_passes';
SET @SMP = @SMP2 - @SMP1;
SET @SMP_RATE = @SMP * 3600 / @SleepTime;
SELECT @SMP,@SMP_RATE;
Sort_merge_passes ve oranı çok yüksek bulursanız, sort_buffer_size değerini artırmaktan çekinmeyin . 4M'ye yükseltmek istediğinizi varsayalım. Bunu çalıştırırsınız:
mysql> SET GLOBAL sort_buffer_size = 1024 * 1024 * 4;
Daha sonra bunu my.cnf dosyasına eklersiniz
[mysqld]
sort_buffer_size = 4M
Diğer dönemlerde Sort_merge_passes ani artışlarını kontrol etmek için kodu düzenli olarak çalıştırırsınız .