folder Tahribat.com Forumları
linefolder Webmaster ve Yazılım Geliştiriciler
linefolder Büyük Dataları Yönetebilmek. (Performans) ( SQL - Server - Cache)



Büyük Dataları Yönetebilmek. (Performans) ( SQL - Server - Cache)

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    cemnet
    cemnet's avatar
    Kayıt Tarihi: 18/Eylül/2007
    Erkek

    Merhaba,

     

    Şöyle bir sıkıntım var. Normal bir site yaparsın üyelik olur kategoriler olur ilanlar olur ve bunları yönetirsin. Buraya kadar zaten herkesin yaptığı işlemler. Bunu yapanlar hiç performansı düşünmez direk select * from uye şeklinde çalışır.

    Ancak 2 milyon üye 20.000 kategori tarzında 100.000 ürün olunca bir sitede burda normal yollardan siteyi yapınca ciddi performans sıkıntı yaşanıyor.

    Gerek cache yapısı, gerek daha iyi optimize edilmiş sql sorguları vs vs bunlar haliyle en önemli işler oluyor.

     

    İşte bu konuda eğitim veren bir kurum var mı? Yoksa her konuda kendimiz mi tecrübelenmemiz gerekecek. 

     

    Örneğin elimden geldiğince az database'e bağlanıp işlemler yapıyorum, ajax falan kullanıyorum ama fark ettimki eksik olduğum bir konu bu benim. 

     

    Bir çözüm sunacaki bir fikir üretecek var mı bu konuda bana?

     

    Teşekkürler

  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SharpShooter
    SharpShooter's avatar
    Banlanmış Üye
    Kayıt Tarihi: 10/Temmuz/2008
    Erkek

    yoğun insert olacak tabloları mysql de tut (chat gibi), mssql e göre daha performanslı.

    sql sorgularını stored procedure olarak çağır (veya orm kullan o senin için optimize ediyor)

    splerin içinde (NOLOCK) kullan (http://www.csharpnedir.com/articles/read/?id=1106)

    bunun üstü artık senin serverlarına bağlı. siktiri boktan bi server ile 250 k kişiyi kaldırıcam diye kasma kaldıramazsın.

    az kaynakla(parayla) kaldırmak istiyorum dersen mssql/mysql olmaz. mesela nosql olur veya benzer veritabanları

    insanlık artık bu yeni veritabanlarını kullanmaya doğru gidiyor.

    mssql için gerek kaynak masrafı gerek lisans masrafları çok yüksek


    - xx yerde hata var. - ya aslında kod şöyle sanıyor olabilir bla bla bla - olm kendine gel kodlar düşünmez - ...
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    cemnet
    cemnet's avatar
    Kayıt Tarihi: 18/Eylül/2007
    Erkek

    SharpShooter bunu yazdı:
    -----------------------------

    yoğun insert olacak tabloları mysql de tut (chat gibi), mssql e göre daha performanslı.

    sql sorgularını stored procedure olarak çağır (veya orm kullan o senin için optimize ediyor)

    splerin içinde (NOLOCK) kullan (http://www.csharpnedir.com/articles/read/?id=1106)

    bunun üstü artık senin serverlarına bağlı. siktiri boktan bi server ile 250 k kişiyi kaldırıcam diye kasma kaldıramazsın.

    az kaynakla(parayla) kaldırmak istiyorum dersen mssql/mysql olmaz. mesela nosql olur veya benzer veritabanları

    insanlık artık bu yeni veritabanlarını kullanmaya doğru gidiyor.

    mssql için gerek kaynak masrafı gerek lisans masrafları çok yüksek


    -----------------------------

     

    @SharpShooter

    sistemi mssql olarak oluşturdum. Örneğin indexleme yapmadım hiç. Öncedende yapmadığım birşeydi zaten. Tabloyu dizayn kısmında açıp sutunu sağ tıkladığımızda index alanı çıkıyor oradan mı yapılan birşey?

    Ayrıca hangi ne tür tablolarda hangi sutunlara index yapılmalı?

     

     

  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SharpShooter
    SharpShooter's avatar
    Banlanmış Üye
    Kayıt Tarihi: 10/Temmuz/2008
    Erkek

    cemnet bunu yazdı:
    -----------------------------

    SharpShooter bunu yazdı:
    -----------------------------

    yoğun insert olacak tabloları mysql de tut (chat gibi), mssql e göre daha performanslı.

    sql sorgularını stored procedure olarak çağır (veya orm kullan o senin için optimize ediyor)

    splerin içinde (NOLOCK) kullan (http://www.csharpnedir.com/articles/read/?id=1106)

    bunun üstü artık senin serverlarına bağlı. siktiri boktan bi server ile 250 k kişiyi kaldırıcam diye kasma kaldıramazsın.

    az kaynakla(parayla) kaldırmak istiyorum dersen mssql/mysql olmaz. mesela nosql olur veya benzer veritabanları

    insanlık artık bu yeni veritabanlarını kullanmaya doğru gidiyor.

    mssql için gerek kaynak masrafı gerek lisans masrafları çok yüksek


    -----------------------------

    @SharpShooter

    sistemi mssql olarak oluşturdum. Örneğin indexleme yapmadım hiç. Öncedende yapmadığım birşeydi zaten. Tabloyu dizayn kısmında açıp sutunu sağ tıkladığımızda index alanı çıkıyor oradan mı yapılan birşey?

    Ayrıca hangi ne tür tablolarda hangi sutunlara index yapılmalı?

    -----------------------------

    filtreleme yaptığın alanları indexle. mesela ürünler tablon olsun. burada neye göre filtre yaparsın? ürünidsine göre. o yüzden ürün id ye göre indexleyebilirsin.

    aramalar için full text search kullan gibi


    - xx yerde hata var. - ya aslında kod şöyle sanıyor olabilir bla bla bla - olm kendine gel kodlar düşünmez - ...
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    yawuz
    yawuz's avatar
    Kayıt Tarihi: 17/Temmuz/2005
    Erkek

    veritabanını farklı bir makinada tutabilirsin


    tahribat.com a can feda
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ThundeR
    ThundeR's avatar
    Kayıt Tarihi: 08/Mart/2007
    Erkek

    bt akademi iyidir

    http://www.btakademi.com/egitim/egitim-katalogu/?id=2&egitim=veritaban%C4%B1-ve-raporlama

  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Homer
    Homer's avatar
    Kayıt Tarihi: 08/Temmuz/2007
    Erkek

    hocam merhaba

    webde bilmemde.

    SQL Server ayrı serverde tut yani Application server ile sql server bir arada iyi olmuyor.indexler kullan.tüm bilgileri bir tabloya yazma 3-4 tabloya böl İD lerle sorgula.sp`ler kullan.sistemi temiz tut ve RAM ne kadar yüksek olursa o kadar artı,veritabanında  Shrink işlemini bazı aralıklarda yap.sonra veritabanı datalarını multidata şeklinde tut,mesela 

    data.mdf

    yerine data1.mdf data2.mdf bu şekilde.

     

    aklıma gelenler bunlar şimdilik.

     

  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    cemnet
    cemnet's avatar
    Kayıt Tarihi: 18/Eylül/2007
    Erkek

    Selam,

     

    Aramlar için like şuan iş görüyor. Ancak soru şu: Like ile full text search'i karşılaştırdığımız zaman aynı tabloda aynı sutunda arama yapınca burdaki performansı test eden var mı?

     

    Makineleri ayırmayı düşüyorum evet. Sanırım aynı ağda farklı makinalar olması yeterli? Onu zaten server sağlayıcıya anlatsam oda yapabilir herhalde..

     

    bt akedemide olan linke baktım ama genel eğitim yazıyor orda. Benim istediğim daha detaylı...

     

    Shrink ara sıra yapıyorum. Delete komutunun ardında bıraktığı pisliği temizliyor sağolsun :) Ayrıca kökten silmem gerektiğinde bir tabloyu "truncate" komutu ile yapıyorum. Tavsiye ederim.

    data1.mdf data2.mdf olayını anlamadım hocam açar mısın biraz?

     

    teşekkürler

  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Homer
    Homer's avatar
    Kayıt Tarihi: 08/Temmuz/2007
    Erkek

    bu linke bak

    http://blog.sqlauthority.com/2009/05/31/sql-server-create-multiple-filegroup-for-single-database/

    ayrıca bu blogu takip et istersen çok güzel yazıları var.

  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    doganaydin
    doganaydin's avatar
    Banlanmış Üye
    Kayıt Tarihi: 29/Ocak/2010
    Erkek

    İndexlemeler çok önemli. Eğer işlemlerin istatistikleri varsa master/slave olarak ayırman daha mantıklı. Mesela okuma işlemleri yazma işlemlerinden fazlaysa okuma işlemleri için ayrı bir sunucu al, eğer yazma işlemlerin daha çoksa yazma işlemlerin için ayrı bir sunucu al. Bunun yanında I/O performansını arttırmak için mssql ile application arasında queue işlemlerini kullan. Bunun için redis temelli çözümleri tercih edebilirsin. Yani o datayı hemen yazman gerekmiyorsa gecikmeli yazabilirsin. Her şekilde de mssql'in aynı donanım üzerinde diğerlerinden her zaman daha sorunlu olacağını bilmen lazım.

  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    cemnet
    cemnet's avatar
    Kayıt Tarihi: 18/Eylül/2007
    Erkek

    doganaydin bunu yazdı:
    -----------------------------

    İndexlemeler çok önemli. Eğer işlemlerin istatistikleri varsa master/slave olarak ayırman daha mantıklı. Mesela okuma işlemleri yazma işlemlerinden fazlaysa okuma işlemleri için ayrı bir sunucu al, eğer yazma işlemlerin daha çoksa yazma işlemlerin için ayrı bir sunucu al. Bunun yanında I/O performansını arttırmak için mssql ile application arasında queue işlemlerini kullan. Bunun için redis temelli çözümleri tercih edebilirsin. Yani o datayı hemen yazman gerekmiyorsa gecikmeli yazabilirsin. Her şekilde de mssql'in aynı donanım üzerinde diğerlerinden her zaman daha sorunlu olacağını bilmen lazım.


    -----------------------------

     

    Database ile application serverı ayırmak kolayda hocam peki bir database'i nasıl ayırırız? Yazacağı zaman şuna okuyacağı zaman buna diye? Facebook gibi sistemlerde öyleydi sanırım?

     

    @omerelili

    link için teşekkürler

Toplam Hit: 4008 Toplam Mesaj: 26