firebird performans için

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
meron06
Üye
Mesajlar: 393
Kayıt: 15 Eki 2005 04:23

firebird performans için

Mesaj gönderen meron06 »

Sel.al arkadaşlar firebird 1.5 ve d7 de bi proje geliştirdik.şuan için gözle görülür bi yavaşlama yok ama belli bölümelerimde kayıt sayısı fazl aolan tablolarımda bazı yavaşlamalar başladı.vt boyutu 145 mb kayıt sayısı 300 bin civarında.page size ım 8192 yalnız vt de bazı tablolarımda 2000 karakterlik alanlarım var.ve firebird ü kurduğum serverımda (2003 server.)herhangi bi ayar yapmadım firebird le ilgili.sormak istediğim şey page size ımı tam olarak benim projemde nasıl olması gerektiğini nasıl hesaplarım.birde server da fire birdle ilgili herhangi bi ayar yapmam lazımmı performans için(projemde sp trigger index kullanıyorum.forumdaki kaynaklardan faydalandım.)bu konuda yardımlarınızı bekliyorum arkadaşlar iyi çalışmalar
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Sayfa boyu/PageSize ın işletim sistemi küme/cluster boyutu ile aynı olması gerekiyor diye biliyorum.. Daha önce epey konuşuldu :wink: Tabi ki en önemli etken vertabanı yapısını uygun şekilde tasarlamak.. Arama yapılan alanların indeksli olması.. SP ve sorgularda gereksiz alanların döndürülmemesi, mümkün olduğunca karakter işlemlerden çok sayısal bilgilerin döndürülmesi vs.. Son kısım şu demek bir kaç SP birbirini çağırıyor da stok adı en sonunda size lazım fakat diğer SP lere sadece girip çıkıyorsa bu bir kambur :idea:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
meron06
Üye
Mesajlar: 393
Kayıt: 15 Eki 2005 04:23

Mesaj gönderen meron06 »

Peki recep abi işletim sisteminin kümesinin kaç olduğunuz nasıl bulacağız.
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Mesaj gönderen Hakan Can »

Performansla ilgili probleminiz VT'den ziyade kullanıcı arayüzü (Client programı) ile ilgili.

Siz VT'nizde performansı ne kadar arttırırsanız arttırın, kullanıcı arayüzünde uygun bir dizayn yapmadıysanız bu problem artarak devam edecektir. Öyle bir dizayn yapmalısınız ki kullanıcı bir tablodan hiçbir zaman belirli bir kayıttan fazlasını görme gereği hissetmeyecek ve siz de ona o kadar kayıt göstereceksiniz.

Örneğin bir tablo düşünün devamlı büyüyor ve siz kullanıcıya bu tablonun tamamını gösteriyorsunuz. Kullanıcının yeni bir kayıt girdiğini düşünün. 100 kayıtta sorun yok. 1000 kayıtta yarım saniye bekliyor. 10 bin kayıtta 5 saniye 50 bin kayıtta 50 saniye 200 bin kayıtta artık çay veya yemek molası vermesi gerekiyor. Bu biraz abartılı gibi gelse de Paradox tabloları dışında maalesef üç aşağı beş yukarı bu şekilde.

Tabi bunun için kullandığınız komponent, VT de çok önemli. Ben şahsen dbExpress kullanmanızı tavsiye ederim.

İyi çalışmalar.
meron06
Üye
Mesajlar: 393
Kayıt: 15 Eki 2005 04:23

Mesaj gönderen meron06 »

hakan bey programın arayüzünü tasarlarken çok dikkatli çalıştığımıza inanıyorum.öyleki kullanıcı programda sadece ihtiyac duyduğu zaman ihtiyac duyduğu verileri alıyor.component olarak ibx kullanıyrum.tablolara kayıtları hazırladığım insert queryleriyle giriyorum.sorgu vb olaylarda sp kullanıyorum(sadece ihtiyac duyduğum alanları alıyorum.).serverdan gereksiz hiç bir veri çekmiyorum.bunun yanında güncelleme ve silme işlemlerimide yine hazırlamış olduğum sql lerle yapıyorum(queryler içine yazılmış sorgularla.update ve delete sorguları.) şuan için öyle ciddi bi performans kaybı yok .ben ilerisi için fikrim olsun istiyorum.serverda bi yapılması gereken bişey varmı diye.
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

meron06 yazdı:Peki recep abi işletim sisteminin kümesinin kaç olduğunuz nasıl bulacağız.
Komut satırında c:\>chkdsk demeniz yeterli. Fakat benim de söylediğim ve @Hakan Can arkadaşımızın örneklediği şekilde ince ayarlara gelmeden önce yada bu tür bir ayarlama ile perfomans beklemektense iyi bir tasarımı yapmak gerekir :wink:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Mesaj gönderen Hakan Can »

Aslında en güzeli basit bir program yazıp kayıt sayısını belirli miktarlarda arttırıp bizzat görerek test etmeniz olacak.

Ben bu testi defalarca yaptım. En kesin çözüm bu olacaktır.

Karşılaştığım en büyük sorunlardan bir tanesi belki de aşılması en zor olanı da VT belirli bir boyuta geldikten sonra VT'ye ilk bağlanmanın bile çok uzun sürmesi idi ki bu 17 dakika gibi insanı çileden çıkartacak bir süreydi. Test ettiğim bilgisayarlar da iyi bilgisayarlardı.

Özetle; bir noktadan sonra işiniz çok zorlaşıyor.

En güzeli 1 yıllık, 5 yıllık, 10 yıllık, 20 yıllık ve son olarak da 50 yıllık veri girerek test yapmanız olacaktır. Yaptığınız tasarımın (hem VT tarafında hem de Client tarafında) doğruluğu tam olarak 50 yıllık testte çıkacaktır.

İyi çalışmalar.
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Hakan Can yazdı:...
Karşılaştığım en büyük sorunlardan bir tanesi belki de aşılması en zor olanı da VT belirli bir boyuta geldikten sonra VT'ye ilk bağlanmanın bile çok uzun sürmesi idi ki bu 17 dakika gibi insanı çileden çıkartacak bir süreydi. Test ettiğim bilgisayarlar da iyi bilgisayarlardı.
.....
Böyle 17 dk. da açan bir VT yi görmek, incelemek isterdim :wink:
Hakan Can yazdı:...
En güzeli 1 yıllık, 5 yıllık, 10 yıllık, 20 yıllık ve son olarak da 50 yıllık veri girerek test yapmanız olacaktır. Yaptığınız tasarımın (hem VT tarafında hem de Client tarafında) doğruluğu tam olarak 50 yıllık testte çıkacaktır.
...
5 yıldan fazla süreleri hesaplamanın hiç bir mantığı yok. Çünkü sene değil altı ayda teknoloji değişiyor, gelişiyor. O Yüzden onca uzun vadelerde atomik yapıya mı kuark yapıya mı gelinir bilemeyiz... Belki de hiç bilemiyeceğiz :?
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
meron06
Üye
Mesajlar: 393
Kayıt: 15 Eki 2005 04:23

Mesaj gönderen meron06 »

yavaşlayan tablomu akşam bi ara inceleyeyim dedim.ve çok dikkatsiz ce yaptığım bi hatayla karşılaştım.tanımlaıdğım indexlerin birinde hata yapmışım.index düzenledikten sonra yavaşlayan tablomda sanki 1000 kayıt varmış gibi hızlı ve rahat çalışıyor.yinede server tarafında yapılacak bişey varsa bilmek isterim.mesela vt nin yüklü olduğu serverda gereksiz işlemleri durdurmak.firebird yapılacak ayarlar vb.
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Parmak bastığımız en önemli kısmı yapmışsın zaten :wink:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Mesaj gönderen Hakan Can »

rsimsek yazdı:
Hakan Can yazdı:...
Karşılaştığım en büyük sorunlardan bir tanesi belki de aşılması en zor olanı da VT belirli bir boyuta geldikten sonra VT'ye ilk bağlanmanın bile çok uzun sürmesi idi ki bu 17 dakika gibi insanı çileden çıkartacak bir süreydi. Test ettiğim bilgisayarlar da iyi bilgisayarlardı.
.....
Böyle 17 dk. da açan bir VT yi görmek, incelemek isterdim :wink:
Hakan Can yazdı:...
En güzeli 1 yıllık, 5 yıllık, 10 yıllık, 20 yıllık ve son olarak da 50 yıllık veri girerek test yapmanız olacaktır. Yaptığınız tasarımın (hem VT tarafında hem de Client tarafında) doğruluğu tam olarak 50 yıllık testte çıkacaktır.
...
5 yıldan fazla süreleri hesaplamanın hiç bir mantığı yok. Çünkü sene değil altı ayda teknoloji değişiyor, gelişiyor. O Yüzden onca uzun vadelerde atomik yapıya mı kuark yapıya mı gelinir bilemeyiz... Belki de hiç bilemiyeceğiz :?
17 dakikada açılacak VT'nin özellikleri:
1200-1250 civarı tablo. 300-400 tanesi birbiriyle ilişkili hele 5-10 tanesi nerdeyse bu 300-400 tablonun hepsi ile ilişkili (direk veya dolaylı).
Günde 1-5 milyon kadar kayıt giriliyor (program tarafından bilhassa raporlama amaçlı tablolara) ve neredeyse o kadar da kayıt siliniyor.
VT'nin boyutu 1-10 GB arasında değişebiliyor. Tabi gün geçtikçe artıyor.

Bazı tabloların kayıt sayıları milyonlara ulaştığı ve kayıt silip kaydetme hadisesi arttıktan bir müddet sonra bu problem ortaya çıkıyor. Tabi backup-restore yapmayı tavsiye edeceksiniz. Bir noktadan sonra backup restore 1 saati geçiyor ve yine bir noktadan sonra backup-restore da para etmiyor.

50 yıllık teste gelince aslında bence bu bile az. Zira hiçbir yazılımcı yaptığı ticari entegre programını sadece bakkallar kullansın diye hayal ederek yapmaz. Ben şahsen böyle bir programı yaparken Kozyatağı Carrefour'da da kullanılabileceğini düşünerek yaparım. Tabi Kozyatağı Carrefour demek sıradan yüz tane market bin tane bakkal demek. Ama benim o kadar büyük hayallerim yok diyorsanız ona birşey diyemem.

Teknolojik gelişmeler tabiki yazılımcıların lehine oluyor gibi ancak örneğin VT geliştiğinde VT'yi üst versiyona yükseltmek bazen aleyhte sorunlar doğurabiliyor. Tabi asıl önemlisi işi şansa yani teknolojik gelişmelerin insafına bırakmak ne kadar doğru bir yaklaşım onu da sorgulamak gerekiyor.

Neyse fazla uzatmayayım. Bunlar benim şahsi görüşlerim (kendi yaşadığım tecrübeler sonucu oluşan).

İyi çalışmalar.
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 »

Selamlar,

firebird.conf dosyasında önemli (aslında hepsi birbirinden önemli) ince ayar noktaları var.

Firebird'ün kurulu olduğu dizinde bir adet firebird.conf isimli bir text dosya mevcut. Bunu herhangi bir Text editor ile açın ve en alt satırına,

ProcessPriorityLevel = 1

yazın. Bu sayede Firebird, işlemlerde bulunduğu makinanın kaynaklarını sonuna kadar kullanacaktır. CPU Priority'i yüksek düzeye çıkartmış olursunuz ki, bu da sizin Firebird'ün çalışırken sistemi sonuna kadar kullanmasına yarar. Bir çok database serverda bu Priority High durumdadır. FB'de ise kullanıcıya bırakılmıştır. Eğer makinanızda başka bir şey çalışmıyorsa (yani SERVER makina) FB serverlığı yapıyorsa tavsiye ederim. Özellikle tavsiye ederim.

Bir diğer ekleyebileceğiniz satır, Memory kullanımınızla alakalı olacaktır. Yani Eğer makinanızda uygun Bellek varsa, Page sayısını ayarlayarak, performansınızı arttırabilirsiniz. Bunun için ise, yine firebird.conf dosyasına aşağıdaki satırı eklemelisiniz.

DefaultDbCachePages=nnnnnn

Dikkat burada nnnnnn yazan yere sizin Server'da FB'nin kullanması için ayıracağınız bellek miktarıyla doğru orantılı bir sayı gelecektir. Örnek olarak, PageSize'ınız 8192 Byte ise, ve 128MB bir alanın FB tarafından (Cache'lenmesi için) kullanılmasını isterseniz, 128 * 1024 * 1024 / 8192 = 16384 yazmalısınız, yani,

DefaultDbCachePages=16384

Bu satır ile FB'ye Cacheleme alanı olarak 128 MB Bellek kullanmasını söylemiş olursunuz ki, Performansı arttıran önemli kriterlerden biridir. Eğer 512 MB Bellek ayırmak isterseniz, o zaman da,

512 * 1024 * 1024 / 8192 = 65536'yı buluruz. Bunun gibi sizin makinanızın belleğine göre ayarlama yapabilirsiniz.

Ayrıca,

SortMemBlockSize ve SortMemUpperLimit ile Indexlemelerde (veya index işlemleri yaparken) ne kadarlık bir bellek alanının kullanılmasına izin verdiğiniz ayarlardır ki, bunlarda da yapacağınız değişikliklerle performansınızı arttırabilirsiniz. Ancak DefaultDBCachePages ve CPU Priority size çok önemli performans artışları sağlayacaktır.

Denenmiştir ve çok olumlu sonuçlar alınmıştır. Ancak dediğim gibi bunu yaparken hesaplamalrınızı doğru yapmalısınız. Eğer 512 MB makinada 512 MB Cache pages verirseniz, Windows otomatik olarak SWAP dosyalara abanacaktır ve siz performans beklerken, yerlerde sürünen bir database'iniz olur. Dikkatli yapın.

Bu ayarların aktif hale geçirilmesi için ise, FB servisini Stop/Start yapmalısınız. Her değişiklikten sonra Stop/Start ile bu değişiklikler aktif hale gelecektir.

Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Cevapla