database'te Performans problemlerim.

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Re: database'te Performans problemlerim.

Mesaj gönderen Kuri_YJ »

Hahahahahah :)

Selamlar,

Demek çok hızlanmış. :) Kullanıcıların bu tepkisi buna delalet ediyor. Onlar alışmışlar programa çamur atmaya. Ama onların da işine geliyordur yavaş olması, çünkü ne yapıyorsun dediklerinde programı bekliyorum bilgisayarlar yavaş filan deyip oooh yan gel yat moduna alışmışlardır. Ancak program hızlanınca onların da otomatik olarak bahaneleri de ortadan kalkıyor. Bu onlar için pek de iyi bir şey değil, ellerindeki koz ortadan kalktı ;) Doğal olarak şimdi başka şeylere bahane bulmaları gerekecek.

Biraz suizan olarak düşünülebilir yazdıklarım, doğrudur biraz suizan içeriyor ancak kendi tecrübelerimden yola çıkarak gördüğümü söyledim. Çünkü ellerindeki kaçamak ve kaytarma kozu uçtu gitti....

Haydi Kolay gele
Adnan
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Re: database'te Performans problemlerim.

Mesaj gönderen rsimsek »

Suizan da olsa herkesin her yerde karşılaştığı, aşina olduğumuz şeyler. Banka, PTT, Hastane, Resmi kurum, vb. çoğunda "sistem gitti" lafı geldi mi kimsenin diyecek sözü kalmıyor. Çünkü gerçekten muhatap o birim olmuyor. Çalışanlar da sistemin gitmesinden ya da beklemesine iyice uyum sağlamış ki neredeyse koala moduna geçmişler. Dolaysıyla sanki zan da olsa en azında alışana kadar hızlanmak işlerine gelmeyebilir. :) Kardeşim rapor alınca bir çay molası verebiliyordum bahanem de vardı, hemen biterse kuyruktakilere ne diyeceğm :?:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2380
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: database'te Performans problemlerim.

Mesaj gönderen freeman35 »

Konuştuğun elemansa doğru, amaç mesai doldurmak olduğundan, pc bukadar yapıyor der kestirip atar, uzun sürüyosa ya muhabbete dalar yada diğer işlerini yapmaya başlar, eğer işveren bakarsa, sn hesabı yapar, çünkü iş kaybetmez, 10dk yerine 1dk demek pesonel 9dk diğer işleri halledecek demek( kağıt üstündede olsa :) ) iş verimliği işverenlerin baktığı sonuçtur hep.Yani patron günde kaç rapor verildiğine bakar, bir sonucun nekadar sürdüğüne personel :)
moralinizde bozulmasın, samimi olmadığınıza sorarsanız umursamaz tavırdadır hep. En güzeli (ben öyle yaparım genelde) arada programı kullananları çaktırmadan izlerim. Müşteri yada personel fark etmez, onlar farkınad olmadan mimik ve jestleri memnuniyet yada memnuniyetsizlikleri en yalın halde veriyor genelde.

Piladerim, rahmetli peder bana hep derdi, sen eşşek olduktan sona, semer vuran çok olur :D bana dedikleri zaman monitöre bakmaya çalışıyorum sistem o an düzeliyor :D birde, kör cahil, sistem böyle dedimi asfalyalarım atıyo, arkadaş 27 senedir program yazıyorum, sistem ne yapar yapmaz banamı öğretiyorsun dedim mi yüzler mosmor oluyor, heleki o sistem dediğini ben yazıyorum dedim :D ama çoğunlukla sonuç değişmiyor :( çünkü hesap soramıyoruz, e başbakanda değiliz ki ümüğünü sıkalım, yahudi de değiliz (Allah'a sırf bunun için bile nekadar şükretsem az) devlet bizden yana olsun. konu gene geyiğe döndü :P
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Re: database'te Performans problemlerim.

Mesaj gönderen rsimsek »

Asil mesele dürüst olmakta, alınan parayı hak etmekte. Programcı da bu tür olaylara mahal vermeyecek tedbirleri almamız gerekiyor. Bilgi eksikliği varsa, mantık yürütüp sonuçta adı "bilgisayar" olan bir cihazın kotardığı bilgiye göre elle yapılandan daha yavaş yapıyorsa bir yerde bir bir sorun olduğu düşünülmelidir.
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Re: database'te Performans problemlerim.

Mesaj gönderen Kuri_YJ »

Öyle Recep'im Karadeniz Fırtınam, Freeman'ımın da dediği gibi sonuçta işi düzgün yapmak ve daha iyi nasıl yapabilirim diye sormak gerekiyor. ;)
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
deniz
Üye
Mesajlar: 3
Kayıt: 13 Mar 2014 08:19

Re: database'te Performans problemlerim.

Mesaj gönderen deniz »

slm lar aranıza yeni katıldım bende de performans sorunu var. ıbm x3650 xeon 1.86 işlemci ve 14 gb ram olan (2 işlemci, 8 çekirdekli diye biliyorum) bir serverimiz var.64 bit işletim sistemi ve firebird 2.5 kurulu. firebird.conf işlemci ayarını nasıl yapmalıyım 8 çekirdeğin 6 sını firebird için ayırabilirmiyim.
mehmetantalya
Üye
Mesajlar: 189
Kayıt: 30 Eyl 2013 10:17

Re: database'te Performans problemlerim.

Mesaj gönderen mehmetantalya »

Merhabalar,

Kod: Tümünü seç

select p.tckimlikno from PERSONEL p
left join HAREKET h on p.TCKIMLIKNO=h.TCKIMLIKNO
yukarıdaki gibi bir sorgum var.
Personel ve hareket tablolarinin ikisinde de tckimlikno alanı index'li.
sorgu sonucuna baktığımda Hareket tablosunda indexli olarak arama yapiyor ama personel tablosunda Storage Order seklinde sorgu yapiyor (indexsiz olarak). Bu normal midir acaba?
Teşekkürler.
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Re: database'te Performans problemlerim.

Mesaj gönderen Kuri_YJ »

Selamlar

@mehmetantalya, Eğer WHERE koşuluna bir şey yazmazsanız evet STORAGE ORDER da getirir. Bu normaldir.

Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Re: database'te Performans problemlerim.

Mesaj gönderen Kuri_YJ »

@deniz,
deniz yazdı:slm lar aranıza yeni katıldım bende de performans sorunu var. ıbm x3650 xeon 1.86 işlemci ve 14 gb ram olan (2 işlemci, 8 çekirdekli diye biliyorum) bir serverimiz var.64 bit işletim sistemi ve firebird 2.5 kurulu. firebird.conf işlemci ayarını nasıl yapmalıyım 8 çekirdeğin 6 sını firebird için ayırabilirmiyim.
Selamlar,

İşlemci atamalarınızı elbette yapabilirsiniz. firebird.conf isimli CONFIGURATION dosyasında CPU AFFINITY MASK diye bir şey var. Forumda bu konuyu Terminatör anlattı. Ayrıca eğer izlerseniz, yine akşamları internetten düzenlediğimiz bir seminerler serisi vardı, orada firebird.conf ayarları adı altında bir iki saatlik konu olarak işlemiştik. Onu da izleyebilirsiniz.

Soracaklarınız olursa da buraya sorunuz.

Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
mehmetantalya
Üye
Mesajlar: 189
Kayıt: 30 Eyl 2013 10:17

Re: database'te Performans problemlerim.

Mesaj gönderen mehmetantalya »

Öncelikle cevabınız için teşekkürler ederim.

Kod: Tümünü seç

Select p.adi,h.gorevi,
,EXTRACT(year FROM dogumtarihi) dogumyili,h.calismabaslamatarihi,h.gorevi from personel p
 left  join hareket h on (p.tckimlikno=h.tckimlikno
 and (h.id=(select first 1 id from hareket hm where hm.tckimlikno=h.tckimlikno order by calismabaslamatarihi desc,calismabitistarihi asc)))
Yukarıdaki sorguda

Kod: Tümünü seç

(h.id=(select first 1 id from hareket hm where hm.tckimlikno=h.tckimlikno order by calismabaslamatarihi desc,calismabitistarihi asc)))
kısmında where koşulunu ve order by kisminin indexlerini sanırım dikkate almıyor. calismabaslamatarihi ve calismabitistarihi index li olduğu halde sıralama yaparken bu indexleri kullanmiyor. Bu şekilde kullanılan içiçe select lerde firebird index kullanmiyor mu yoksa bu sorguda kullanmaması normaldir. (bu sorgudaki yapmak istediğim personel bilgisi ile birlikte son yaptigi hareketi getirmek.) veya sorgu daha hizli olmasi icin başka sekilde yazilabilir mi?
Teşekkürler.
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Re: database'te Performans problemlerim.

Mesaj gönderen Kuri_YJ »

Selamlar,

Firebird'ün Index kullanımı gayet iyidir. Hatta bir keresinde öyle bir plan çıkartmıştı ki, adeta bana küfretmişti. Yani böyle index olmaz olsun der gibiydi :)

O yüzden iç içe selectlerde değil, senin WHERE koşulunda kullandığın şekillerde Index oluştur.

Ayrıca kombine indexler yerine tekil indexler oluşturman, akıllı Firebird Index seçicisi için avantaj oluşturur.

Örnekleyecek olursak,

Senin ASC ve DESC indexlerin var (hareket tablosu için)

Hareket tablosuna şu şekilde 3 tane index ekle bakalım ne olacak.

TCKIMLIKNO (ASCENDING)
CALISMABASLAMATARIHI (DESC)
CALISMABITISTARIHI (ASC)

bu 3 indexi ekledikten sonra selectini çek bakalım ne olacak.

Bu örneği INDEX kullanımlarındaki farkı göstermek için söyledim.

Gelelim farklı SELECT mantığına.

Şöyle bir Index oluşturup, WHERE koşulunu aşağıdaki gibi düzelt bakalım.

Index : TCKIMLIKNO + CALISMABITISTARIHI (DESC)

Kod: Tümünü seç

SELECT p.adi, h.gorevi, EXTRACT(year FROM dogumtarihi) dogumyili, h.calismabaslamatarihi, h.gorevi
FROM personel p
 left OUTER JOIN hareket h ON (p.tckimlikno = h.tckimlikno AND (h.id = (SELECT FIRST 1 id FROM hareket hm WHERE hm.tckimlikno = h.tckimlikno ORDER BY calismabitistarihi DESC)))
Yukarıdaki SELECT cümlesi, bitiş tarihine göre en son hareketini getirir.

Bunlara da alternatif başka bir çözüm olabilir. Bu da TRIGGER'dan yardım alarak. Herhangi bir şekilde, HAREKET tablondaçalışma bitirildiğinde, dönüp ilgili personel tablosuna SON_HAREKET_ID gibi bir fielda, son yaptığı hareket ID'sini atabilirsin.

Bu durumda çekeceğin SELECT cümlesi hem basitleşir hem de sistemi yormazsın.

Kod: Tümünü seç

SELECT p.adi, h.gorevi, EXTRACT(year FROM dogumtarihi) dogumyili, h.calismabaslamatarihi, h.gorevi
FROM personel p
 left OUTER JOIN hareket h ON p.SON_HAREKET_ID = h.id 
SELECT cümlesi yukarıdaki gibi olur ;)

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