سؤال

نحن نفكر حاليًا في إنشاء نظام ذاكرة تخزين مؤقت للاحتفاظ بالبيانات المسحوبة من قاعدة بيانات SQL وإتاحتها لعدد من التطبيقات الأخرى (موقع ويب، خدمة ويب، وما إلى ذلك).نحن نتخيل أن ذاكرة التخزين المؤقت تعمل كخدمة Windows وتتكون بشكل أساسي من قاموس ذكي يحتوي على إدخالات ذاكرة التخزين المؤقت.سؤالي هو، هل هناك حد لمجموعة عمل التطبيق (سيتم تشغيله ضمن Windows Server 2003)؟أم أن مقدار الذاكرة الفعلية هو الحد الأقصى؟

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

المحلول

32 بت أم 64 بت؟32 بت هو 2 جيجابايت (لعملية)، 64 بت هو 1 تيرابايت (خادم إصدار المؤسسة 2003).

ومع ذلك، الحد الأقصى لحجم كائن CLR هو 2 جيجابايت حتى على 64 بت.

تحديث: المعلومات المذكورة أعلاه كانت صحيحة في عام 2008.يرى جواب اوهاد لمزيد من المعلومات الحديثة.يمكن أن يحتوي خادم Windows 2016 على حد أقصى 24 تيرابايت.

نصائح أخرى

ولقد تم مؤخرا القيام التنميط واسعة النطاق حول حدود الذاكرة في .NET على عملية 32BIT و. نحن جميعا الحصول على قصف من قبل فكرة أننا يمكن تخصيص ما يصل إلى 2.4GB (2 ^ 31) في تطبيق. NET ولكن للأسف هذا غير صحيح :( إن عملية تطبيق لها أن مساحة كبيرة لاستخدام ونظام التشغيل يقوم عظيم مهمة إدارتها بالنسبة لنا، ومع ذلك، وصافي نفسها يبدو أن النفقات العامة الخاصة به والتي تمثل ما يقرب من 600-800MB لتطبيقات العالم الحقيقي النموذجية التي دفع الحد الذاكرة. وهذا يعني أنه بمجرد تخصيص مجموعة من الأعداد الصحيحة ويستغرق ذلك نحو 1.4GB، يجب أن نتوقع أن نرى OutOfMemoryException ().

والواضح في 64BIT، هذا الحد يحدث الطريق في وقت لاحق (دعونا الدردشة في 5 سنوات :))، ولكن الحجم العام من كل شيء في الذاكرة ينمو أيضا (أنا وجدت انها ~ 1.7 إلى ~ 2 مرات) بسبب زيادة حجم الكلمة .

ما أعرف على وجه اليقين هو أن فكرة الذاكرة الظاهرية من نظام التشغيل بالتأكيد لا يمنحك مساحة التخصيص لا نهاية لها تقريبا في عملية واحدة. أنها ليست سوى هناك بحيث 2.4GB الكامل للتوجيه لجميع (عديدة) التطبيقات التي تعمل في وقت واحد.

في ويندوز 32bit يمكنك الحصول على أكثر قليلا الذاكرة عن طريق تشغيل ويندوز مع العلم / 3GB وضعف التطبيق ك "عنوان كبير على علم"

وماتياس،

وليس في الواقع جوابا على سؤال مباشر، ولكن وسيلة أخرى من الاقتراب من هذه المشكلة التي سوف تحصل حول بعض العثرات الكبيرة، التي يمكن أن تكون مشكلة كبيرة مع حلول التخزين المؤقت. (آسف ليس لدي أي الموصى بها القراءة في هذا الشأن).

ونفذنا هذا في المشروع السابق، وأنه لم يخلق مشكلات أخرى.

لوصول دون اتصال، يمكنك استخدام صريحة SQL على سطح المكتب لخلق مرآة من قاعدة البيانات الخاصة بك (أو مجرد بت تحتاج إلى التخزين المؤقت)؟ ثم كل ما عليك القيام به هو التحول الذي قاعدة بيانات التطبيق الخاص بك يشير إلى. يمكنك حتى استخدامها بيانات الاختلاف تخزين وإعادة هذه إلى الخادم - على الرغم من هذا لديه مشاكل أخرى. يمكنك تغيير الأذونات على النسخة المحلية لجعل هذه واحدة للقراءة فقط إذا كان هذا هو ما ينبغي أن يكون.

والقواميس كنت تفكر في خلق الصوت بشكل ملحوظ مثل فهارس SQL. وأود أن الاعتماد على مزود للقيام بهذه المهمة بالنسبة لك إذا كنت تستطيع مهندس على هذا النحو. لماذا إعادة اختراع تلك العجلة؟ إذا قمت بذلك، سيكون لديك للتفكير مليا انتهاء ذاكرة التخزين المؤقت وإدارة الذاكرة - لا سيما إذا كان هذا هو خدمة ويندوز

وحظا سعيدا،

وسام

كما هو الحال مع أي برنامج Windows آخر، فأنت مقيد بمساحة العنوان.إنه:وفي الإصدار 32 بت، يمكن أن يكون لديك 2 غيغابايت من مساحة العنوان.على x64، يمكن أن يكون لديك 8 تيرابايت.

إذا لم يكن لديك 8 تيرابايت من الذاكرة الفعلية، فسوف يبدأ في الصفحة.

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