215 Alanlı Tablede Performans

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
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

215 Alanlı Tablede Performans

Mesaj gönderen pro_imaj »

Merhaba;

215 alanı olan bir tablem var. İrili ufaklı tipler var. Varchar alanlarım max 30 numeric alanlar 25/6 tipinde

Şu an denemeler yapmak için 1 milyon kayıt üretmeye çalışıyorum.

*Bir Tablede 215 alan çok mu fazla !

*İleride ne gibi sorunlarla karşılaşabilirim.

*Tanım tablosu olduğu için parçalara bölemk istemiyorum (bu taplodan 2-3 tablo çıkarmak)

*Sorgularımda Bu tapo ile birlikte yaklaşık 4 tabloyuda birleştirecek bir yapı düşünüyorum. (diğer tablolardan toplam 5-10 alan almayı planlıyorum.)

*Select Top 20 From STK Türü Sorgularla çalışırsam sorun kalmazmı?

Bu taplo planlamasında baya kafam karışık en iyi performansı nasıl elde edeceğimi düşünüyorum Yardımcı olursanız sevinirim.

Büyük yazılım firmalarının tablelerini incelediğimde 180 civarında alan olduğunu gözlemledim. Onlar Yakın alan sayılarıyla çalışabiliyorlar peki ya ben!

Saygılarımla
Teşekkürler.
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
Kullanıcı avatarı
lazio
Moderator
Mesajlar: 1527
Kayıt: 11 Tem 2003 04:55
Konum: İstanbul

Mesaj gönderen lazio »

alan sayısı arttıkça performansın düşeceği bariz açıktır hocam..
tablo sayısı artsa bile alanları mümkünse parçalamak en iyisidir.
DeveloperToolKit

..::|YeşilMavi|::..
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Mesaj gönderen pro_imaj »

lazio yazdı:alan sayısı arttıkça performansın düşeceği bariz açıktır hocam..
tablo sayısı artsa bile alanları mümkünse parçalamak en iyisidir.
Peki hocam Aynı Tabloyu diyelimki 3 e böldüm

Tek Tablodaki 215 alanın performansımı daha iyi olur yoksa
3 Tabloyu Join ile birleştirdiğimzdeki toplam 215 alanmı?

Stok Tanım kartı olduğu için ayrı ayrı parçalaraba bölmek istemedim.

Sonuçta tanım yaparken bu 215 alanada ihtiyaç olacağı için muhakkak seçtirme işlemi yapmam gerekcek.

Saygılarımla
Teşekkür Ederim.
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

Eğer hepsini birarada kullanmak zorundaysan tek tabloda tutumanı tavsiye ederim join işi yavaşlatıyor. Logo kullandın mı bilmiyorum ama eğer kullanıp farkettiysen onlar genelde bilgileri tek tek tablolardan alıyorlar join kullanmıyorlar. Hem sen kullanmak istemediğin alanları select ifadende çağırmazsın ozaman daha hızlı olur. Ama insert yaparken biraz işkence olacağı kesin hele bir de autoinc bir idin varsa onu inserte yazmaman gerektiğinden diğer tüm alanları tek tek yazman gerekir cümlene.
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Mesaj gönderen pro_imaj »

Merhaba Naile Hanım;

Cevabınız için teşekkür ederim.

Sizinde belirttiğiniz gibi İnsert işlemlerinde tüm alanları tek tek yazmak zorunda kalmak biraz kötü (Daha önce bu konu hakkında başlık açmıştım şu alan hariç seç diye bir kullanım neden yok diye)

Sizinde belirtitğiniz gibi Tek tabloda kullanmak bencede en mantıklısı. Dün uzun uğraşlar sonu 1.200.000 kayıt oluşturdum veri tabanına.

Sadece Select * From Diyerek Çağırırsam yaklaşım 5.5 dak geliyor.

Sanırım benim Select Top 1 Forum STK gibi bir kullanım ile çalışmam gerekecek Bazı alanları seçimeme dahil etmem işlemi sanırım raporlar için geçerli olacak.

Saygılarımla
Teşekkürler.
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Mesaj gönderen pro_imaj »

Naile hanım sizin bahsettiğiniz İnsert işlemini denedim 150.000 kayıtı 19 dakikata atarken 550.000 kayıtı yaklaşık 3 saatte attığını gözlemledim.

Aslında ben işi abartıyorum sanırım Büyük firmaların vtlerinide inceldim stok kartı 300.000 üstünde olan yok. Ben yinede işi sağlam tutup tüm tabloları 1 milyonun üzerinde kayıt yaratıp öyle programı geliştirecem.

Teşekkürler.
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

Sabit kart tanımı tablolarında geçeceğini sanmıyorum haklısın, hareket tabloları çok fazla kayıtlı oluyor. Onda da her sene devir işleminde yeni bir db veya yeni bir tabloya geçiliyor.

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

Mesaj gönderen Hakan Can »

Tek tabloda tutmak illaki mantıklı diye birşey yok. Stok tanımı tablosunda 215 alanın mesela 15 tanesi önemli 30 tanesi ikinci derece önemli 25 tanesi üçüncü derece gibi bir gruplama yapabiliyorsan tablolara bölmen daha mantıklı olabilir. JOIN ile birkaç tabloyu birleştirerek SELECT yapmak öyle fazla fark etmeyecektir. Bir kere normalizasyon mantığına göre tablo sayısını zaten arttıracağını varsayıyorum.

Ben benzer bir durumla karşılaştığımda şöyle bir yol izlemiştim: Birinci tabloda mutlak girilmesi gereken veya çoğunlukla girilmesi gereken alanları topladım. İkinci tabloda da bazen girilecek alanları. Üçüncü tabloda da nadiren girilen veya bulunsun da belki lazım olur dediğim alanları topladım. Son iki tabloyu birinci tabloya bir alanla (integer) ilişkilendirdim. Birinci tabloya mesela 100.000 kayıt girildi. İkinci tabloya 10.000, üçüncü tabloya 1000.

Bu mantıkla biraz düşünüp böyle bir yapı kurabilirsen performansın çok artacaktır. Zira basit bir Select komutunun 5.5 dakika sürmesi çok endişe verici. Hiç kimsenin ben basit bir rapor için tuşa basıp bu kadar bekleyebileceğini veya bunu kabullenebileceğini sanmıyorum.

İyi çalışmalar.
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Mesaj gönderen pro_imaj »

@Hakan Can Cevabınız için teşekkür ederim.

Sizin bahsettiğinizşekilde mantıklı bir yaklaşım olmazsa ona göre deneyeceğim.

Hocam 5.5 dak. beklem olayına gelince tabloda 1.000.000 (1 milyon) üzerinde kayıt varken bu sonucu veriyor.

Select Top 1 From Table şeklindeki bir Yaklaşımla bu performans büyük ölçüde sağlanmış olmuyormu acaba.!

Not:1 milyon kayıt olduğunda bile Select Top 1 From Table dediğimde 30 sn bağlanamadı. :(

Bu Alan sayısı fazla tableyi Kullanırken Select To 1 From Table şeklinde çalışırsam sorun olmazmı ki! ileride geri dönüşü zor olan hatalar yapmak istiyorumda endişemi mazun görün :oops:

Saygılarımla
Teşekkürler
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
Cevapla