folder Tahribat.com Forumları
linefolder Asp - Php - Cgi - Perl
linefolder PHP İle Hizli Veritabani Islemleri



PHP İle Hizli Veritabani Islemleri

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    orde
    orde's avatar
    Kayıt Tarihi: 29/Eylül/2015
    Erkek

    Merhaba a dostlar,

    Saniyelik gelen 200 ile 4000 arasi veriyi mysql db de kontrol edip yoksa eklettiriyorum. Ama mukemmel yavas isliyor. 

    Dusundum ki ekliyim, coklu kayitlari sileyim. O da yaramadi.

    Hepsini nasil hizli bir sekilde ekleyebilirim, ve huncelleyebilirim ? ( PDO kullaniyorum, varsa daha hizli bir yontem db bile degisirim. )

    Tesekkurler. 

  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    CEO
    CEO's avatar
    Kayıt Tarihi: 28/Şubat/2009
    Erkek

    Php ve mysql konusunda bir bilgim yok ama mssql'de olsa benzersiz olmasını istediğim sütunları unic (bu yazılıştan emin değilim) sütun yapardım.

    Kayıt işlemlerini de try catch ile yapardım.

    Aynı kayıttan daha önce varsa catch bloğu çalışacağı için kaydetmeyecek, yoksa try komutu çalışacağı için kaydedecektir.

  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    orde
    orde's avatar
    Kayıt Tarihi: 29/Eylül/2015
    Erkek

    Mysql'de unique kullansam ise yarar mi acaba ? Yani soyle DB Kontrolu kastiriyor bende. Yani insert islemini devre disi birakinca da cok fark olmuyor performansta. Bu kontrolden kurtulmaliyim. Ama islemler de cok hizli olmali. 

  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    orde
    orde's avatar
    Kayıt Tarihi: 29/Eylül/2015
    Erkek

     

    iki kez tiklamisim.

    orde tarafından 26/Kas/15 18:07 tarihinde düzenlenmiştir
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    coder2
    coder2's avatar
    Kayıt Tarihi: 15/Mart/2007
    Erkek

    Hocam gelen verileri çektiğin yerden farklı şekilde çekmen mümkünse en mantıklısı o , onun dışında saniyelik gelen 200 ile 4k arası veriyi sorgutman hangi db olsa kasar. 

    Ya da seninde ddiğin gibi tüm kayıtları ekler sonra aşağıdaki sql koduyla kısa sürede benzersiz kayıtları silebilirsin

    CREATE TABLE Benzersizkayitlar as
    SELECT * FROM Tablo GROUP BY Sutun




    Önceleri Kızlar Utanınca Kızarırdı Şimdilerde Kızarınca Utanıyorlar..
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    cache
    cache's avatar
    Kayıt Tarihi: 01/Şubat/2014
    Erkek

    Framework kullanmak biraz daha rahat ettirebilir. Veritabani icin Redbeanphp kullanabilirsin hocam


    En iyisi olmadan önce, her zaman en kötüsü olmaz mı ?
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    redLine
    redLine's avatar
    Kayıt Tarihi: 16/Temmuz/2005
    Erkek

    Hız dediğin göreceli bir kavramdır belki de sunucunun donanımına göre optimum hızla çalışıyor olabilir daha fazla detay, daha fazla yardım seçeneği doğurur. Bütçen yeterliyse sunucunda SSD disk hatta bütçene göre raid konfigurasyonlar oluşturarak disk i/o'yu hızlandırabilirsin ek olarak önce kontrol ediyorsan her halukarda index kullanman gerekiyor. https://dev.mysql.com/doc/refman/5.5/en/optimization-indexes.html buradan index kullanımıyla ilgili detaylı bilgi bulabilirsin. İlgili işlemi gerçekleştirirken requestleri mvc'den geçirmen ek olarak sunucuya apache yükü eklenmesi demek mümkün olan minimum kodla işi halletmen senin yararına olacaktır. Minimum kod derken az kod yazmanı değil, az yoran kod demek istiyorum. https://github.com/nafigator/php-bench/tree/master/Tests burada bazı fonksiyonların testleri var (hızlı olması için include mu, require mi kullanmalı vs..) test ederken gelen requestleri farklı metodlarla almayı denemek de hızı arttırabilir. Örneğin veriyi json veya xml alman belki yararına olabilir test etmeni öneririm.

    Son olarak bu önerilerin hepsini anlık olarak request alman gerektiğini düşünerek yaptım elinde sabit bir veri var ve bunu işlemeye çalışıyorsan en mantıklı olan bunu gerekiyorsa excel yardımıyla sql verisi haline getirip bigDum PhpMyAdmin, veya direk komut satırından import etmen (http://dev.mysql.com/doc/refman/5.7/en/mysql.html) daha hızlı sonuç verecektir.

     


    fak yu
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    DesertSun
    DesertSun's avatar
    Kayıt Tarihi: 10/Eylül/2002
    Erkek

    Kuyruk protokolleri bunun için var windows sa msmq linux sa ki en iyisi rabbitmq kullan bir servis yaz kuyrugu okuyup db ye ekleyen bitti gitti veri kaybın olmaz 😉


    ::: REALHACKERS.NET ADMIN :::
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Realist
    Realist's avatar
    Kayıt Tarihi: 13/Nisan/2007
    Erkek

    unique index eklersen aynı olan sadece 1 tane kayıt olabilir database nde


    ..
  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    S2kucuk
    S2kucuk's avatar
    Banlanmış Üye
    Kayıt Tarihi: 06/Haziran/2015
    Erkek

    Problemin php probleminden çok veritabanı problemi senin. Kolay ve basit çözümleri anlatayım.

    1) Prepared Statement kullanırsan (PDO'dan kolaylıkla yapabilirsin) parsing derdinden kullanır hız kazanırsın.

    2) Autocommit i kapat. Her statementtan sonra PHP otomatik olarak single transaction başlatır ve statment sonrasında commit gönderir. Autocommit i önce kapatıp sonra transaction başlatıp insert işlemlerin bittikten sonra commit yaparsan bariz bir hız kazanacaksın.

    3) Mümkünse stored procedure yaz. Stored procedure doğrudan mysql server üzerinde çalışacağı için iş phpden çok mysql'e yıkılacaktır (ki olması gereken budur)

    4) Unique index kullanmak karşılaştırdığın değerler sayı ise mantıklı olabilir ancak text compare yapıyorsa çokta bir faydasını göreceğini zannetmiyorum. 

    5) Yapacağın işi RAM'de yapıp (memcache gibi bir uygulama sayesinde) en son veritabanına atabilirsin (veri büyüklüğünü bilmediğim için bir alternatif olabilir. Çok büyük verilerde işe yaramaz)

    6) @DesertSun' ın dediği gibi kuyruk protokolleri kullanıp işini doğrudan onlara yıkabilirsin. PHP' de bu tarz libraryler varmı bilmiyorum. Araştırmak lazım.

    Hadi hayırlı traşlar

     

  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    orde
    orde's avatar
    Kayıt Tarihi: 29/Eylül/2015
    Erkek

    @S2buyuk : Hocam butun onerilerin icin tesekkur ederim. Ozellikle arastiracagim. ( Bir cogunu bilmedigim icin. )

Toplam Hit: 1409 Toplam Mesaj: 11
php pdo