PDA

View Full Version : مراجعات زیاد به دیتابیس



jamal_ch
یک شنبه 08 فروردین 1389, 09:54 صبح
با سلام خدمت اساتید محترم به یک مشکلی برخوردم امیدوارم بتونیین کمکم کنید

من برای خوندن داده ها از پایگاه داده اسکیو ال از تابع زیر استفاده میکنم


Public Function ExecuteReader(ByVal StrSql As String) As SqlDataReader

Dim SqlCon As New SqlConnection(_StrConnection)
Dim SqlCmd As New SqlCommand
Dim SqlDR As SqlDataReader
SqlCmd.CommandText = StrSql
SqlCmd.Connection = SqlCon

SqlCon.Open()

SqlDR = SqlCmd.ExecuteReader(System.Data.CommandBehavior.C loseConnection)

Return SqlDR
End Function
این تابع شاید تو هر ثانیه بیش از هزار بار فراخونی بشه امکان داره هم زمان دو یا چند شیئ این تابع رو فراخوانی کنند بعضی اوقات این خطا رو میده: قبل از اینکه دوباره استفاده بشه
SqlDataReader بایدبسته شود با توجه به حجم مراجعات بالا چه راهی رو پیشنهاد میکنید و یا چگونه این مشکل رو حل کنم
با تشکر از همگی

m.hamidreza
دوشنبه 09 فروردین 1389, 21:19 عصر
اول از همه راجع به اون کامَند SQL که به متود پاس داده میشه یه توضیحی بدین.
من سناریوی شما رو نمیدونم. ولی در کل این راه ها به نظر من میرسه:


آبجکت هایی که Disposable هستن رو حتما Dispose کنید.
از SP برای اون کامَند استفاده کنید و کد SPتون رو سعی کنید Optimize بنویسید.
بستگی به شرایط پروژه میتونید از Cache استفاده کنید.
باز بسته به شرایط پروژتون از disconnected objectها مثله Dataset میتونید استفاده کنید.
Hosting خوب هم میتونه تاثیرگذار باشه. مدیریت IIS و تنظیمات Application Pool داستانی داره که بعضی موقع ها موردتوجه کافی تیم فنی Hosting ها قرار نمیگیره.

موفق باشید.