Firebird - İnternet - Hız

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ı
mikser
Üye
Mesajlar: 120
Kayıt: 30 Haz 2003 09:54
Konum: Ankara

Firebird - İnternet - Hız

Mesaj gönderen mikser »

FireBird de internet üzerinden erişilen bir vt de 13000 kaydın oldugu bir dosyayi okumak yaklaşık 30 sn sürüyor. bu süre normal midir?

daha fazla hız için neler yapılabilir?

dosya yapısı aşagıdaki gibi.

Kod: Tümünü seç

CREATE TABLE DOSYA1 (
    ALAN1     VARCHAR(15) NOT NULL COLLATE PXW_TURK,
    ALAN2   VARCHAR(25) NOT NULL COLLATE PXW_TURK,
    ALAN3  DATE NOT NULL,
    PDR       INTEGER,
    PR        INTEGER,
    DR        INTEGER,
    IR        INTEGER,
    WR        INTEGER,
    BR        INTEGER
);
ALAN1, ALAN2, ALAN3 index alanları.
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Kullandığın hattın bandwith ine göre bu hız tabiki değişecektir. Fakat anlamadığım tüm kayıtları okumaya neden ihtiyaç duyuyorsunuz :?: İstediğiniz sonucu Stored Procedure lerle de çok daha hızlı alabilirsiniz :idea:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

Evet Recep Abi'nin dediği gibi amaca göre okuma yöntemini planlamak lazım... Size lazim olan gerçekten tablonun tamamı ise o başka ama sadece belirli kayıtlar ya da belirli değerler ise SP kullanabilir veya uygun Select cümleleri kullanabilirsiniz.... Delphi tarafinda eğer bir dataset kullanılacaksa tabi kesinlikle Table degil Query componentleri kullanmalisiniz.
Kolay gelsin...
* http://www.fahrettin.org Manzara Fotoğraflarım... :)
* http://delphiturkiye.gunduz.info Seminerler... ;)
* http://www.hakmar.com.tr Kalite bir haktır... 8)
Kullanıcı avatarı
mikser
Üye
Mesajlar: 120
Kayıt: 30 Haz 2003 09:54
Konum: Ankara

Mesaj gönderen mikser »

ibdataset, firebird 1.5 kullanıyorum.

sistem şu sekilde calisiyor.

istanbul da bi server var. vt bu server da.. baska (bursa, izmir, adana,trabzon v.s..) yerlerden bu server daki vt ye kayıt yapiliyor siliniyor ekleniyor v.s...

10 dan fazla cllient var. simdi dbgridde kayıtlar gösteriliyor. mesela kullanıcı dbgridde ctrl+end tusuna bastiginda en son kayda gitmek icin 30 sn den fazla bekliyor...

dosyadaki tüm kayıtların okunması sart...

buna ne gibi bir yöntem izlenebilir.
raporlarda sp mi view mi kullanmak daha hızlı olur.

özellikle kayıt arama işini nasıl hızlandırabilirim.

hız için neler yapabilirim.
bu konuda tecrübesi olan arkadaslar yardımcı olursa coksevinirim.

herkese tesekkurler.
oguzozturk74
Kıdemli Üye
Mesajlar: 574
Kayıt: 01 Şub 2004 12:29
Konum: Erdemli - MERSİN

Mesaj gönderen oguzozturk74 »

View ve SP farklı seyler, bu farkı seminerleri izlerseniz daha kolay anlayabilisriniz.
Sorguları hızlandırmak için ise tabi ki SP kullanmanız gerekir. Niye SP
kullanmanız gerektiğini de yine seminerleri izleyerek anlayabilirsiniz . :wink:

Kolay gelsin...
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Mesaj gönderen sadettinpolat »

30 saniye 13000 kayıt için bence makul bir süre
ibdataseti open etmek ne kadar sürüyor ?
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/
Kullanıcı avatarı
mikser
Üye
Mesajlar: 120
Kayıt: 30 Haz 2003 09:54
Konum: Ankara

Mesaj gönderen mikser »

IBDataBase nin bağlanması local kadar hızlı.. bir sn bile sürmüyor. Bağlantı da sorun yok.

IBDataSet in açılma süresi de local kadar hızlı. (Eger DBGrid de kayıtlar gösteriliyorsa DBGride sığan kayıtlar fetch ediliyor. Gridde ctrl+end dediginizde 30 sn kadar bekliyor)

Post, Update, Delete, Insert işlemlerinde de hız da sorun yok.

Ancak 10 000 ve üzeri kayıt sayısı olan dosyaların bastan sona okunması sure olarak 30 sn sürüyor...
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

Bence sizin Grid Mantığında Değişikliğe gitmeniz lazım. Yanıo Desktop bir Grid Componentini Internet Üzerinden kullanacak şekilde ayarlamamalısınız.

Bugün 10,000 Yarın 100,000 Olunca ne olacak?

Firebird'den öte Internet hızınızla bağlı bir şey. Bence Grid Mantığını farklılaştırın derim ben !!!!

Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

Butun kayıtları gorebilmek ayrı butun kayıtları bir anda clienta cekmek ayri...

Soyle bir yontem olabilir... Tepede bir takı kriterler olur ve alttaki grid o kriterlere gore uyan kayıtları bu 13000 kayıt icinden getirir... Boylece bir anda butun kayıtları listelemek zorunda kalmazsınız... Tabi yapı uyarsa... Ayrıca

Kod: Tümünü seç

Select top n ...
kullanarak ilk 10, 50, 100 kaydı default olarak geiterbilirsiniz... Sona gitmesi sorun olmaz... Ama sona gitmesi şartsa da siralama kriterini ters vererek ilk 50 kaydi alabilirsiniz...

Bende de bu tarz bir yapı var. Rezervasyon listesini goruyor kullanıcı... Ama yukarıda rezervasyon no araligi, acente noi tarih vs... gibi bir cok kriter var bunları secerek gelen kayıt sayısını isine yarayacak kayıtlar yonunde azaltıyor...

Kolay gelsin...
* http://www.fahrettin.org Manzara Fotoğraflarım... :)
* http://delphiturkiye.gunduz.info Seminerler... ;)
* http://www.hakmar.com.tr Kalite bir haktır... 8)
Kullanıcı avatarı
kadirkurtoglu
Üye
Mesajlar: 748
Kayıt: 22 May 2005 01:20
Konum: Uzakta Görünen Tepeden...

Mesaj gönderen kadirkurtoglu »

merhabalar. admin ve diğer kıdemli arkadaşlar da çözüm bulmaya çalışmışlar. ancak benimde burda kafama takılan arkadaşın ısrarla tablonun tamamını okuması lazım, ve ctrl + end tuşlarıyla son kayda 30 sn de ulaşıyor derken burda çalışan kod bloğunu kimse sormuyor. yani tablo tarama işlemi. kısacası ben mikser arkadaşın burda vt tamamını taraması gerekiyor dan kastını anlamadım. bu bağlamda mikser arkadaşım 30 sn süren kod bloğunu yollarsa belki farklı bir yol önerimiz olailir diye düşünüyorum.
Bir mum, yanındaki mumları tutuşturmakla,
ışığında hiç bir şey kaybetmez.

Mevlana

OS win.10, IDE Delphi 10.3, RDBMS Firebird and MSSQL, BROWSER Chrome
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

Bir kod yok sanıyorum...
Gridde en alta gitmek isteyince grid butun kayıtları client tarafa çekmiş oluyor... ozellikle query de kesin boyle.... Table da tam emin degilim...
* http://www.fahrettin.org Manzara Fotoğraflarım... :)
* http://delphiturkiye.gunduz.info Seminerler... ;)
* http://www.hakmar.com.tr Kalite bir haktır... 8)
Kullanıcı avatarı
mikser
Üye
Mesajlar: 120
Kayıt: 30 Haz 2003 09:54
Konum: Ankara

Mesaj gönderen mikser »

tablonun tamamının okunması demekten kastımda şu;
kullanıcı bir formu acti. 13 000 kayıtlı dosya ya kayıt girecek silecek düzeltecek v.s... dosyayı açıyorsunuz.. formu show ediyorsunuz. bir kayda konumlanmak zorundasınız. (tersden sıralatıp son kayda veya normal sıralatıp ilk kayda. burası önemli degil) kullanıcı arama yapiyor (duzeltecegi kaydı bulmak icin mesela veya silecegi kayıt için... bu arama işide yavas ayrıca)

simdi kullanıcı son kayda gidebilir.. ilk kayda gidebilir... 1586 ıncı kayda gidebilir. bu durumda tablonun tamamen okunması gerekiyor.

fahrettin hocamın dedigi gibi dbgridde bir kod yok... ctrl+delete nasıl kaydı siliyorsa ctrl+end tusuda en son kayda gidiyor...

IBDataset.Last demekle aynı.

sonucda problem kayıtların fetch edilmesiyle ilgili...

bu konuda yapılabilecek birşeyler varmı onu bilemiyorum.

mesela page size veya firebird.cfg deki degerlerin degistirilmesi işe yarar mı?

iyi calismalar.
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

yapılacak bir şey var tabi...
Benim yaptığımı yapın... :)
Aynısı var bende de.... lokalde calisirkern birden veritabanını internete koyunca form acayip yavasladi... Epey lookup da var... Hatta 5-6 tane dataset filan var...
formdaki butun datasetleri Query yaptim ve de lookup yavasligindan kurutlmak icin de Cache Update calistim. Lookup tanımlamayıp Select cumlesi ile gerekli alanları cektim. Yani PARA_BIRIMI_NO yerine ADINI almak icin lookup tanımlamayıp Select icinde join ile aldim. Tabi bu durumda Query read only olduğu icin de Cache update kullandım...
Ayrıca master kaydım icin bir navigator vardi onu kaldirdim ve de master tabloyu sadece tek bir kayıt gosterir duruma getirdim. Detaylar da o kaydın detaylarını tabi.... Master Query ilk acilista son kaydı getiriyor. Tepede de bir arama kutucugu koydum. Primary alanıma gore arama yapıyor. Hangi numarayı girerse o numaralı rezervasyona konumlanıyor. Yani Select cumlemin where kısmında yeni numarayı yazıp Query yi acip kapatiyorum. Tabi detaylari da....

Belki biraz karisik oldu ama temel fikir kullanıcıya butun kayıtlara anında ulasma yetkisini verme ve kayıtlar uzerinde ileri geri gezme imkanı verme fikrinden vazgecmelisiniz... Kullanıcı ulasmak istedigi kayıt icin ilgili bir arama islemini yaparak ulasacak ve islemi yapacak... aksi takdirde nereyi ne kadar optimize ederseniz edin sonucta bu gun 13000 yarın 50000 kayıt 30 saniye bu kadar kayıt icin hıza baglı olarak ok da uzun sayılmaz bence....
* http://www.fahrettin.org Manzara Fotoğraflarım... :)
* http://delphiturkiye.gunduz.info Seminerler... ;)
* http://www.hakmar.com.tr Kalite bir haktır... 8)
Kullanıcı avatarı
kadirkurtoglu
Üye
Mesajlar: 748
Kayıt: 22 May 2005 01:20
Konum: Uzakta Görünen Tepeden...

Mesaj gönderen kadirkurtoglu »

hocam ben kod bloğu derken tabi yanlış anlaşıldı galiba kod bloğundan kastım klasik while ile döngü felan mı kullanıldı diye kod bloğundan bahsettim.
Bir mum, yanındaki mumları tutuşturmakla,
ışığında hiç bir şey kaybetmez.

Mevlana

OS win.10, IDE Delphi 10.3, RDBMS Firebird and MSSQL, BROWSER Chrome
Kullanıcı avatarı
mikser
Üye
Mesajlar: 120
Kayıt: 30 Haz 2003 09:54
Konum: Ankara

Mesaj gönderen mikser »

cevaplar için herkese tesekkurler...
sanırım hız icin vt yapısını iyi kurmak gerekiyor.
Cevapla