
Firebird 2.0 neden 1.5 den 14 kat daha yavas
-
- Kıdemli Üye
- Mesajlar: 395
- Kayıt: 22 Tem 2004 09:15
- Konum: İzmir
- İletişim:
Selam,
cache den aşırı bir okuma yapılıyor. Cache de arama algoritmasında bir sıkıntı olabilir ama düşüncem o ki bu şekilde bir query her hal ve şartta left join kullanılarak hazırlanan query den yavaş çalışır. Query yi bir left join kullanarak dener misiniz ? Muhtemelen bu sorunu yaşamayacaksınız.
cache den aşırı bir okuma yapılıyor. Cache de arama algoritmasında bir sıkıntı olabilir ama düşüncem o ki bu şekilde bir query her hal ve şartta left join kullanılarak hazırlanan query den yavaş çalışır. Query yi bir left join kullanarak dener misiniz ? Muhtemelen bu sorunu yaşamayacaksınız.
Doğan Zorlu, İzmir
------------------------
"Bu Kitap'ı sana yalnız şunun için indirdik: Hakkında ayrılığa düştükleri şeyi onlara iyice açıklayasın ve Kitap, iman eden bir topluluk için kılavuz ve rahmet olsun." (NAHL 64)
------------------------
"Bu Kitap'ı sana yalnız şunun için indirdik: Hakkında ayrılığa düştükleri şeyi onlara iyice açıklayasın ve Kitap, iman eden bir topluluk için kılavuz ve rahmet olsun." (NAHL 64)
SUB Select yapıları 2.0'da oldukça geliştirildi. @doganzorlu'nun belirttiği gibi SUB Select kullanmadan LEFT JOIN'le test etmende fayda var:
İyi çalışmalar.
Kod: Tümünü seç
for
select
s.kodu,
s.adi,
sum(sh.giren_miktar),
sum(sh.cikan_miktar)
from kart s
LEFT JOIN detay sh ON sh.kodu = s.kodu and sh.islem_tarihi between '01.01.2000' and '30.10.2009'
group by s.kodu, s.adi
into :kodu,:adi,:giren, :cikan
do
suspend;
@doganzorlu hocam left joinle yaptıgım zaman bu sure kat kat daha artıyor ve 46 saniye oluyor. önceden sp oyle idi bu yönteme cevirince 1 s civarına dusunce cok sasırmıstım vede sevinmistim. Sanırım sizinde dediğiniz gibi cachle igili bir sıkıntı var. cunku fb 2.0 Fetches from cache = 4.810.770 oysa fb 1.5.3 Fetches from cache = 338.025 gorunuyor.
ama cozemedim.
@Hakan Can dedigin gibi 2.0 da left join geliştirildi katılıyorum denedim. left join 1.5.3 46 snde gelirken su an bu hız 6 sn ye kadar gelitirilmiş. bu left join icin iyi bir hız ama benim sp 1 sn (select icinde select yani) gelirken bu left join le 6 sn kadar bir zaman da geliyor buda yine 6 katlık bir yavaslık demek.
ilginiz icin tsk ederim.
ama cozemedim.
@Hakan Can dedigin gibi 2.0 da left join geliştirildi katılıyorum denedim. left join 1.5.3 46 snde gelirken su an bu hız 6 sn ye kadar gelitirilmiş. bu left join icin iyi bir hız ama benim sp 1 sn (select icinde select yani) gelirken bu left join le 6 sn kadar bir zaman da geliyor buda yine 6 katlık bir yavaslık demek.
ilginiz icin tsk ederim.
SUB Select ile Left Join farklı şeyler. SUB Select geliştirildi derken daha detaylı kullanım imkanları sunuluyor 2.0'da. Sonuçta SP'nde SUB Select kullanıyorsun.
Tarih şartını kaldırıp test edebilir misin? Bir de mümkünse SP'nin SUB Select'li ve Left Join'li test ettiğin tam kodlarını gösterebilir misin?
İyi çalışmalar.
Tarih şartını kaldırıp test edebilir misin? Bir de mümkünse SP'nin SUB Select'li ve Left Join'li test ettiğin tam kodlarını gösterebilir misin?
İyi çalışmalar.
IB 5x te karşılaşmıştım Tarih alanlarında index te olsa yavaştı, denemek için tarihleri integer bi field a aktarım onun üzerinden işlemleri yaptırınca performans çok artmıştı. İmkanın varsa bunu deneyebilir misin ?
Kolay gele
Kolay gele
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 !!!
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Selamlar Musti,
Şu Database'i bana bi yollar mısın, ve işletmeye çalıştığın SP yada Query'i de beraber bana yollarsan, ben bir incelemek istiyorum.
Eğer bir sorun varsa bunu bildiririz. Sanmıyorum bir yerlerde bir şey değişmiş yada doğru kullanılmıyor olabilir.
Fikirlerimi daha sonra söylerim. (Ben de bir kere buna benzer bir şey yapmıştım, yavaş olduğunu sandım ama Query'i olması gerektiği gibi yazmamışım bu sebepleymiş. Query'i (Terminatör) düzenleyince hızlanmıştı)
Algoritmayı bilmek ve isteneni buna göre hazırlamak, işi çok hızlandırıp değiştiriyor.
Kolay Gelsin
Şu Database'i bana bi yollar mısın, ve işletmeye çalıştığın SP yada Query'i de beraber bana yollarsan, ben bir incelemek istiyorum.
Eğer bir sorun varsa bunu bildiririz. Sanmıyorum bir yerlerde bir şey değişmiş yada doğru kullanılmıyor olabilir.
Fikirlerimi daha sonra söylerim. (Ben de bir kere buna benzer bir şey yapmıştım, yavaş olduğunu sandım ama Query'i olması gerektiği gibi yazmamışım bu sebepleymiş. Query'i (Terminatör) düzenleyince hızlanmıştı)
Algoritmayı bilmek ve isteneni buna göre hazırlamak, işi çok hızlandırıp değiştiriyor.
Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
merhaba abi,
yaklasık 400 mb bir dosya nasıl nerye gondercem bilmiyorum.
Ama cok basit bir şekilde oluşturdum.
aynı işlemi bir detay icin yaptım giren ve cikan yazdırdım. o kadar
Bütün bu sorgula işlemini IBEXPert de yapıyorum o yüzden her hangi bir Query kullanmıyorum.
Sp de aynen şöyle sp adı NEW_PROCEDURE
Çalıştırma şeklimde
yaklasık 400 mb bir dosya nasıl nerye gondercem bilmiyorum.
Ama cok basit bir şekilde oluşturdum.
Kod: Tümünü seç
CREATE PROCEDURE NEW_PRO2
returns (
h integer)
as
declare variable i integer;
declare variable stk varchar(20);
begin
i=1;
WHILE (i<686000) DO begin
i=i+1;
stk=i;
INSERT INTO kart (KODU, STOK_ADI)
VALUES (:STK,:stk || '.NOLU kart');
end
H=i;
suspend;
end
Bütün bu sorgula işlemini IBEXPert de yapıyorum o yüzden her hangi bir Query kullanmıyorum.
Sp de aynen şöyle sp adı NEW_PROCEDURE
Kod: Tümünü seç
for
select s.kodu,s.adi,(select sum(giren_miktar) from detay sh where sh.kodu =s.kodu and islem_tarihi between '01.01.2000' and '30.10.2009'),(select sum(cikan_miktar) from detay sh where sh.kodu =s.kodu and islem_tarihi between '01.01.2000' and '30.10.2009') from kart s
group by s.kodu,s.adi
into :kodu,:adi,:giren, :cikan
do
suspend;
Çalıştırma şeklimde
Kod: Tümünü seç
select * from NEW_PROCEDURE
Re: Firebird 2.0 neden 1.5 den 14 kat daha yavas
Memory miktarları ile alakalıdır diye düşünüyorum amamusti yazdı:s.a
Current memory = 1.841.480
Max memory = 2.555.840
Current memory = 779.248
Max memory = 781.972

merhaba,
estagfirullah.
Evet firebird de de böyle bir bellek yatarlaması var. Ama bu sorunu çözemyecek gibi. bunu firebirde yazmak lazım da bakalım ne olacak
ama enteresan olan bende baska kimsenin bunu yaşamaması. biraz da ha bekleyelim bakalım.Bir ustad yaşarda firebirde yazarsa sorunu anlarız.
iyi çalışmalar
estagfirullah.
Evet firebird de de böyle bir bellek yatarlaması var. Ama bu sorunu çözemyecek gibi. bunu firebirde yazmak lazım da bakalım ne olacak
ama enteresan olan bende baska kimsenin bunu yaşamaması. biraz da ha bekleyelim bakalım.Bir ustad yaşarda firebirde yazarsa sorunu anlarız.
iyi çalışmalar