• 08-08-2009, 15:01:35
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    arkadaşlar merhaba
    öyle bi sorunum var ki cevabını hiç bir yerde bulamadım. bir sitenin bir db si vardı. kayıtlardan dolayı 2gb civarında. bir sql sorgusu 4-5 hatta sorgusuna göre 7-8 saniye sürüyor. bunu tablolara bölüp, her tabloyu ayrı bir db yapıp farklı server larda tutup mysql i rahatlatmak ve siteyi daha hızlı çalıştırmak istedik. fakat çift sorgularda takıldım. öyleki biri bir db de diğeri başka dbde iki tabloyu tek sorguda halletmem gerekiyor. bu sorguları bölme yoluna gittim, bu defa sayfa 60-70sn de açılmaya başladı. normalde 1-2 sn dürüyor.
    sorgu aşağıdaki gibidir. bunu nasıl çözebilirim?

    $getStoreUsers = mysql_query("SELECT count(a.id) AS c_id, u.id AS u_id FROM auctions a, users u WHERE  
    a.active=1 AND a.closed=0 AND a.deleted!=1 AND a.ownerid=u.id AND u.active=1 AND u.aboutpage_type=2 AND a.listin!='auction' GROUP BY u.id") or die(mysql_error());
  • 08-08-2009, 15:32:46
    #2
    Tek sorguda nasıl olacak ki? Her db için mysql_select_db ile veritabanı seçmek gerekir.
  • 08-08-2009, 17:15:15
    #3
    Üyeliği durduruldu
    join table işlemi yaptiginiz. farklı sunucularda bunu yapamazsiniz
  • 08-08-2009, 18:13:04
    #4
    sendetiklat adlı üyeden alıntı: mesajı görüntüle
    Tek sorguda nasıl olacak ki? Her db için mysql_select_db ile veritabanı seçmek gerekir.
    katılıyorum
  • 08-08-2009, 18:18:06
    #5
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Uzun, ama yapılabilir. Lakin istediğiniz tarzda bir performans almanız zor.
    DB'lerden birisine bir client yazın, öyle ki istendiğinde bir view tablosu yaratsın ve dışarıya yazsın.

    Diğer tarafta view tablosunu üreten dosyayı çağırın, tablosunu alın ve bununla join yapın.

    Ama dediğim gibi join ya da left join'deki performansı beklemeyin.
    Eğer illa istiyorsanız ikinci veritabanında bir tabloda diğer tablonun son halini tutar ve periyodik olarak sync edersiniz ama sync derken dikkat, tüm db'yi sync etmeyin
  • 08-08-2009, 18:24:52
    #6
    hasank84 adlı üyeden alıntı: mesajı görüntüle
    arkadaşlar merhaba
    öyle bi sorunum var ki cevabını hiç bir yerde bulamadım. bir sitenin bir db si vardı. kayıtlardan dolayı 2gb civarında. bir sql sorgusu 4-5 hatta sorgusuna göre 7-8 saniye sürüyor. bunu tablolara bölüp, her tabloyu ayrı bir db yapıp farklı server larda tutup mysql i rahatlatmak ve siteyi daha hızlı çalıştırmak istedik. fakat çift sorgularda takıldım. öyleki biri bir db de diğeri başka dbde iki tabloyu tek sorguda halletmem gerekiyor. bu sorguları bölme yoluna gittim, bu defa sayfa 60-70sn de açılmaya başladı. normalde 1-2 sn dürüyor.
    sorgu aşağıdaki gibidir. bunu nasıl çözebilirim?
    $getStoreUsers = mysql_query("SELECT count(a.id) AS c_id, u.id AS u_id FROM auctions a, users u WHERE  
    a.active=1 AND a.closed=0 AND a.deleted!=1 AND a.ownerid=u.id AND u.active=1 AND u.aboutpage_type=2 AND a.listin!='auction' GROUP BY u.id") or die(mysql_error());
    Mesajının tamamını şimdi okuma fırsatı buldum.

    Veritabanı farklı sunucular üstüne bu şekilde bölünmez. Google'da biraz (ingilizce) arama yapmanı tavsiye ederim.