Bilmek istediğin her şeye ulaş

LINQ to SQL'i performans açısından nasıl değerlendirirsiniz?

Hem performans hem de diğer mevzularda avantaj ve dezavantajları nelerdir? dikkat edilmesi gereken noktalar nelerdir?Düzenle
Linq'uyu hiç kullanmadım. Gömülü yazılımcı olduğum için Veritabanı yeteneklerim de sınırlı (Çoğu zaman güçlü bir veritabanı kullanılamayacak kadar küçük RAM alanlarında çalışıyorum) . Bu yüzden bu soruyu merak edip araştırdım.

Şu anda bir Linq komutu arkaplanda SQL'e çevrilerek çalıştırılıyormuş. Bu da Linq'u performans açısından MSSQL'in biraz gerisine atıyormuş. Bununla birlikte programın kalitesi açısından (refactoring açısından) Linq çok daha iyi olduğu iddia ediliyor ki SQL komutlarının Linq karşılıklarını inceledim gerçekten öyle görünüyor.

linqpad.net/whylınqbeatssql.aspx
martinfowler.com/articles/dblogic.html
stackoverflow.com/questions/13155738/sql... .
  • Paylaş
LINQ kullanım açısından, ilk kullanıma sunulduğu zaman gerçekten inanılmaz bir zaman kazancı sağladı. Eskiden veri tabanı ile bir iş yapmak için sadece SQL sorgusu yapmıyorduk, ayrıca bu sorguları güvenli ve yüksek performans ile gerçekleyebilmek için bir sürü kod yazmak gerekiyordu. Yani yazılımcı olarak en azından (aslında başka bir uzmanlık alanı olan) T-SQL bilmek gerekiyordu. LINQ yapısı ile sizin elle yazamayacağınız SQL sorguları bile otomatik olarak arka planda çok zeki biçimde dönüştürülüyor.

Eksileri yok mu? Elbette var ama bu eksikler gideriliyor. Microsoft LINQ üzerindeki desteğini çekti ancak bunu duyurduğunda aynı yapı üzerine kurulu ve daha stabil olan Entity Framework (EF) geliştiriliyordu ve LINQ kullananların zaman içinde Entity Framework'e geçmelerini önerdiler. EF, LINQ'nun geliştirilen hali diyebiliriz. Yapı olarak aynılar.

Performans konusuna gelirsek, LINQ ve EF yapı itibari ile, yazdığınız sorguyu ADO.NET sorgusu haline dönüştürür ve sorguyu gerçekleştirir. Yani, yazdıklarınız birer veri tabanı sorgusu haline dönüştürülüp işletilir. En nihayetinde arkada koşan işlem bir ADO.NET yapısıdır. O sebeple performans olarak çok büyük bir farklılık hissetmezsiniz. Bu konuda uzun zaman önce Microsoft Turkey Developer Support Team'den teknik biri ile konuşmuş ve aynı soruları sormuştum. Yazdıklarım ile aynı şeyi söylemişti ve demişti ki "Kendinizi hangisi ile daha rahat kod yazar hissediyor iseniz onu kullanın, tümü arka planda ADO.NET üzerine kuruludur".

O sebeple, avantajları açısından bakarsak hem LINQ hem de EF inanılmaz kolaydır ve size çok zaman kazandırır. Geliştirme zamanınızdan %45-50 tasarruf edebilirsiniz. Performans olarak ise, dikkat etmeniz gereken 1-2 nokta var; Lazy Loading ve Eager Loading denen sorgu hataları. Bu hem LINQ hem de EF için geçerli bir durum. Esasen temel sebebi ise ya yazdığınız sorgunun yanlış olması ya da veri tabanı tasarımınızda bir terslik olma ihtimali.

Kısaca, doğru bir veri tabanı tasarımı ve doğru yaılmış sorgular ile birlikte LINQ ve EF ile yapamayacağınız şey yoktur.

NOT: Performansı sorun edebilmeniz için gerçekten çok detaylı bir proje gerçekleştiriyor olmalısınız. Eğer projeniz küçük çapta sayılabilecek bir proje ise performansla ilgili neredeyse hiç fark hissetmezsiniz. Tabi yapıyı doğru kurduysanız.
  • Paylaş
Sonraki Soru
HESAP OLUŞTUR

İstatistikler

423 Görüntülenme4 Takipçi2 Yanıt