• 04-06-2013, 11:22:04
    #10
    madly0011 adlı üyeden alıntı: mesajı görüntüle
    o zaman $sonid de sorun vardır o kullandığın classtaki query_db metodunun mysql_num_rows() fonksiyonu ile sayı geri döndürdüğünden emin olun
    evet haklısınız, son hali şöyle olacak sanırım

    $sonid	=	$this->query_db("SELECT id FROM videos ORDER BY id LIMIT 1");
    			$num	=	@mysql_num_rows($sonid);
    			for($i=1;$i<20;$i++){
    			$rand = rand(1,$num);
                $sql = $this->query_array("SELECT id,title,thumb,views,liked,duration FROM videos  ORDER BY id  LIMIT $rand,1");  
    			}
    1. sorun felaket ağır sonuç basıyor. basıyor basmasına da haliyle mysql_num_row kullanırsak tek 1 kayıt döndüreceğinden rand'a girdiğinde tek 1 içerik basıyor.

    query_db ise :
    public function query_db($sql){
    return @mysql_query($sql);

    }
  • 04-06-2013, 11:23:22
    #11
    Konu ile alakasız ama biraz ziyaretçi yoğunluğun arttığı zaman bu mysql sorguların başına bela açmaya başlayacak.Online olan kişi sayısı 10-50-100 leri bulduğu zaman online kişi sayısı x 20 query aynı anda yapmaya başlayacaksınki eğer sistem başka query ler yapmıyorsa.Benim siteme fazla kişi girmez diyorsan bu yeterli.
    Hedefin daha ilerisi olduğunda memcache vb. kullanmaya başlamalısın.Hem bu dertten hemde mysql query lerden kurtulursun.
  • 04-06-2013, 11:26:10
    #12
    Crash adlı üyeden alıntı: mesajı görüntüle
    Konu ile alakasız ama biraz ziyaretçi yoğunluğun arttığı zaman bu mysql sorguların başına bela açmaya başlayacak.Online olan kişi sayısı 10-50-100 leri bulduğu zaman online kişi sayısı x 20 query aynı anda yapmaya başlayacaksınki eğer sistem başka query ler yapmıyorsa.Benim siteme fazla kişi girmez diyorsan bu yeterli.
    Hedefin daha ilerisi olduğunda memcache vb. kullanmaya başlamalısın.Hem bu dertten hemde mysql query lerden kurtulursun.
    evet aynen hocam farkındayım şimdlik sadece sistemi rayına sokup memcache kullanacağım.
  • 04-06-2013, 11:27:54
    #13
    Eğer sadece rastgele 8 video yu göstertmek istiyorsan bundan daha hızlı bir yöntem yoktur:

    SELECT column FROM table
    ORDER BY RAND()
    LIMIT 8;
    • SABOCES
    SABOCES bunu beğendi.
    1 kişi bunu beğendi.
  • 04-06-2013, 11:32:27
    #14
    Misafir adlı üyeden alıntı: mesajı görüntüle
    Eğer sadece rastgele 8 video yu göstertmek istiyorsan bundan daha hızlı bir yöntem yoktur:

    SELECT column FROM table
    ORDER BY RAND()
    LIMIT 8;
    500bin 1000 milyon gibi büyük bir tablodan rand kullanmak hata bence.
  • 04-06-2013, 11:33:10
    #15
    Misafir adlı üyeden alıntı: mesajı görüntüle
    Eğer sadece rastgele 8 video yu göstertmek istiyorsan bundan daha hızlı bir yöntem yoktur:

    SELECT column FROM table
    ORDER BY RAND()
    LIMIT 8;
    Sen yaşıyomusun :P
    Veri sayısı 300-500-5000 olduğunda sorun yok.Ama 500.000 üzerinde veri olduğunda bu sorguyu aynı anda 50 kişi yaptığında mysql den geriye bişey kalmaz.Yaşasın NoSql.
  • 04-06-2013, 11:37:48
    #16
    Üyeliği durduruldu
    order by gibi özellikler sql sayısı almak sql sorgusunda gereksiz terimler bulundurmak çok içerikli ve çok ziyaretçisi olan sitelerde daima sorun olacakdır.

    bu durumalrda en iyi çözüm ya hiç kullanmamak yada scripti ona göre optimize etmek, bu anlatacağım bir iki optimizasyonu bütün scriptte kullanmak daha rahat bir çalışma sağlar.

    örneğin ayarlar diye bir tablo tablosunda video_sayisi diye bir satır eklenir bu video_sayisi video ekleme ve silmelerde güncellenir böylece mysql_numrows sorgusu yapıp bütün satırları saymaktansa ayarlar tablosundan bir sql sorgusu ile veri çekmek daha kolaydır... ayrıca order by seçeneğini gerekli olmadıkça kullanmamak en iyisi olacaktır zira içeriği çok sitelerde yavaş çalışmasını sağlayacaktır..
  • 04-06-2013, 11:38:17
    #17
    Crash adlı üyeden alıntı: mesajı görüntüle
    Sen yaşıyomusun :P
    Veri sayısı 300-500-5000 olduğunda sorun yok.Ama 500.000 üzerinde veri olduğunda bu sorguyu aynı anda 50 kişi yaptığında mysql den geriye bişey kalmaz.Yaşasın NoSql.
    işte bende öyle düşünüyorum ama olabilecek en iyi yöntemi aradım, aradım bulamadıııııım
  • 04-06-2013, 11:46:14
    #18
    BLaH adlı üyeden alıntı: mesajı görüntüle
    500bin 1000 milyon gibi büyük bir tablodan rand kullanmak hata bence.


    dostum sen 100 milyon video'dan bahsediyorsun.

    rand() fonksyionu 5 milyon veriye kadar canavar gibi çalışır bundan emin ol.

    hele 1 milyon video datasına ulaş ondan sonra kaygılan