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
    Amatör Üye
    masteryoda
    masteryoda's avatar
    Kayıt Tarihi: 15/Mayıs/2012
    Erkek
    ozgunlu bunu yazdı
    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 :/

    Nasıl çözdüğünü yazsaydın keşke başka birinin ihtiyacı olup yararlanabilir.
    insert i ve delete i gridin bağlı bulunduğu dataset ile yapmıyormusun farklı bir dataset ile mi yapıyorsun bir de her defasında o 505 bin datayı çekme ihtiyacı gerçekten gerekiyormu kbmmemtable bileşini ni bir incele bu tür yoğun işlemlerde kullanıldığını duymuştum

  2. 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ı
    ozgunlu bunu yazdı
    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 :/

    Nasıl çözdüğünü yazsaydın keşke başka birinin ihtiyacı olup yararlanabilir.
    insert i ve delete i gridin bağlı bulunduğu dataset ile yapmıyormusun farklı bir dataset ile mi yapıyorsun bir de her defasında o 505 bin datayı çekme ihtiyacı gerçekten gerekiyormu kbmmemtable bileşini ni bir incele bu tür yoğun işlemlerde kullanıldığını duymuştum

    Hocam sorunun cevabı spesifik olduğu için yazmadım.

    Ama devexpress de large scale için Grid Mode' u TRUE yapıyoruz ve parça parça çekiyor, eğer false ise tamamını çekiyor.

    Delete işlemini de DeleteFocused ile yaptım ama insert' in kodunu nasıl kuracağımı bilemedim, ulaştığım link : https://www.devexpress.com/Support/Center/Question/Details/A291

    Burada smartrefresh' i true yapın demiş ama herhangi bir çözüm sunmuyor (bana sunmadı).


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

    kendim 505 bin datalık bir örnek hazırlayıp deneyeceğim inş.

  4. 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ı

    kendim 505 bin datalık bir örnek hazırlayıp deneyeceğim inş.

    hocam local de değil yalnız remote bağlanıyoruz, yarın müsait olursan öğleden sonra teamden gösterebilirim


    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

    hocam o zaman çok normal karşılarım bunun grid le pek alakası olmaz sen o datayı locale bir çek dene ki o kadar datayı çekmenin mantığını hala anlayamadım örnek bir ilde yaşayan kişiler olsun o kadar datayı çekip üzerinde edit insert yaparken neden 505 bin kaydın 505 binine de ihtiyaç olsun.

  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Amatör Üye
    masteryoda
    masteryoda's avatar
    Kayıt Tarihi: 15/Mayıs/2012
    Erkek

    Firebird ibexpert ile 500.000 data generate  etim 35 alan var tabloda basitçe bir cari tablosu tüm datayı cxgride çekmesi 8 sn sürdü bence çok normal ve kabul edilebilir. grid modu formun create inde cxGrid1DBTableView1.DataController.DataModeController.GridMode:=True; yaptım ama filtrelemeyi kullanmak içinde https://www.devexpress.com/Support/Center/Question/Details/A133

    bu sayfadaki https://www.devexpress.com/Support/Center/Question/Details/A133  Data Controller's Filter.AutoDataSetFilter property value to True yaptım insert delete update işlemleri sn sürmedi tabloda örnek firmaid alanı var integer tanımlı cxgrid  filtrede 1268052942 aratım yine sn sürmedi.
    Bence datanı önce bir locale çek orada test et

  7. 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ı

    Firebird ibexpert ile 500.000 data generate  etim 35 alan var tabloda basitçe bir cari tablosu tüm datayı cxgride çekmesi 8 sn sürdü bence çok normal ve kabul edilebilir. grid modu formun create inde cxGrid1DBTableView1.DataController.DataModeController.GridMode:=True; yaptım ama filtrelemeyi kullanmak içinde https://www.devexpress.com/Support/Center/Question/Details/A133

    bu sayfadaki https://www.devexpress.com/Support/Center/Question/Details/A133  Data Controller's Filter.AutoDataSetFilter property value to True yaptım insert delete update işlemleri sn sürmedi tabloda örnek firmaid alanı var integer tanımlı cxgrid  filtrede 1268052942 aratım yine sn sürmedi.
    Bence datanı önce bir locale çek orada test et

    hocam birçok kişi aynı makinaya bağlanacak, local çalışması söz konusu olamıyor ne yazık ki. Insert işlemi hızlı oluyor fakat onu tabloda göstermek için Refresh yapıyorum, o da 1 datayı alacağı yerde hepsini çekiyor. O zaman da yavaş oluyor haliyle, yoksa gözlemlediğim kadarıyla db deki insert, update, delete işlemleri 1 saniyenin altında. Benim sorunum tabloyu güncelleme de

     

     

    --------

     

    Burdaki Refresh metodunu kullanıyorum : http://docwiki.appmethod.com/appmethod/1.16/libraries/en/FireDAC.Comp.Client.TFDQuery_Methods

    ve diyoki hepsini re-fetch eder.

    Refresh public Re-fetches data from the database to update a dataset's view of data.

    Devexpress de RefreshExternal diye bir metod var, onu yapınca da aynısını yapıyor ama ben sadece ilgili kısmı tabloya yansıtmak istiyorum.

    ozgunlu tarafından 25/Mar/16 09:15 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

    peki gerçekten o tüm tabloyu çekmenin maksadı nedir en son yüz kayıt çekilse yada beli bir filtre sadece bugünkü kayıtlar gibi çekilse ne olacak 550 bin data ne bir ekrana sığar nede bir insan baktığında hepsini görebilir normal dbgrid kullandığında da aynı sorun varmı veya ehlib inde bir gridi var bunda da test etinmi 550 bin data sürekli göstermek için pek mantıklı gelmiyor.

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

    Çözüm :

    Firedac, devexpress data büyüdükçe ağırlaşmaya başlıyor. Temel sebebi, devexpress önce tüm datayı ram' e yüklüyor ardından burdan servis ediyor ve herhangi bir update işleminde listener' lara sadece update bilgisi geliyor. Hangi datanın update olduğunu bilmediği için tüm datayı tekrar çekiyor.

    Bu sıkıntıyı gidermek için, 2 opsiyon var. Birincisi grid mode' u TRUE yapmak diğeri ise smartrefresh parametresini TRUE yapmak. Smartrefresh bende çalışmadı.

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

     

    Grid Mode' u TRUE yaptığınızda sorting, grouping, summary calculation ve filtering işlevini yitiriyor. Bunlar için : https://www.devexpress.com/Support/Center/Question/Details/A133

    Yukardaki linkte çözümler yardımcı oluyor.

    Sorting için , https://www.devexpress.com/Support/Center/Question/Details/A741 bu linkteki kod parçasını onSortingChanged event' ine yazıyoruz ama bu ADO ile yazılmış. Firedac için kodu bir parça convert etmeniz lazım.

    Buradan @masteryoda ve @WH0 ' ya  ve tabiki @HolyOne' a sevgilerimi iletiyorum :D

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

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