Sorgumuz bu;
SELECT SQL_NO_CACHE DISTINCT a.*, u.user_email, u.user_nicename, u.user_login, u.display_name FROM wp_bp_activity a LEFT JOIN wp_users u ON a.user_id = u.ID WHERE a.is_spam = 0 AND a.hide_sitewide = 0 AND a.type != ‘activity_comment’ ORDER BY a.date_recorded DESC LIMIT 0, 50
Bir çok join işleminde olduğu gibi bu sorguda da MySQL temp table oluşturuyor ve my.cnf da ayarladığınız tmpdir’a bu temp table’ı atıyor.
Ben sunucularımda ssd disk kullanıyorum. Bu sorguyu incelerken “Copying to tmp table” işleminin uzun sürdüğünü görerek bir çözüm aradım ve tmpdir olarak tmpfs kullanmanın bu işi hızlandırabileceğini ve nasıl tmpfs’e geçileceğini şurada gördüm ve uyguladım. Ubuntu kullanıyorsanız şuradaki yazıyı da okumalısınız.
tmpfs; dosyaları disk yerine ramde tutuyor ve haliyle işleminiz daha hızlı oluyor. Şimdi sonuçları paylaşıyorum.
tmpfs’den önce
Sorguyu 3 defa art arda çalıştırdım…
Sonra
Yine 3 defa art arda çalıştırdım.
Sonraki sonuçlarda da yine ortalama 1.5sn civarı sürdü. Benim ssd kullandığım sunucumda fark 0.2sn kadar oldu.