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

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

Adam byle demiş, niye byle 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 supports different data processing modes. When it is in default data loading mode , 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 . 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 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.

Bence sayfalama yapmadan bütün veriyi çekip onun ilk 100 kaydını gsteriyorsun 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.

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.

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

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ı sz konusu olamıyor ne yazık ki. Insert işlemi hızlı oluyor fakat onu tabloda gstermek için Refresh yapıyorum, o da 1 datayı alacağı yerde hepsini çekiyor. O zaman da yavaş oluyor haliyle, yoksa gzlemlediğ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.

masteryoda bunu yazdı Bir rnek olsa daha rahat anlaşılırdı. byle ş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

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 gsterebilirim Hello, i am nothing. I come from Neverland.

Bence sayfalama yapmadan bütün veriyi çekip onun ilk 100 kaydını gsteriyorsun Nush ile uslanmayanı etmeli tekdir, Tekdir ile uslanmayanın hakkı ktektir!

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.

Bir rnek olsa daha rahat anlaşılırdı. byle ş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.

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 olsunwhere şartında çok kullandığın field varsa ona index tanımlaman performans sağlar.

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 dndü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.

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

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 grebilir normal dbgrid kullandığında da aynı sorun varmı veya ehlib inde bir gridi var bunda da test etinmi 550 bin data sürekli gstermek için pek mantıklı gelmiyor.

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

ozgunlu bunu yazdı masteryoda bunu yazdı Bir rnek olsa daha rahat anlaşılırdı. byle ş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 . Hello, i am nothing. I come from Neverland.

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.

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