تحميل جداول قاعدة البيانات للقراءة فقط في الذاكرة

StackOverflow https://stackoverflow.com/questions/42936

سؤال

يوجد في أحد تطبيقاتي جدول قاعدة بيانات بسعة 1 جيجابايت يُستخدم للبيانات المرجعية.يحتوي على كميات هائلة من القراءات التي تخرج من هذا الجدول ولكن لا توجد عمليات كتابة على الإطلاق.كنت أتساءل عما إذا كان هناك أي طريقة يمكن من خلالها تحميل البيانات في ذاكرة الوصول العشوائي (RAM) بحيث لا يلزم الوصول إليها من القرص؟

أنا أستخدم SQL Server 2005

هل كانت مفيدة؟

المحلول

إذا كان لديك ما يكفي من ذاكرة الوصول العشوائي (RAM)، فستقوم SQL بعمل رائع في تحديد ما يجب تحميله في ذاكرة الوصول العشوائي (RAM) وما يجب البحث عنه على القرص.

يُطرح هذا السؤال كثيرًا ويذكرني بالأشخاص الذين يحاولون تعيين "الأساس" يدويًا الذي ستعمل عليه عمليتهم - دع نظام التشغيل (أو قاعدة البيانات في هذه الحالة) يفعل ما تم تصميمه من أجله.

إذا كنت تريد التحقق من أن SQL يقرأ بالفعل بيانات البحث الخاصة بك من ذاكرة التخزين المؤقت، فيمكنك بدء اختبار التحميل واستخدام Sysinternals FileMon, عملية المستكشف و مراقب العملية للتحقق من عدم قراءة الجدول الذي يبلغ حجمه 1 جيجابايت.لهذا السبب، نقوم أحيانًا بوضع بيانات "البحث" الخاصة بنا في مجموعة ملفات منفصلة بحيث يكون من السهل جدًا مراقبتها عند الوصول إليها على القرص.

أتمنى أن يساعدك هذا.

نصائح أخرى

سوف ترغب في إلقاء نظرة على memcached.هذا هو ما تستخدمه الكثير من المواقع الضخمة (وذات الحجم الجيد) للتعامل مع مشكلات مثل هذه تمامًا.إذا كان لديك عدد قليل من الخوادم الاحتياطية، فيمكنك إعدادها بسهولة للاحتفاظ بمعظم بياناتك في الذاكرة.

http://en.wikipedia.org/wiki/Memcached

http://www.danga.com/memcached/

http://www.socialtext.net/memcached/

فقط لتوضيح المشكلة بالنسبة لـ sql2005 وما فوق:

تم تقديم هذه الوظيفة للأداء في SQL Server الإصدار 6.5.DBCC Pintable لديها آثار جانبية غير مرغوب فيها للغاية.وتشمل هذه القدرة على تلف تجمع العازلة.DBCC Pintable غير مطلوب وتم إزالته لمنع مشاكل إضافية.لا يزال بناء الجملة لهذا الأمر يعمل ولكنه لا يؤثر على الخادم.

DBCC قابل للطباعة سيتم تثبيت جدول بشكل صريح في المركز إذا كنت تريد التأكد من بقائه مخبأً.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top