Az yaklaşın, sizi sorularımla biraz rahatsız etmek istiyorum.
Bu işe amatör olarak gönül verip ufaktan yarı profesyonel kategorisine adım atmaktayım. Ancak yazılımın belli aşamalarında kafama sorular takılıyor ve danışacak yüce kişiliklere ihtiyacım oluyor.
Visual Basic tabanlı, Access DBli bir şeyler çıkarıyorum ortaya. Bu alandaki sorularıma yanıt verecek yetkinlikte olduğunuzu düşünüyorsanız mesajınızı esirgemeyiniz.
Mesela, veritabanına bağlanırkan bağlantıyı kurup sürekli olarak açık tutmak mı mantıklı, yoksa query ihtiyacı olan her an bağlanıp sonra bağlantıyı sonlandırmak mı?
Devamı gelecek..
Sorulan soruya visual basic ozelinde degil de her programlama dilinde karsilasilan bir problem oldugu icin genel olarak cevap vereyim.
Bir veri tabanina ilk baglanti kurma asamasi en cok zaman alan kisimdir ve performansi ciddi dusurur. her bir sorguda yeni baglanti acmak bu nedenle verimli olmaz. Diger taraftan da baglanti acip ayni baglantiyi tekrar tekrar kullanmak ise sistem kaynaklarinin gereksiz sekilde bosa kullanilmasi demektir, cunku ornegin 100 farkli kullanici icin 100 farkli baglanti actin. ama bu 100 kullanicinin cogu bir kere sorgu yapti ve bir daha belki yapmayacak. bu nedenle baglantinin ne zaman kapatiliacagini bilmemek de bir probleme neden oluyor. Tum bunlar nedeniyle her programlama dilinde "Connection pool" yani baglantilar icin cache sistemi kullanilmasi/yazilmasi onerilir.
Selamlar,
@emrahday "connection pooling" hakkında bahsetmiş, çok fazla bağlantı olacaksa, remote database kullanacaksan performans için kullanman gerekiyor.
Eğer tabloları access'te oluşturup VB ile aynı bilgisayardaki bir database'e erişeceksen bırak bağlantı açık kalsın, en fazla işlem yapmadan önce bağlantı açık mı diye kontrol edersin :
Dim sqlBaglantisi As SqlConnection = New SqlConnection("Connection String")
If sqlBaglantisi.State <> ConnectionState.Open Then
sqlBaglantisi.Open()
End If
@kimlanbu, DB aynı bilgisayarda değil, ortak ağ üzerinde.
10 kişilik bir kullanıcı kitlesi erişiyor.
Bu durumda hangisi daha mantıklı olur sence?
access aynı anda farklı kullanıcının connection açmasına izin vermez, sıraya sokar. dolayısı ile kapanmayan connection sorun olabilir.
sql server express, mysql gibi "gerçek" veritabanlarına yönelebilirsiniz. sql lite bile işinizi görecek fonksiyonları sağlar.
access dışında connection durumunu yapılan işleme göre karar vermek daha mantıklı olabilir. belirli bir döngü içerisinde yapılacaksa önce connection açılır, döngüsel işlem yapılır, connection kapatılır, yok eğer veritabanına gidip arada işlem yapıp yeniden veritabanına gidilecekse ayrı ayrı açıp kapatılabilir.