Forum

Performans Farkı ne...
 
Bildirimler
Hepsini Temizle

Performans Farkı neden olabilir?

4 Yazılar
2 Üyeler
0 Reactions
688 Görüntüleme
(@Anadolu)
Gönderiler: 3
Active Member
Konu başlatıcı
 

şimdi ilginç ama şöyle bir durum var.

SELECT DISTINCT fieldlar.. from View WHERE  (IslemTarihi between
CONVERT(DATETIME,@IlkTarih,104) AND
DATEADD(day,1,CONVERT(DATETIME,@SonTarih,104)) ) AND ( Derece >= @Derece)

Bu sql cümlesini SP içinden çalıştırdığımda 1.30 dakika sürüyor...(group by ilede denedim)

sql cümlesini SP içerisine parametreler girilmiş olarak koyduğumda
yani:
SELECT DISTINCT fieldlar.. from View WHERE  (IslemTarihi between
CONVERT(DATETIME,'03.07.2009',104) AND
DATEADD(day,1,CONVERT(DATETIME,'03.07.2009',104)) ) AND ( Derece >= 1)

bu şekilde ise sıfır saniyede sonuç dönüyor. veya bunu SQL management studioda ben kendim çalıştırdığımda da sıfır saniyede dönüyor.

diğer ilginç olay ise bu parametrik SQL cümlesini dinamik olarak oluşturup EXEC (@sql)  gibi çalıştırdığımda yine sıfır saniyede sonuç dönüyor.

ben nedenini anlayamadım.

 Not: tablolar kabarık biraz.. birinde 110milyon kayıt var.
 SP execution planla baktığımda bir sürü dallanmalar oluyor. onuda pek anlayamadım. aynı sqli managemen studio ile çalıştırdığımda çok daha az dallanama söz konusu oluyor.

 
Gönderildi : 07/07/2009 13:30

(@haticeakgul)
Gönderiler: 983
Noble Member
 

  Merhaba;


Sp içinde select  ten önce aşağıdakini komutu eklermisiniz.


set transaction isolation level read uncommitted


iyi çalışmalar.

 
Gönderildi : 08/07/2009 15:22

(@Anadolu)
Gönderiler: 3
Active Member
Konu başlatıcı
 

merhaba,

malasef dediğiniz ifade ile 20-30 saniye kadar hızlandı..yine 1 dakikadan fazla sürüyor..

DB yi test için şişirdik.. şu an anlık veri girişi falanda yok.  başka sorgu, işlem yok.

parametrik sabit SQLi SP nin daha kolay yorumlaması daha performanslı çalıştırmasını beklerken tam tersine çalıştıracağı sql bilmeyen, hangi indexleri kullanacağını bilmeyen EXEC aynı SQL li nasıl çok daha daha hızlı çalıştırıyor.. 

şimdi projedeki bütün parametrik SQL leri dinamik hale getirmeyi düşünür olduk..

neden prametrik sabit SQL uzun sürüyorda dinamik exec ile çalıştırdığımız kısa sürüyor.?

 
Gönderildi : 09/07/2009 13:52

(@Anadolu)
Gönderiler: 3
Active Member
Konu başlatıcı
 

tekrar merhaba,

burdan farklı bir cevap gelmedi ama ben denediklerimi yazayım..

kullandığım viewa index tanılamayı denedim..

schemabinding isterim dedi.. onu ekledik..  viewda left rigth joinler olmayacak dedi onları kaldırdık..

clustered index isterim dedi onu ekledik.. sonunda da bizim için önemli olan tarih kısmına index tanımladık..

database 12 GB kadardı sanırsam önceki hali.. viewa bu indexleri eklediktan sonra 18GB kadar oldu.. bu işlemi gerçekleştirmesi 30 dakika kadar sürdü..

sonuç olarak ise gram bir performans artışı alamadım.. sorgu içinde WITH(INDEX=falanindex) dedim.. görmezden geliyorum onu kullanmam dedi..

velhasıl en performaslı çalışan hala EXEC ile dinamik  SQL im.. bu kadarı uğraşmamın sebebi bu exec ilede bazı sorgular ortalama aynı sayıda record döndürmesine rağmen nasıl oluyorsa bazen 2 saniye bazen 1 dakika kadar sürebiliyor.. ne zaman ne yapacağı belli olmuyor yani.. onun için daha sağlam bir yol bulmalı..

son olarak okuduğum ve araştırmaya devam ettiğim bir konu ise tabloların tarih vb kriterlere göre parçalanabileceği.. ve çok yüksek oranda performans kazandırdığı.. bu konuda bişeyler ifade edebilecek, yol gösterebilecek deneyimli abiler ablalar aranıyor?

 

 
Gönderildi : 16/07/2009 00:41

Paylaş: