server client sistemlerinin hızlı olması için yöntemler?

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
metemete
Üye
Mesajlar: 422
Kayıt: 21 Mar 2004 12:30
Konum: samsun
İletişim:

server client sistemlerinin hızlı olması için yöntemler?

Mesaj gönderen metemete »

1.Yöntem
ibdataset1 : select * from hareket
dbedit
ibdateset1.open

2.Yöntem
ibdateset1 : select * from hareket
dbgrid
ibdataset1.open


1. yöntemle 2.Yöntem arasındaki fark olarak

a) 1.yöntemde tüm kayıtları ekrana getirdiğine göre;
2.yöntemde ile ilk kayıt ekranda görülüyor
fakat dataset1.open dediğimizde tüm kayıtlarımı okuyor?

b) eğer her iki yöntemdede tüm kayıtları database den okuyorsa
1.yöntem için gereksiz, database i zorlamıs oluruz.bunun yerine ne yapmak lazım.

c) bu merakım server client programda 1. yöntemi kullanmam gerektiğinde serverdakı database i her client tüm kayıtları gereksiz okumaya calısarak sistemi kasacakmıdır??
meron06
Üye
Mesajlar: 393
Kayıt: 15 Eki 2005 04:23

Mesaj gönderen meron06 »

dataset i open edince tüm kayıtlar okunmaz ki .sadece gride nekadar kayıt sığıyorsa o kadar kayıt okunur.
Kullanıcı avatarı
metemete
Üye
Mesajlar: 422
Kayıt: 21 Mar 2004 12:30
Konum: samsun
İletişim:

Mesaj gönderen metemete »

peki dbedit kullanırsan sadece 1 kayıtmı okur.yoksa database in tamamını okuyup dbeditle 1 tanesinimi gösterir?
bunu nasıl test edebiliriz?
meron06
Üye
Mesajlar: 393
Kayıt: 15 Eki 2005 04:23

Mesaj gönderen meron06 »

yanlış bilgi vermek istemiyorum ama .dbbileşeninin alacağı kadar kayıt çekiliyor diye biliyorum.ama bildiğim birşey var.orda örneğin query i open yaptığımız zaman neye bağlı olursa olsun tüm kayıtları çekmediği.query den tüm kayıtları çekmek için fetchall yapmak gerekiyor.ancak bu durumda tüm kayıtları serverdan çeker.
Kullanıcı avatarı
metemete
Üye
Mesajlar: 422
Kayıt: 21 Mar 2004 12:30
Konum: samsun
İletişim:

Mesaj gönderen metemete »

doğru söylüyorsun
dataset1.open den sonra
showmessage(intostr(dataset1.recordcound))
yaparsak anlarız sanırım
Kullanıcı avatarı
metemete
Üye
Mesajlar: 422
Kayıt: 21 Mar 2004 12:30
Konum: samsun
İletişim:

argem :)

Mesaj gönderen metemete »

evet şimdi aklıma takılan bu sorulardan su sonuclar cıkarttım.

a) ilk ibdataset kullanmya basladıgımda nasıl olur demiştim ibdataset.recorcount doğru çalısmıyor..sonra forumda IBDataSet1.FetchAll kullanın denılmıstı.ama şimdi anlıyorum neden böyle olduğunu.

b) query1.open query1.recorcount dedıgımızde databesın gercek sayısını veriyor.yani tüm veriyo databaseden okuyoarak ağ trafiğini yoruyor.

c) ibdataset1.open ibdataset.recorcount dediğimizde ve bağlandısı dbedit için ise sonuc=1 grid ise ekranda görülen satır kadardır sonuc

d) yani ibdataset tüm veriyi database den okuyarak yormuyor sadece kullandıgın edit yada grid bileseni ne göre ekranda göründüğü kadarını cekıyor

e) bu durumda iki yada cok katmanlı database için kullanılan ibdataset bileşenin özelliğide server client için özenle tasarlanmış diyorum.

f) bunun haricinde network için kullanılmaya calısan tek katmanlı database ler (acces,paradox,dbase vs.) kullandığımız bilesenler (table,query).open yaptıgımızda her client serverdan tüm kayıtları okuyarak ağ trafiğini ve sistemi kasacaktır.

g) sonuc olarak network ortamları için tek katmanlı database kullanmak en büyük hata demekmiş
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Güzel özetlemişsiniz :wink:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Cevapla