folder Tahribat.com Forumları
linefolder Asp - Php - Cgi - Perl
linefolder 6 Milyon 300 Bin Kayit Olan Bir Mysql Tablosunda Hız Problemi..



6 Milyon 300 Bin Kayit Olan Bir Mysql Tablosunda Hız Problemi..

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    wh0
    wh0's avatar
    Kayıt Tarihi: 21/Temmuz/2008
    Homo

    merhaba arkadaslar,

    6 milyon 3 bin kayit olan bir mysql veri tabanindan tek bir kayit cekiyorum. php ile sorgulayinca sorgu sonucu 10 saniyeden fazla sürüyor... ayni sorguyu phpmyadmin de calistirinca ( Sorgu 0.6183 san.) sürüyor.. 

    sorgum :

    SELECT onerilen_doz FROM `hastalik_ilac` WHERE yil="2011" and bitkiid="6" and ilac_id = "6152" and hastalik_id="126" limit 1

    tablo yapisi :

    1 id int(11) Hayır Yok AUTO_INCREMENT Değiştir Kaldır Daha Fazla
    2 yil year(4) Hayır Yok Değiştir Kaldır Daha Fazla
    3 ilacgrupid int(11) Hayır Yok Değiştir Kaldır Daha Fazla
    4 bitkiid int(11) Hayır Yok Değiştir Kaldır Daha Fazla
    5 hastalik_id int(11) Hayır Yok Değiştir Kaldır Daha Fazla
    6 ilac_id int(11) Hayır Yok Değiştir Kaldır Daha Fazla
    7 onerilen_doz text utf8_turkish_ci Hayır Yok Değiştir Kaldır Daha Fazla
    8 has_sure text utf8_turkish_ci Hayır Yok Değiştir Kaldır Daha Fazla
    9 aciklama text utf8_turkish_ci Hayır Yok Değiştir Kaldır Daha Fazla  

    PHP KODU:

    include_once "config.php";
    global $db;

    if(isset($_POST['tip']) && $_POST['tip'] == 'firma')
    {
    $firma = $db->get_row('SELECT ilac_adi,ilacid,aktifmadde,aktifmaddeorani,firma FROM ilaclar WHERE ilacid = "'.$_POST['ilacId'].'"');
    $onerilen_doz = $db->get_var('SELECT onerilen_doz FROM `hastalik_ilac` WHERE yil="2011" and bitkiid="'.$_POST["bitki"].'" and ilac_id = "'.$_POST['ilacId'].'" and hastalik_id="'.$_POST["HastalikID"].'" limit 1');
    if(!$onerilen_doz){
    $firma->doz = 100;
    }else{
    $firma->doz = $onerilen_doz;
    }
    die(json_encode($firma));
    }
    ?>

     bunu nasil hizlandirabilirim? önerisi olan varmi?   

     

     


    🏴‍☠️Hi'dan gelen varır Who'ya, Hi'da onun adıdır Who'da...
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Hunter
    j4x
    j4x's avatar
    Kayıt Tarihi: 16/Temmuz/2005
    Erkek

    "Mysql de calistirinca" derken phpmyadmin i mi kastettin yoksa mysql command line mi ?

    Bir de o yazdigin sorgunun aynisiyla degistir php icinde olani post dan alma ne kadar surecek


    The king is bleeding.
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    wh0
    wh0's avatar
    Kayıt Tarihi: 21/Temmuz/2008
    Homo
    phpmyadmin evet. üst konuda soruyu tekrar düzelttim.*

    🏴‍☠️Hi'dan gelen varır Who'ya, Hi'da onun adıdır Who'da...
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    wh0
    wh0's avatar
    Kayıt Tarihi: 21/Temmuz/2008
    Homo
    POST http://localhost/****/dozver.php 200 OK 700ms // FIREBUG ile debug ettim. WITH(NOLOCK) gibi bi alternatifi warmidir acaba.

    🏴‍☠️Hi'dan gelen varır Who'ya, Hi'da onun adıdır Who'da...
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Buremba
    Buremba's avatar
    Kayıt Tarihi: 16/Haziran/2006
    Erkek
    Where yaptigin sutunlara indexin var mi?

    . . .. . ... .
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    wh0
    wh0's avatar
    Kayıt Tarihi: 21/Temmuz/2008
    Homo
    ben problemi düzelttim sagolun.. simdi 0.06 ms sürüyor...

    🏴‍☠️Hi'dan gelen varır Who'ya, Hi'da onun adıdır Who'da...
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Ercan
    Ercan's avatar
    Kayıt Tarihi: 04/Temmuz/2008
    Erkek

    WH0 bunu yazdı:
    -----------------------------
    ben problemi düzelttim sagolun.. simdi 0.06 ms sürüyor...
    -----------------------------

    nasıl yaptığını yazsaydın bare hocam


    IF YOU ARE NOT TİRED, YOU ARE NOT DOING IT RIGHT
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    PHP-SEO Developer
    Erdem
    Erdem's avatar
    Kayıt Tarihi: 04/Haziran/2002
    Erkek

    Öncelikle veri tabanını hazırlarken optimize olarak ayarlamamışsın.

    Yani id dışındaki sayısal değerlere neden int(11) çekiyorsun ki gerek yok. Bunun yerine tinyint() olarak değiştirebilirdin ik yaparken.

    Onerilen doz kısmınıda eğer büyük bir veri yoksa neden text yaptın ??? varchar 225 yapsan çok daha ii olurdi tabiki diğer yerlerin 

    Yine aynı zamanda sql sorgu tipin çok karışık bir çok veri çekmeye çalışıyorsun bundan dolayı karışık tablolamaları ayrı yerde yapsan daha fazla performasn alırdın.

    Daha sonra server yada makina seninse SSD hard disk takarsan performans uçar gider.

    Tablolamana bakıyorum.

    Örnek veriyorum en çok kullanılan ve bir daha tekrarlanmayan bitkiid gibi bir sutun`ü direk, unique gibi performans arttıran özellik ile tanımlamamışsın.

     

    Aynı zamanda   unique  == Eşsiz veriler varsa

                           index   == sadece 1 yada 0 dönüyorsa bu yapılır. 

                           fulltext == sadece yazı gibi

    gibi, bu yukarıdakilar sen veri tabanına bir şey eklediğinde bu özelliklere göre ekler ve performansı yüzde 20 30 arttırır.

     

    mesela san mysql_query(select * from abc where durum1iseengelli='1'); diye arattırğında ve 3 milyon sorgu varsa  6 7 saniye sürer.

    ama sen bunu index yapmış olsaydın ortama 2 3 saniyede dönerdi.

     

    bu anlattıklarımı mysql veri tabanı optimizasyonu diye araştırırsan bulabilirsin.

     

    Sana tavsiyem, veri tabanını bir daha bu özelliklere göre oluştur, diğer taraftaki bilgileri buraya aktar.

    performansının arttığını göreceksin.

     

    yazım yanlışlarım olabilir. yada eksik bildiğim yerler.

    affola, kolay gelsin


    Php for SEO nun ardından Php for Gcode (CNC)
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    wh0
    wh0's avatar
    Kayıt Tarihi: 21/Temmuz/2008
    Homo

    daha once pek fazla mysql ile ugrasmadigim icin(hatta ilk projem) bayagi sıkıntı idi. google den arastirip cozdum ben olayi. snipeTR bana gerek kalmadan guzelce anlatmis zaten. tesekkurler :)


    🏴‍☠️Hi'dan gelen varır Who'ya, Hi'da onun adıdır Who'da...
  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ThundeR
    ThundeR's avatar
    Kayıt Tarihi: 08/Mart/2007
    Erkek

    stored procedure kullanırsan oda hızlandıracaktır hocam

  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    DrKill
    DrKill's avatar
    Kayıt Tarihi: 10/Mart/2004
    Erkek

    WH0 bunu yazdı:
    -----------------------------

    daha once pek fazla mysql ile ugrasmadigim icin(hatta ilk projem) bayagi sıkıntı idi. google den arastirip cozdum ben olayi. snipeTR bana gerek kalmadan guzelce anlatmis zaten. tesekkurler :)


    -----------------------------

     

    Sonradan gelenlere yardımcı olmak amacıyla problemi nasıl aştığını tam olarak belirtirsen sevinirim. Burası forum sonuçta çok yardımcı oluyor çoğu insana.


    Bu imzayı her gördüğünüzde 4gb kotanızın 0,00000358559191226959228515625 azalmaktadır. Bilerek ve istenerek bu imza yapılmıştır. Amaç kotanızı sömürmektir
Toplam Hit: 2749 Toplam Mesaj: 14