masih_enter
شنبه 29 دی 1397, 02:54 صبح
سلام . من یک برنامه دارم مینویسم که در هر ریکوست که ارسال میشه نیازه ادرس هاست با مقدار درون پایگاه داده چک بشه تا مشخص بشه این دامنه برای کدوم کاربر هست و اگر برای کاربری نبود ریکویست رو منحل میکنه
در نسخه اولیه هر بار از پایگاه داده واکشی میکنه و میدونم اگر تو استفاده واقعی بره هرچه کاربر و تعداد ریکویست ها بیشتر بشهتعداد خیلی زیادی درخواست به اس کیو ال سرور میره
برای حل این موضوع اومدم یک کلاس پابلیک درست کردم و از اون یک ابجکت استاتیک درست کردم و هر بار ریکوسیتی میاد اول در این ابجکت استاتیک چک میکنم ببینم این ادرس دامنه برای کاربری ثبت شده یا نه . اگر بود که خوب دیگه درخواست به پایگاه داده نمیره اگر نبود میره از پایگاه چک میکنه و اگر پیدا کرد به ابجکت استاتیک اضافه میکنه و اگر پیدا نکرد درخواست رو منحل میکنه .
اینطوری تعداد ریکویست ها خیلی کم شده . مثلا از 1000 بار چک کردن پایگاه داده الان شده 1 بار .
حالا سوالم اینه این روش درسته یا اشتباهه و ایا راه درست تری برای اینکه یک کپی از مقادیر درون پایگاه داده روی رم داشته باشیم وجود داره که تعداد رخواست های زیاد به سرور اس کیو ال رو کم کنیم ؟
در مورد اپدیت پایگاه داده هم گفتم اگر اپدیتی قراره برای اون نام دامنه اتفاق بیافته از لیست ابجکت استاتیک حذف بشه و در درخواست بعدی دوباره چک بشه
private static List < DnsTbl > DnsList {get;set;}
public class DnsTbl {
public string Id {get;set;}
public string DnsName {get;set;}
}
private void CheckDns(string host) {
var result = DnsList.FirstOrDefault(s => s.DnsName == host);
if (result == null) {
//چک کردن از پایگاه داده
//افزودن به DnsList
} else {
// برگشت Id
}
}
در نسخه اولیه هر بار از پایگاه داده واکشی میکنه و میدونم اگر تو استفاده واقعی بره هرچه کاربر و تعداد ریکویست ها بیشتر بشهتعداد خیلی زیادی درخواست به اس کیو ال سرور میره
برای حل این موضوع اومدم یک کلاس پابلیک درست کردم و از اون یک ابجکت استاتیک درست کردم و هر بار ریکوسیتی میاد اول در این ابجکت استاتیک چک میکنم ببینم این ادرس دامنه برای کاربری ثبت شده یا نه . اگر بود که خوب دیگه درخواست به پایگاه داده نمیره اگر نبود میره از پایگاه چک میکنه و اگر پیدا کرد به ابجکت استاتیک اضافه میکنه و اگر پیدا نکرد درخواست رو منحل میکنه .
اینطوری تعداد ریکویست ها خیلی کم شده . مثلا از 1000 بار چک کردن پایگاه داده الان شده 1 بار .
حالا سوالم اینه این روش درسته یا اشتباهه و ایا راه درست تری برای اینکه یک کپی از مقادیر درون پایگاه داده روی رم داشته باشیم وجود داره که تعداد رخواست های زیاد به سرور اس کیو ال رو کم کنیم ؟
در مورد اپدیت پایگاه داده هم گفتم اگر اپدیتی قراره برای اون نام دامنه اتفاق بیافته از لیست ابجکت استاتیک حذف بشه و در درخواست بعدی دوباره چک بشه
private static List < DnsTbl > DnsList {get;set;}
public class DnsTbl {
public string Id {get;set;}
public string DnsName {get;set;}
}
private void CheckDns(string host) {
var result = DnsList.FirstOrDefault(s => s.DnsName == host);
if (result == null) {
//چک کردن از پایگاه داده
//افزودن به DnsList
} else {
// برگشت Id
}
}