Procedure ve Trigger sayısı

MS SQL Server veritabanı ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Glen
Üye
Mesajlar: 277
Kayıt: 12 Eki 2005 11:58

Procedure ve Trigger sayısı

Mesaj gönderen Glen »

Selam,

MSSQLde procedure ve trigger sayisi onemli mi? Yani maksimum kactane procedure yaratilabilir veya, cok fazla olmasi performans sorunu yaşatır mı?

Teşekkürler.
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7601
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Database Server'lar için öyle bir sıkıntı yok. Yaklaşık 200 tablosu olan bir veritabanında her tabloda ortalama 3 trigger olan, 200 civarında da SP'si olan br veritabanımız vardı. sybase'de.

SQL Server için de sorun olacağını sanmam. Çekinmeyin dayanın SP'ye, trigger'a :)

Bu arada trigger yazmak için power designer veya erwin tarzı bir araç kullanırsanız rahat edersiniz.

Kolay gelsin.
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Mesaj gönderen Hakan Can »

Sayısından çok içeriği performansı etkiler.

Triggerlar konusunda biraz dikkatli omak gerekir. MS SQL' de Trigger'larda multirow özelliği var. Yani tek bir kaydı düşünüpte Trigger'ı yazmıyorsunuz.

Ben şahsen mümkünse Trigger falan kullanmayın derim. Zira kimi üstad yazılımcılar referantial integrity özelliklerini bile Trigger'larla hallediyorlarmış (ekstradan indeks oluşmasın diye) vakti zamanında ama artık veritabanları çok gelişti.

İyi çalışmalar.
Glen
Üye
Mesajlar: 277
Kayıt: 12 Eki 2005 11:58

Mesaj gönderen Glen »

Oh rahatladim cunku bu gidisle heralde bi 5 milyontane flan sp'm olcak :Pp

ya o degil de $u mantik sizce dogrumu, mesela sp ile insert islemi yaparken ileride cok kayit olunca yavaslama gözükür mü, mesela...

Kod: Tümünü seç

IF NOT EXISTS(SELECT ID FROM TABLE1 WHERE ID = @foreignid1)
BEGIN
   RAISERROR('foreignid1yok',16,1)
END ELSE
IF NOT EXISTS(SELECT ID FROM TABLE2 WHERE ID = @foreignid2)
BEGIN
   RAISERROR('foreignid2yok',16,1)
END ELSE
IF NOT EXISTS(SELECT ID FROM TABLE3 WHERE ID = @foreignid3)
BEGIN
   RAISERROR('foreignid3yok',16,1)
END ELSE
IF NOT EXISTS(SELECT ID FROM TABLE4 WHERE ID = @foreignid4)
BEGIN
   RAISERROR('foreignid4yok',16,1)
END ELSE
.
.
.
.
böyle yaklasik bi 15 tane filan ve hepinden gecer not alirsa 

INSERT INTO TABLO .................
diye giden bir kod. Yani foreign secilen mesela 15 tane disardan secilen bi$ey olcak ve de kaydi yapmadan once o sirada hala o disardan secilen kayitlarin durup durmadigini kontrol edicek ve eger duruyosa kaydetcek..

Bu yanlis bir mantik mi yoksa dogru bir mantik mi?
Cevapla