ViewState في Flat Files vs ViewState في SQLServer
-
20-09-2019 - |
سؤال
لقد كتبت بلدي PageStatePersister
الفصل على أساس SessionPageStatePersister
الذي يكتب أحدث 10 Viewstate
S لجلسة إلى قرص مشترك. أعتقد أن هذا سوف يتوسع أفضل من الحفاظ عليه Viewstate
في الجلسة نظرًا لأن جميع خوادم الويب يمكنها الوصول إليها ، فلن يضطروا إلى التعامل مع انتهاء الصلاحية ، واستخدام ذاكرة أقل.
عندما يغلق المستخدم المتصفح ، فإنه يخطر الخادم ويحذف الخادم تلك الملفات التي لم يتم الوصول إليها لمدة ساعتين. حتى الآن جيد جدًا ، لكنني أتساءل عما إذا كان ذلك سيكون أسرع وأكثر كفاءة في التخزين Viewstate
في قاعدة بيانات SQL Server بدلاً من ذلك.
- كل
ViewState
الملف 30 كيلو في المتوسط. - في الوقت الحالي ، يقرأ فقط حقلًا مخفيًا للحصول على مفتاح ViewState والوصول إلى الملف مباشرةً و Deserialize. ليست هناك حاجة للفرز أو البحث.
- سيكون هناك ما
- يجب أن تكرر بشكل دوري من خلال الملفات وحذف أقدم ملف.
لذا ، ما هو أفضل في هذه الحالة: أ ملف ثابت نظام أو أ قاعدة البيانات?
المحلول
سيكون من الأفضل تخزين ViewState في SQL Server. إذا كنت تريد في النهاية الزيادة من 10 إلى 50 إلى 50 ، على سبيل المثال ، فستكون زيادة تافهة نسبيًا في حمل DB. يجب تجنب القرص I/O عمومًا كلما كان ذلك ممكنًا ، Moreso من DB I/O. ستعمل عمليات التنظيف أيضًا بشكل أفضل ، حيث أن السعي إلى الأراضي القاحلة من الملفات المهجورة على القرص ربما يكون أثقل بكثير من WHERE DateInserted > 20 minutes ago
.