• 21-01-2015, 20:20:41
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Arkadaşlar kendim yazıp geliştirdiğim bir script var, son zamanlarda sıkça yaşadığım MySql' de Sending Data şeklinde kalan bir sorgu ve altında sorgulanması gereken 4-5 sorgu "Locked" pozisyonunda kalıyor ve yaklaşık 5-10dk. sunucu kilitli kalıyor. Sonra düzeliyor. Reboot ile düzelmiyor. Sistem başladığı anda MySql %100' ün üstüne çıkıyor ve sistem kilit.

    Sorgum aşağıda ki şekilde PDO kullanıyorum.

    $query = $pdo -> query('SELECT u.kullanici_adi, u.id, u.adsoyad, u.p_arka, u.uye_renk, u.k_arka, 
    g.id, u.tur, g.paylasim, g.kimeait, g.kim_gonderdi, g.kimin, g.icerik, g.icerik_hash, g.medya_tur, 
    g.konum_bilgisi,  g.mobil, g.medya_url, g.tur, g.tarih, g.kenlem, g.kboylam from 
    gonderiler g left join uyeler u on g.kimin=u.id  WHERE g.kimin in
     (select takip_edilen from takipciler where takip_eden = "'.$_SESSION['id'].'" and data = 1)
     AND u.dondurma = "0" and u.ban = "0" and g.goster = "1" order by g.id desc LIMIT 6');
    Sql sorgusunda en önemli olan kısım ise takipciler kısmı. Yani sadece takip ettiği kişilere ait gönderiler id sırasına göre çıkıyor. Sorunumu çözemedim arkadaşlar ve sizlerden çok çok rica ediyorum.

  • 21-01-2015, 22:10:50
    #2
    tahminimce sorgu içerisinde kullandığın subquery'den çok fazla değer dönüyor ve in deyimi or şartı gibi çalıştığından sorgu çok yük bindiriyor.
  • 22-01-2015, 01:39:00
    #3
    Bayzett adlı üyeden alıntı: mesajı görüntüle
    tahminimce sorgu içerisinde kullandığın subquery'den çok fazla değer dönüyor ve in deyimi or şartı gibi çalıştığından sorgu çok yük bindiriyor.
    Peki hocam in deyimi için alternatif yapabileceğim bir şey var mı?
    Hocam in kısımları JOIN ve LEFT JOIN gibi şeylerle denedim, sorgularda sıkıntı yok ama sorgu çalıştığı anda mysql cpu oranı %600' lere çıkıyor.
  • 23-01-2015, 02:00:14
    #4
    LEFT JOIN zaten çok fazla kasar, eğer her iki tablodada verilerin karşılığı mutlaka varsa INNER JOIN ile çek. Ayrıca, WHERE içerisindeki her şartı anahtar olarak değiştir veritabanında. Yazdıklarımla tamamlanacak kadar basit bir iş değil ama yine de çok yüksek oranda sorunu çözecektir.