• 12-02-2013, 17:32:30
    #10
    Şöyle bir sorgu kullandım, zaten çok basit düz bir Linq Select sorgusu

    List<cumle> cList = db.cumles.Where(x => x.durum == true && x.en.Contains(" " + txtKelime.Text + " ") || x.tr.Contains(" " + txtKelime.Text + " ")).OrderBy(x => x.en.Length).Take(500).ToList();

    cumle tablosunda
    id, en, tr, puan, durum alanları bulunuyor.
    tr ve en alanı nvarchar(250)
    puan alanı int, +1 şeklinde oy alınıyor


    rob33n adlı üyeden alıntı: mesajı görüntüle
    Neye dayanarak alakası bile yok diyorsun?

    @Ozgurs88, yazdığın sorgular nasıl? Ne kadar join kullandın, sorgu içinde fonksiyonun var mı, neleri indirgedin ..vs
    Bir örnek verebilirsen daha detaylı ve ücretsiz fikir paylaşabiliriz.
  • 12-02-2013, 20:43:40
    #11
    Kimlik doğrulama veya yönetimden onay bekliyor.
    En baştaki hatan zaten Linq ile olaya girmen. Linq full-text desteklemiyor. Bu nedenle yazdığın her contains kelimesi sql'de like olarak generate oluyor ve çok büyük hız kaybı yaşıyorsun. ContainAll veya ContainAny biraz daha hızlı çalışır. Ki query ve entitylerde desteklenmiyor. Linkte görebilirsin. http://msdn.microsoft.com/en-us/library/bb738638.aspx

    İlk olarak şu şekilde bir function yarat.
    create function udf_Arama
    (@kelime nvarchar(500))
    returns table
    as
    return (select [id],[en],[tr]
    from containstable(Cumle,(description,title),@kelime))
    Kodunda şu şekilde çağırabilirsin.
    var Result = from r in DB.Cumle
    join fts in DB.udf_Arama(kelime) on r.en equals fts.en
    select r;
    veya bunların hepsini geçip direk şunu uyguyabilirsin. Bundaki performans farkı daha iyidir.
    http://sqlblogcasts.com/blogs/simons...searching.aspx
  • 19-02-2013, 09:44:00
    #12
    Üyeliği durduruldu
    borsa haberleri dışında anlık veri anlamsız, 5 dk da bir cache yap rahatlar baya
  • 15-03-2013, 11:33:05
    #13
    Evet ama çok fazla link var. 1 günde ortalama 20 bin ziyaretçi geliyor şimdilik. Gün içinde aynı sayfaya bakan ortalama 5-10 kişi. 5 dk'de bir oldyu için ve ilk gelen normal göreceği için bir faydası olmuyor.

    Yani sen herhangi bir alt sayfaya geldiğinde yavaş oluyor baya ama o sayfa cache oluyor. Fakat o sayfaya 5 dk içinde yeni birinin gelmesi çok çok küçük ihtimal. Gün boyu zaten en fazla 5 - 10 kişi geliyor.

    Bu yüzden o da anlamsız kalıyor.

    Bir de sağ alan da Hoşgeldiniz Ad - Soyad yazıyor üye giriş yaptığında. Bu da cache oluyor. Client cache yapsam her gelen için ilk yavaş olacak ve zaten ortalama sayfa ziyaret sayısı 2.

    Bu yüzden o da anlamsız kalıyor.

    Full-Text ve İndex işe yaradı biraz 30 saniye yerine 15 sn'ye de getiriyor bir sonucu.

    Fakat 3-5 sn'ye indirmem gerek en az
  • 19-03-2013, 13:52:47
    #14
    700bin satır kaydı tek seferde insert eden bir kodum vardı ki o zaman bir çok insert metodunun performansını deneme sansım oldu. bir sorgularınızı ado.net ile yapmayı deneyin (yani yeni bi test uygulaması yazın onu bi ado.net ile sorgu calıstırmayı deneyin. linq yavas olabilir. öte yandan linq arka planda transaction kullanıyorsa belki o sorgu uzun sürdüğü için sorgular yavas geliyordur. Hosting firmaniz sql server express kullanıyorsa o sadece tek cekirdek calıstıgı için yavas olabilir.

    insert ağırlıklı ise indexleme yapmak yavaslama yapar primary key de indextir bi primary keysiz deneyin (eğer ID değerii önemli değilse misal alişveris sepeti uygulaması yaparken sepet sql server ise primary key koymamak performansa + puan (indexleme olmadığı için)

    eğer select de ise yavaslık veriyi doğru modellediğinizden emin olun yan indexlemeler yapın. varsa tekrarlayan kayıt onları ayrı tabloya alın.

    malesef test etmekten baska bir çözüm yok. yapıp o sorgunux kaç mili saniyede calıstığına bakarak veya stress testi yapıp 1000 tane falan calıstırarak deneyeeksiniz. cache sistemlerinde insert yapılınca cache yenileyen programlama modelleri var onları kullanabilirsiniz.

    700k çok büyük kayıt değil mutlaka ya sunucu performansı kötü ya kötü performanslı kod var. ben 700bin kaydı 20 dk da insert ediyordum sql server a (normal metodlar ile kitleniyor sonra en iyi metad bir bucuk saat sürüyordu kullanıcı tanımlı tipler ile insert yaparak 20dk düştü belki ugrasma imkanım artsa daha iyi sonuçlara da ulaşilabilir. Omladı azure için yazın kodu azure de onlarca pc üstünde calıssın kodunuz.