folder Tahribat.com Forumları
linefolder Delphi - Pascal
linefolder Firedac Update Çok Yavaş (Çözüldü)



Firedac Update Çok Yavaş (Çözüldü)

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ozgunlu
    ozgunlu's avatar
    Banlanmış Üye
    Kayıt Tarihi: 11/Kasım/2011
    Erkek

    Delphi, FireDac ile veritabanı işleminde update işlemi 10 saniyeyi falan buluyor. Dev Express Grid yapısı varmış altında, ordan otomatik bağlıymış firedac' a.

    Ben de tam hakim değilim konuya da mysql workbench ve php ile aynı sorgu 1 saniyenin altında sürüyor. 

    Acaba neden kaynaklanıyor olabilir ? Bildiğiniz kronik bir problemi var mıydı bunların ? 

     

    Yaklaşık 505 bin data var ve data sayısı arttıkça daha da yavaşlıyor. Tek tablodan işlem yapılıyor, id' ye göre update ediliyor. Join falan kullanılmıyor.

     

    ozgunlu tarafından 30/Mar/16 09:27 tarihinde düzenlenmiştir

    Hello, i am nothing. I come from Neverland.
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Tarikat Şeyhi
    HolyOne
    HolyOne's avatar
    Kayıt Tarihi: 01/Haziran/2002
    Erkek

    Bence sayfalama yapmadan bütün veriyi çekip onun ilk 100 kaydını gösteriyorsun


    Nush ile uslanmayanı etmeli tekdir, Tekdir ile uslanmayanın hakkı kötektir!
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Amatör Üye
    masteryoda
    masteryoda's avatar
    Kayıt Tarihi: 15/Mayıs/2012
    Erkek

    cxgridin grid modunu false yapıp bir dene yine bir yavaşlık var ise normal dbgrid nesnesine bağlayıp test et

  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ozgunlu
    ozgunlu's avatar
    Banlanmış Üye
    Kayıt Tarihi: 11/Kasım/2011
    Erkek
    HolyOne bunu yazdı

    Bence sayfalama yapmadan bütün veriyi çekip onun ilk 100 kaydını gösteriyorsun

    Bunun update e ne gibi etkisi oluyor delphi de? Bu arada galiba oyleymis, yarin tam ogrenirim hocam. Kodu ben tasarlamadim

    @masteryoda yarin kodlara bakinca denicem hocam onerilerini tesekkur ederim

    ozgunlu tarafından 21/Mar/16 17:38 tarihinde düzenlenmiştir

    Hello, i am nothing. I come from Neverland.
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Amatör Üye
    masteryoda
    masteryoda's avatar
    Kayıt Tarihi: 15/Mayıs/2012
    Erkek

    dataset open ile fetchall farklı çalışır select sql inde lazım olmayan fieldlar varsa onları yazma select * from yerine  select field1,field2 from table where field1=---- gibi olsun
    where şartında çok kullandığın field varsa ona index tanımlaman performans sağlar.

  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ozgunlu
    ozgunlu's avatar
    Banlanmış Üye
    Kayıt Tarihi: 11/Kasım/2011
    Erkek

    Devexpress gridview hepsini ram' e çekiyormuş, sonra update olunca hangisinde olduğunu bilmediğinden her seferinde tekrar komple çekiyormuş datayı tablodan.

    O yüzdenmiş yavaşlık, Grid Mode diye birşeyi var. Onu true yapın demiş. Onu true yapınca parça parça çekiyor, sıkıntı gitti ama bu sefer de sorting, grouping, filtering gibi özelliklerden feragat etmek zorunda kaldım.

    Ama asıl mesele şu ki; grid mode false iken (yani update 10 saniye iken) aynı satır üzerinde 2 kere işlem yapabiliyordum, şimdi onu true yapınca aynı satırda iki kere işlem yapınca 2. yi yapamıyorum. İlla başka bi satıra tıklamam gerekiyor.

    Acaba sebebi ne olabilir ? @HolyOne @masteryoda @tümdelphiciler :(

     

    Debug ettim, metoda girmiyor anasını satiyim. Ama diyelim ki o satırda güncelleme yaptım sonra başka satıra bastım ama hiç birşey yapmadım. Sonra geri döndüm güncelleme yaptım, o zaman çalışıyor.

    Ama ve lakin, o satırda güncelleme yaptım diyelim, sonra tekrar bastım güncellemeye yine değiştirdim, 2. yaptığımı yapmıyor. Metoda gelip atlıyor debug da. Yokmuş gibi davranıyor :@

    Acaba dedim yavaş yazıyor da lock olduğundan mı yapmıyor, sleep koydum araya 3-5 saniye ama sonuç değişmedi.

    ozgunlu tarafından 22/Mar/16 15:51 tarihinde düzenlenmiştir

    Hello, i am nothing. I come from Neverland.
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ozgunlu
    ozgunlu's avatar
    Banlanmış Üye
    Kayıt Tarihi: 11/Kasım/2011
    Erkek

    Adam böyle demiş, niye böyle saçma bir çalışma mantığı var anlamış değilim.... neyse şu smartrefresh olayı ben de yemedi. Bunu 9 yıl önce yazmış, altına yorum yazmaya ya da başlık açmaya utanıyorum :(

    The ExpressDataController (the data processing core of our components) supports different data processing modes. When it is in default data loading mode (.DataController.DataModeController.GridMode = False), it loads the entire amount of data into memory. This obviously requires significant time for huge amounts of data. Editing data in your GridView or updating its underlying dataset from external modules forces the dataset to send a DataChanged notification to all its listeners (linked data controls). When the DataController receives such a notification, it reloads ALL records from the underlying dataset. This is by design, because it's impossible to determine which particular records have been modified.

    In your situation, you can activate the DataController.DataModeController.SmartRefresh option of your GridView. This way, the DataController reloads only the modified record when posting changes. However, this works only if your modify data via the corresponding GridView. Editing data from outside the GridView still requires you to reload all records.

    Another solution is to switch the DataController to grid mode, when it works as the standard TDBGrid. I recommend that you first refer to the ExpressQuantumGrid's documentation for detailed information about its data processing modes, their advantages and requirements. In particular, read the "Grid Mode" topic.

    If you wish to use grid mode, try using the techniques described in the following Knowledge Base article:

     "How to implement features specific to the default loading mode when the View (Data Controller) works in grid mode"
     Article ID: A133 (https://www.devexpress.com/kb=A133)

    Thanks,
    Serge

     

    https://www.devexpress.com/Support/Center/Question/Details/B92991

     

    ozgunlu tarafından 22/Mar/16 15:58 tarihinde düzenlenmiştir

    Hello, i am nothing. I come from Neverland.
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Amatör Üye
    masteryoda
    masteryoda's avatar
    Kayıt Tarihi: 15/Mayıs/2012
    Erkek

    datacontroller-options-dcoimmediatepost bunu true yapıp denermisin birde daha açık yazarsan tam olarak yapmak istediğini örnek gride tutar diye bir alanın var sen bu alana 15 yazıp entera bastığında güncellemiyormu ne yapıyor.

  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ozgunlu
    ozgunlu's avatar
    Banlanmış Üye
    Kayıt Tarihi: 11/Kasım/2011
    Erkek
    masteryoda bunu yazdı

    datacontroller-options-dcoimmediatepost bunu true yapıp denermisin birde daha açık yazarsan tam olarak yapmak istediğini örnek gride tutar diye bir alanın var sen bu alana 15 yazıp entera bastığında güncellemiyormu ne yapıyor.

    yok hocam, menüden birşey seçip slider ile durumunu değiştiriyorum, ilk seferde değiştiriyor ikincisinde değiştirmiyor. ikincisinde değiştirebilmesi için önce başka rowa tıklayıp sonra geri tıklamam gerekiyor.


    Hello, i am nothing. I come from Neverland.
  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Amatör Üye
    masteryoda
    masteryoda's avatar
    Kayıt Tarihi: 15/Mayıs/2012
    Erkek

    Bir örnek olsa daha rahat anlaşılırdı. böyle şu demek çok zor.

  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ozgunlu
    ozgunlu's avatar
    Banlanmış Üye
    Kayıt Tarihi: 11/Kasım/2011
    Erkek
    masteryoda bunu yazdı

    Bir örnek olsa daha rahat anlaşılırdı. böyle şu demek çok zor.

    hocam onu çözdüm. Şimdi şöyle bir sıkıntı var, ben TFDQuery' i refresh ediyordum her insertion ya da delete işleminden sonra ama bu tüm tabloyu re-fetch ettiğinden oralarda da hayvan gibi yavaşlıyor.

    Bu devexpress abimizin Grid Mode True' sunda bu insertion ve deletion işlemlerini GridTable' a nasıl yansıtabilirim ?

     

    Edit: Soru içinde soru gibi oldu ama :/

    ozgunlu tarafından 24/Mar/16 17:19 tarihinde düzenlenmiştir

    Hello, i am nothing. I come from Neverland.
Toplam Hit: 7866 Toplam Mesaj: 20
delphi yavaş firedac