Konuyu Oyla:
  • Derecelendirme: 5/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Firebird Ağ Yavaşlığı Nedenleri
#11
Firebird lokal ağda hızlı ama internet üzerinden çalıştığında biraz yavaştır.
Yeni sürümlerinde bununla ilgili bazı iyileştirmeler yaptılar.
yeni sürümleri yükleyip deneme yapabilirsiniz ya da zebedee gibi ek araçlar kullanabilirsiniz.

https://firebirdsql.org/file/documentati...ebedee.pdf
WWW
Cevapla
#12
Merhaba,

Konu bizim 15 yıl önce hayattan bezme noktasına geldiğimiz sorunla aynı. Yavaşlık. Sonrasında , veritabanını inceledikçe çözümler de peşisıra gelmişti ama 5 yıl falan sürdü bu. Şimdi ;

Veritabanındaki tabloları tek tek gözden geçirin. Hangi alanları sorgulamalarda veya order sıralamalarında kullanıyorsanız index yapın. Ibexpert ile çok kolay. Indices tabında saniyelik iş. Özellikle master-detail kullanımda hayat kurtarır.

Firebird aslında hızlıdır, önemli olan doğru tasarım. Şiir gibi olmalı veritabanı. Versiyon 2.5 / 64 Bit.
Ben şimdi 1 TB civarında yaklaşık 3 milyon veri ile çalışıyorum. Üstelik 50Mbitlik internet bağlantısı ile. Sıfır Sıkıntı.
Cevapla
#13
Sorunu firebird'e atmadan önce pek çok unsur olabilir.
1. İlk olarak delphi'de table kullanıyor musunuz ? Kullanıyorsanız açılışta veri çeker. 10 tane table canını okur ortalığın. query kullanıyorsanız select * from ... gibi bir sorgu yapmayın olabildiğince form açılışlarında queryler table lar veri çekmeden gelsin.
2. Index hayat kurtarır. Sorguyu neye göre yapıyorsan ona göre indexli olmalı.
3. İstediğin veriden fazlasını sorgulama adamın sadece adı lazımsa select adi from musteri de bütün bilgileri çekme
4. Bilgisayarda firebird ne kadar bellek kullanıyor ? Alan varsa bellek kullanımını arttırabilirsin.
5. Diski ssd yapabilirsin.

Eğer ii bir monitor programı bulabilirsen en çok sorgulanan tabloları inceleyp performans arttırabilirsin. Bunu yapabilirsen bana da haber ver Smile)
Topluluk mopluluk yok :/
Cevapla
#14
Selamlar,

İlk olarak, bir tane SQL Manager ile (EMS, DBWorkbench gibi) bir SQL tool aracılığı ile, Client makineden yukarıda belirttiğiniz şekilde manuel olarak Sunucuya bağlanıp sorgu çekin. Bakın bakalım fark var mı? Eğer fark var ise, yani Tool'lar hızlı ve sizin program yavaş ise, programı incelemeniz ve trace edip yavaşlığa neden olan satırları/işlemleri bulmanız gerekir. Yok eğer Tool'larla da manuel işlem yaparken yavaşlık söz konusu ise o zaman Network'ü gözden geçirmek gerekir.
Cevapla
#15
Özellikle @Kuri_YJ ve @SercanTEK güzel olasılık ve çözüm önerileri sunmuşlar.

Üçüncü parti yazılımlara hakim değilseniz, yanlış kullanım ile yanlış hükme varılabilir. 

Size farklı bir açıdan yaklaşarak ve yazılımınızın mevcut kontrollerinden soyutlayarak, çıplak ağ akışı elde etmenizi ve öyle test etmenizi önereceğim. 

Yani boş bir delphi projesi içinde, mevcut projenizdeki en yavaş olduğunu nitelendirdiğiniz tek sorguyu kurun ve ağdan sorgulayın. Bakalım aynı yavaşlık geçerli mi?
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#16
Aranıza yeni katılmış bulunmaktayım, İlk mesajım bu.
Bu işi biraz kurcaladım, Sonunda ağ yavaşlığının nedenini uygulama/araştırma gözlemleyerek çözdüm

Firebird Veritabanı gerçekten harika, 3 yıldan beridir Kurumsal olarak kullanıyorum. aksini iddia eden birşeyden anlamıyor demektir.
Hem ücretsiz, hem de bir sürü desteği bulunuyor, bu konuda bağımsız developerları seviyorum.
Bir kurumda  personel kayıtlarını tutmaktayım, Kayıtlarımı performans için iki adet veritabanına böldüm
Birincisi TXT tabanlı yani normal kayıtlar gibidir sadece iki kolonda Blob alan bulunuyor her biri 32 kb yi geçmeyen personel resimleri mevcut bu VT =300M civarında.
ikinci veritabanım ise neredeyse 4000 adet belge pdf xls jpeg barındırıyor bu VT ise 1GB oldu.
ilk veritabanımı master, ikinci veritabanımı Detail olarak lüzum olduğunda Master
kaydın tablosunu bağlayıp işlem yapıyorum, iki adet connection ile master detail yapı kurdum , böylece işim bitince close edip eski kaldığım hızdan devam ediyorm.

Projem 127.0.0.1 üzerinde 4 saniyede açılıyor,  Modem içi Local ağ üzerinde ise 30 saniye WAN ağ üzerinde 5 Dakikada açılıyor bende de hız yavaşlaması var fakat çok değil.
Bu nedenle gereksiz queryleri tabloları close ederek hızı arttırma yoluna gittim çok az değişiklik oldu.

object inspectorda Query ve tablolardaki FetchRows denen alan bulunuyor, bu alan veritabanındaki verilerin gösterim Rowları yani sıralarıdır.
Bunun artması Örneğin 100.000 kaydı olan VT de verileri göstermek için bunu 25.000 yaptığımda hafif kasma ,50.000 row yaptığımızda biraz daha fazla yarı yarıya kasmaya başlıyor 75.000 yaptığımda ve üzeri süre uzuyor. neyse bunu not ettim bi kenara.

Bunun Dbgridde gösterimini 100 row olarak ayarladığımızda VT hemencecik açıldı. fakat tekrar 100.000 yaptığımda malesef kaplumağa gibi oldu geç açıldı, bunları iki üç ağ üzerinde deneyerek test ettim. bunu da not ettim yazdım kenara.

kodlarımı kontrol ederken form yüklenirken FetchRows ve Refresh edildiğinde ikisinin orantılı yavaşlattığını farkettim,FetchRows yüksek olursa VT den veri çekilip hafızaya ayarladığınız fetch rows değeri kadar yer ayırtıyor bu nedenle yavaşlatıyor, Refresh ise Yüklendikten sonra VT den çekilen veri işini ekran kartında yeniden gösterime sokuyor. bu da yavşlatma sebebi. Derhal Refresh kullanımının olduğu yerleri gözden geçirip silince Programın açılışı gözle görülür bir şekilde azaldı.

Bir de Resim bulunan tablolarda FetchRows u mümkün olduğu kadar minimum tutmak gerekir, dolaysıyla resimler de hafızaya load ediliyor, ve yavaşlamaya başlıyor, fakat bu sefer end of file (eof) ile ilgili işlem yaptığımızda kaydın gerisini DBGRID içinde görememe durumu oluşuyor, şimdi ikilem durumunda kaldım, FetchRows u arttırırsam , arttırdığım miktar kadar load olacak Yavaşlamaya sebebiyet verecek.
FetchRowsu düşürürsem EOF ile ilgili dosya sonu döngüsel işlerin dbgridde yarım gösterecek örneğin 100 kaydım var FetchRows u 80 ye ayarladım, while not query.eof do döngüsü ile 80. kayda gelince 81 den sonraki kayıtlar yeni yeni gözükmeye başlıyor, çünkü form ilk açılınca FetchRow 80 olduğundan end of file  80. kayıttadır diye bildirmiştik yani Dbgridin rowları 80 dir, 81. ve sonrası kaydı dbgride görünmez. ancak page down yapınca 80'er 80'er göstermeye, veya döngü ile göster deyince 80 den sonrakileri göstermeye başlıyor


Bunların yavaşlatmaya etkisi bulunuyor, tespit ettim. isteyen Querylerin veya Tabloların FetchRows değeri ile ne dediğimi test edebilirsiniz.. 
Blob Alan sayısı, veri miktarı, Database boyutu ile ilişkilidir.

(16-01-2021, Saat: 15:38)COMMANDX Adlı Kullanıcıdan Alıntı: Aranıza yeni katılmış bulunmaktayım, İlk mesajım bu.
Bu işi biraz kurcaladım, Sonunda ağ yavaşlığının nedenini uygulama/araştırma gözlemleyerek çözdüm

Firebird Veritabanı gerçekten harika, 3 yıldan beridir Kurumsal olarak kullanıyorum. aksini iddia eden birşeyden anlamıyor demektir.
Hem ücretsiz, hem de bir sürü desteği bulunuyor, bu konuda rusları seviyorum.
Bir kurumda  personel kayıtlarını tutmaktayım, Kayıtlarımı performans için iki adet veritabanına böldüm
Birincisi TXT tabanlı yani normal kayıtlar gibidir sadece iki kolonda Blob alan bulunuyor her biri 32 kb yi geçmeyen personel resimleri mevcut bu VT =300M civarında.
ikinci veritabanım ise neredeyse 4000 adet belge pdf xls jpeg barındırıyor bu VT ise 1GB oldu.
ilk veritabanımı master, ikinci veritabanımı Detail olarak lüzum olduğunda Master
kaydın tablosunu bağlayıp işlem yapıyorum, iki adet connection ile master detail yapı kurdum , böylece işim bitince close edip eski kaldığım hızdan devam ediyorum.

Projem 127.0.0.1 üzerinde 4 saniyede açılıyor,  Modem içi Local ağ üzerinde ise 30 saniye WAN ağ üzerinde 5 Dakikada açılıyor bende de hız yavaşlaması var fakat çok değil.
Bu nedenle gereksiz queryleri tabloları close ederek hızı arttırma yoluna gittim çok az değişiklik oldu.

object inspectorda Query ve tablolardaki FetchRows denen alan bulunuyor, bu alan veritabanındaki verilerin gösterim Rowları yani sıralarıdır.
Bunun artması Örneğin 100.000 kaydı olan Veri Tabanında verileri göstermek için bunu 25.000 yaptığımda azıcık kasma ,50.000 row yaptığımızda biraz daha fazla kasma, 75.000 ve üzeri Açılış süreleri uzuyor. bunu not ettim bi kenara.

Bunun Dbgridde gösterimini 100 row olarak ayarladığımızda VT hemencecik açıldı. fakat tekrar 100.000 yaptığımda malesef kaplumağa gibi oldu geç açıldı, bunları iki üç ağ üzerinde deneyerek test ettim. bunu da not ettim yazdım kenara.

kodlarımı kontrol ederken form yüklenirken FetchRows ve Refresh edildiğinde ikisinin orantılı yavaşlattığını farkettim,FetchRows yüksek olursa VT den veri çekilip hafızaya ayarladığınız fetch rows değeri kadar yer ayırtıyor bu nedenle yavaşlatıyor, Refresh ise Yüklendikten sonra VT den çekilen veri işini ekran kartında yeniden gösterime sokuyor. bu da yavşlatma sebebi. Derhal Refresh kullanımının olduğu yerleri gözden geçirip silince Programın açılışı gözle görülür bir şekilde azaldı.

Bir de Resim bulunan tablolarda FetchRows u mümkün olduğu kadar minimum tutmak gerekir, dolaysıyla resimler de hafızaya load ediliyor, ve yavaşlamaya başlıyor, fakat bu sefer end of file (eof) ile ilgili işlem yaptığımızda kaydın gerisini DBGRID içinde görememe durumu oluşuyor, şimdi ikilem durumunda kaldım, FetchRows u arttırırsam , arttırdığım miktar kadar load olacak Yavaşlamaya sebebiyet verecek.
FetchRowsu düşürürsem EOF ile ilgili dosya sonu döngüsel işlerin dbgridde yarım gösterecek örneğin 100 kaydım var FetchRows u 80 e ayarladım, while not query.eof do döngüsü ile 80. kayda gelince 81 den sonraki kayıtlar yeni yeni gözükmeye başlıyor, çünkü form ilk açılınca FetchRow 80 olduğundan end of file  80. kayıttadır diye bildirmiştik yani Dbgridin rowları 80 dir, 81. ve sonrası kaydı dbgride görünmez. ancak page down yapınca 80'er 80'er göstermeye, veya döngü ile göster deyince 80 den sonrakileri load edip göstermeye başlıyor


isteyen Querylerin veya Tabloların FetchRows değeri ile ne dediğimi test edebilirsiniz.. 
Program açılışta lazım olacak kadar veri yükleyin, mesela sql de ilk 20 kaydı getir gibi (select * from tablo where xxxx=1 order by yyyy rows 20)gibi
Blob Binary alanlar veri miktarı, Database boyutu Refresh etmeler ve FetchRows ayarı Veri Tabanının hızını etkileyen sebeplerdir.
Cevapla
#17
@baloglurecep hocam çözdün mü, sonuç ne?
Dosyalarınızı kendi bulutunuza yedekleyin. Yandex Disk

Eyvallah..
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  pardusda dbeaver ıle fırebırd kullanımı hakkında sadikacar60 8 611 29-02-2024, Saat: 17:50
Son Yorum: Hayati
  Firebird Sound_ex Kodu. COMMANDX 1 303 28-01-2024, Saat: 01:56
Son Yorum: maydin60
  Firebird ile FIFO Hesaplama Nasıl yapılır? klavye 0 363 17-08-2023, Saat: 12:33
Son Yorum: klavye
  IBExpert ile Firebird Veri Kurtarma DelphiCanR 6 7.506 19-07-2023, Saat: 14:42
Son Yorum: baloglurecep
  Firebird Bozuk Dosya Hk. dark12side 1 394 07-06-2023, Saat: 21:53
Son Yorum: mrmarman



Konuyu Okuyanlar: 1 Ziyaretçi