ADO Ve BDE'nin bellekten kullanımı arasında buyuk fark varmı

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
dtgb
Üye
Mesajlar: 175
Kayıt: 07 May 2004 10:02

ADO Ve BDE'nin bellekten kullanımı arasında buyuk fark varmı

Mesaj gönderen dtgb »

Merhaba arkadaslar
daha once de degindigim bir konu vardı. Ado nesnesini kullanarak SQL servera bağlanıyorum fakat Table nesnesinin activasyonunu true yaptıgım zaman 190 MB ramden kullanmaya basşlıyor tablomdaki kayıt sayım 180000 civarında. bu olaya bi cozum bulamadım sorunun adodan yada ado ayarlarımdan olabilecegini dusunerek BDE kullanarak baglantı yaptım ilginctir ramdden sadece 10 mb falan kullandı.
Bu konuyla ilgili bilgisi olan arkadas varsa eger bilgi verebilirse sevinirim, ADOda bu olayı cozmemin bir yolu yok mu?
poshet303
Üye
Mesajlar: 235
Kayıt: 26 Eki 2005 01:15

Mesaj gönderen poshet303 »

Merhaba;

Bu yazım tümüyle tahminler üzerine kurulu olacak. Yani biraz atacağım izninizle;

ADO dan tiksinen biri olarak ADO yu sadece mecburi olarak ASP de kullandığı belirtmeliyim.

Microsoft genelde RAM i çok seven bir şirket. Veriabanlarında her şeyi RAM e yükleyerek performans artışı sağlamaya çalışıyorlar. Daha önce forumda çok tartışıldı Firebird ile MS SQL Server ın RAM kullanımı konuları.

Eğer siz TTable yada onun türevi bir sınıfla Tablonuza erişiyorsanız. ADO tüm tablo kayıtlarını belleğe yüklemeye çalışıyor olabilir (yüksek performans kaygısı). BDE ise optimize edilmiş değişik bir imleç kullanımı esasına dayanır yani tablonun tüm kayıtlarını alıp getirmez. Esasında ADO daha çok sunucu mimari için tasarlanmış olsa gerek. Haliyle ADO ile çalışırken SQL sorguları kullanmalı (yani TQuery yada türevleri ile veritabanına erişmeli) ve sadece ihtiyaç duyulan kayıtları sorgulamalı. Yoksa sizin sorununuzun başa gelmesi kaçınılmaz.



poshet303 ten sallamalar dinlediniz. hatalardan elbette ben sorumluyum.
Kullanıcı avatarı
dtgb
Üye
Mesajlar: 175
Kayıt: 07 May 2004 10:02

Mesaj gönderen dtgb »

Anladıgım kadarıyla
ADO nesnesinin properties kısmında herhangi bir ozelligi yok ramden kullanımını azaltabilmek adına. anlasılan ado ile olmayacak bu is...
ikra
Üye
Mesajlar: 901
Kayıt: 28 Nis 2005 01:26
Konum: Simdilik Topragin Üstü

Mesaj gönderen ikra »

poshet303 ten sallamalar dinlediniz. hatalardan elbette ben sorumluyum.
abi cok mütevazisin

:D :) :shock: :lol: :wink:
kıdemsiz üye
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7604
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

1. BDE'yi mümkün olduğu kadar kullanmayın. Mümkünü şudur: daha önce proje hep BDE ile yapılmıştır, değiştirmesi çok zordur. BDE ile devam edilir.

2. SQL Server kullanıyorsanız ADO'yu tercih edin, ADO kullanın.

3. BDE'yi mümkün olduğu kadar kullanmayın.

Kolay gelsin.
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7604
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

poshet303 yazdı:Merhaba;

Bu yazım tümüyle tahminler üzerine kurulu olacak. Yani biraz atacağım izninizle;

ADO dan tiksinen biri olarak ADO yu sadece mecburi olarak ASP de kullandığı belirtmeliyim.

Microsoft genelde RAM i çok seven bir şirket. Veriabanlarında her şeyi RAM e yükleyerek performans artışı sağlamaya çalışıyorlar. Daha önce forumda çok tartışıldı Firebird ile MS SQL Server ın RAM kullanımı konuları.

Eğer siz TTable yada onun türevi bir sınıfla Tablonuza erişiyorsanız. ADO tüm tablo kayıtlarını belleğe yüklemeye çalışıyor olabilir (yüksek performans kaygısı). BDE ise optimize edilmiş değişik bir imleç kullanımı esasına dayanır yani tablonun tüm kayıtlarını alıp getirmez. Esasında ADO daha çok sunucu mimari için tasarlanmış olsa gerek. Haliyle ADO ile çalışırken SQL sorguları kullanmalı (yani TQuery yada türevleri ile veritabanına erişmeli) ve sadece ihtiyaç duyulan kayıtları sorgulamalı. Yoksa sizin sorununuzun başa gelmesi kaçınılmaz.



poshet303 ten sallamalar dinlediniz. hatalardan elbette ben sorumluyum.
Fikriniz olmayan konularda atmak çokta iyi birşey değil, insanları yanlış bilgilendirebilirsiniz :!:

ADO'yu ben de sevmem ama SQL Server kullansam ADO'yu tercih ederim. İkisi ayrı şeyler.

Kolay gelsin.
Kullanıcı avatarı
dtgb
Üye
Mesajlar: 175
Kayıt: 07 May 2004 10:02

Mesaj gönderen dtgb »

Mustafa Bey bende ADO kullanmak istiyorum fakat programı calıstırdıgımda ramden bu karda kullanması normal mi??
ADO table nin activasyonunu True yapıyorum 180 mb ramden kullanmaya basşlıyor. Bunun bir çözümü olmalı .
Yaptıgım proje su:
SQL serverda hazırlanmıs ve kayıt sayısı yaklkasık olarak 190000 olan bir tabloya baglanıp kayıtları gormek ve degisiklik yapmam gerekecek.
Siz olsanı boyle bir projeyi ramden daha az kullanacak şekilde nasıl yapabilirdiniz?
ikut

adotable yerine adoquery kulanın

Mesaj gönderen ikut »

hepsi bu
turkcanfidan
Üye
Mesajlar: 380
Kayıt: 31 Eki 2005 03:26

Mesaj gönderen turkcanfidan »

Senin sorununun Query kullanılması gereken yerde table kullanman. 190bin kayıt için table kullanılır mı? Table kullanmak için 30-40 kaydı geçmeyen tablelar için kullanabilirsin. ADOQuery kullanmalısın ve sadece gerekli kayıtları çekmelisin. 190bin kayıdı getiripte ne yapılabilirki?
Kullanıcı avatarı
tuanna
Üye
Mesajlar: 582
Kayıt: 06 Ara 2004 05:01
Konum: Ankara
İletişim:

Mesaj gönderen tuanna »

dtgb yazdı:Mustafa Bey bende ADO kullanmak istiyorum fakat programı calıstırdıgımda ramden bu karda kullanması normal mi??
ADO table nin activasyonunu True yapıyorum 180 mb ramden kullanmaya basşlıyor. Bunun bir çözümü olmalı .
Yaptıgım proje su:
SQL serverda hazırlanmıs ve kayıt sayısı yaklkasık olarak 190000 olan bir tabloya baglanıp kayıtları gormek ve degisiklik yapmam gerekecek.
Siz olsanı boyle bir projeyi ramden daha az kullanacak şekilde nasıl yapabilirdiniz?
kardeşim ayptığın işlemlerin aynısını bir de bde ile yap bakalım ne olacaak...
Siz hayal edin...Biz yapalım TuannaSoft...
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7604
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

ADO kullandım ben, ama bu kadar ramden yediğini hatırlamıyorum. ADO için en güzeli ADODataset kullanmanız. AdoTable geriye doğru uyumluluk içindir, Kullanmanızı tavsiye etmem.

Kolay gelsin.
Cevapla