قد لا توجد ذاكرة ظاهرية كافية عندما يكون لديك عدد كبير من قواعد البيانات في SQL Server

الأعراض

قد لا توجد مساحة العنوان الظاهرية المتوفرة كافية في عملية Microsoft SQL Server إذا تحققت كافة الشروط التالية عندما تقوم بتشغيل خادم SQL الافتراضي قيم التكوين:
  • لدى الملقم 2 غيغابايت أو أكثر من ذاكرة الوصول العشوائي.
  • هناك عدد كبير من قواعد البيانات الموجودة على النظام (على سبيل المثال، أكثر من 500).
  • يتم تحديث معظم قواعد البيانات (على سبيل المثال، قواعد بيانات لم يتم حالة "للقراءة فقط").
  • هناك اتصالات مستخدم نشط في نفس الوقت كافية استخدام معظم مؤشرات ترابط العامل SQL Server 255.
ملقم SQL قد تنشئ رسائل الخطأ التالية بعد أن يتم استخدام مساحة العنوان الظاهرية 2 غيغابايت كاملة لأعلى (أو بعد أن يتم استخدام مساحة العنوان الظاهرية 3 غيغابايت كاملة على SQL Server Enterprise Edition مع رمز التبديل /3GB في الملف Boot.ini).

الرسالة الأولى

خطأ: 17802، الخطورة: حالة 18: 3
تعذر إنشاء مؤشر ترابط حدث الملقم.

الرسالة 2

قد لا تفرخ SQL Server مؤشر ترابط process_loginread.

الرسالة الثالثة

تحذير: مسح ذاكرة التخزين المؤقت الإجراء لتحرير الذاكرة القريبة.


توزيع المخزن المؤقت: سرقة = 3454 الحرة = إجراءات 2540 = 138
Inram=0 Dirty=1108 Kept=35
I/O=0, Latched=0, Other=214821
عمليات جرد المخزن المؤقت: تنفيذ = الهدف 222096 = 222096 تجزئة = 215964
InternalReservation = 547 اكستيرنالريسيرفيشن = 0 دقيقة مجاناً = 512
إجراء التخزين المؤقت: توتالبروكس = 8 الصفحات الكلية إينوسيباجيس 138 = = 138
إدارة الذاكرة الديناميكية: سرقة = 3556
OS=497 General=1706
خطة الاستعلام محسن 755 = = 0
Utilities=9 Connection=1583
كائنات الذاكرة العمومية: الموارد تأمين 1119 = = 163 XDES = سقلكاتشي 1 = النسخ المتماثل 90 = لوكبيتيس 5 = سيرفيرجلوبال 2 = 20
تمنح إدارة الذاكرة الاستعلام: = انتظار 0 = الحد الأقصى 0 = 164370 المتوفرة = 164370

السبب

يخصص لكل قاعدة بيانات محدثة، SQL Server كتلة 64 كيلو بايت واحد على الأقل لاستخدامها في تنسيق سجلات قبل أنها المكتوبة إلى القرص. يحدث هذا التوزيع عندما يتم إنشاء السجل الأول لقاعدة بيانات، مثل أثناء عبارة إدراج أو تحديث أو حذف. حسب حجم قيم السجل التي تم إنشاؤها والنشاط التعديلات اللاحقة قد يؤدي إلى تخصيص اعتمادات إضافية 64 كيلو بايت. SQL Server 7.0 سوف تخصص أكثر من ثلاثة كتل 54 كيلوبايت. في SQL Server 2000، أعلى من عدد عمليات التخصيص لكل قاعدة بيانات دالة على عدد المعالجات التي يتم تكوين SQL Server هذا لاستخدام.

الحل البديل

استخدم المعلمة بدء الجميع لإجازة إضافية بدون تحفظ الذاكرة الظاهرية المتوفرة لقاعدة البيانات هذه. تم توثيق المعلمة الجميع في Readme.txt حزمة خدمة SQL Server 7.0 وكتب SQL Server 2000. يتضمن قسم "مزيد من المعلومات" في هذه المقالة إعدادات تنصح Microsoft تستخدم لتحديد القيمة المناسبة لهذا الإعداد.

مزيد من المعلومات

على جهاز كمبيوتر مع 2 غيغابايت أو أكثر من ذاكرة الوصول العشوائي جميع الاحتياطيات SQL Server ولكن 256 ميجابايت (SQL Server 7.0) أو 384 ميغابايت (SQL Server 2000) من مساحة العنوان الظاهرية أثناء عملية بدء التشغيل للاستخدام بواسطة تجمع المخزن المؤقت. بالإضافة إلى ذلك، لتخزين البيانات وإجراء التخزين المؤقت، يستخدم SQL Server ذاكرة تجمع المخزن المؤقت لخدمة معظم طلبات الذاكرة الأخرى من عمليات SQL Server بأقل من 8 كيلو بايت. الذاكرة غير محجوزة المتبقية بغرض استخدامها مع المخصصات الأخرى التي لا يمكن خدمتها من تجمع المخزن المؤقت. وتشمل هذه المخصصات، ولكن لا تقتصر على:
  • مكدسات وكتلة البيئة مؤشر ترابط المقترنة أية مؤشرات الترابط يقوم SQL Server بإنشاء. بعد أن يقوم SQL Server بإنشاء كافة مؤشرات الترابط العاملة 255، هذا هو 140 ميغابايت تقريبا.
  • عمليات التخصيص التي يتم إجراؤها بواسطة مكتبات الارتباط الديناميكي الأخرى أو العمليات التي تقوم بتشغيل في مساحة العنوان SQL Server (التي تختلف من نظام إلى نظام)، مثل:
    • موفري OLE DB من أية ملقمات المرتبطة.
    • كائنات COM التي تم تحميلها باستخدام نظام sp_OA للإجراءات المخزنة أو الإجراءات المخزنة الموسعة.
  • أي صور (.exe أو.dll) التي تم تحميلها في مساحة العنوان، حيث يشيع استخدام 20 إلى 25 ميغابايت، ولكن ربما أكثر إذا كنت تستخدم ملقمات المرتبطة sp_OA، أو توسيع الإجراءات المخزنة.
  • كومة العمليات وأكوام الأخرى التي قد تؤدي إلى SQL Server. أثناء عملية بدء التشغيل، هذا هو عادة 10 ميغابايت ولكن قد تكون أكثر إذا كنت تستخدم ملقمات المرتبطة أو sp_OAأو الإجراءات المخزنة الموسعة.
  • إرسال المخصصات من عمليات SQL Server التي تكون أكبر من 8 كيلو بايت، مثل التسهيلات اللازمة لخطط الاستعلام كبيرة، ومخازن التلقي المؤقتة إذا كان خيار تكوين حجم حزمة شبكة الاتصال قريبا من 8 كيلو بايت، وهكذا. لرؤية هذا العدد، ابحث عن قيمة محجوزة في نظام التشغيل الذي تم الإبلاغ عنه في DBCC MEMORYSTATUS والتي لم تبلغ عن عدد الصفحات 8 كيلو بايت. القيم النموذجية لهذا هي 5 ميغا بايت.
  • مصفوفة لتعقب معلومات الحالة لكل مخزن في تجمع المخزن المؤقت. وهذا عادة حوالي 20 ميغابايت، ما لم يتم تشغيل SQL Server مع تمكين ملحقات عمل إطارات عنوان (AWE) في هذه الحالة يمكن أن يكون أعلى بكثير.
على الأنظمة التي تحتوي على عدد كبير من قواعد البيانات، قد تشغل التوزيعات 64 كيلوبايت المطلوبة للسجل تنسيق كافة الذاكرة الظاهرية المتبقية. عند هذه النقطة، قد تفشل التخصيصات التالية، مما يؤدي إلى واحد أو أكثر من الأخطاء المسردة في قسم "مؤشرات الخطأ" في هذه المقالة.

باستخدام المعلمة بدء الجميع ، يمكن إرشاد ملقم SQL لمغادرة إضافية الذاكرة الظاهرية المتوفرة لكي تركيبة من هذه المخصصات المتعلقة بالسجل وغيرها من المخصصات العادية عدم نفاد مساحة العنوان الظاهرية.

يسرد الجدول التالي بعض نقاط البدء المقترح لقيمة الجميع تبعاً للعدد من قواعد البيانات وإصدار الخادم:
قواعد البياناتSQL Server 7.0SQL Server 2000
250-g134N/A
500-g185N/A
750-g237N/A
1000-g288-g288
1250-g340-g340
1500-g392-g392
وحسب هذا الجدول باستخدام القيم النموذجية المذكورة وتقوم أيضا على افتراض أن لا نشاط الخادم المرتبط أو sp_OA أو الإجراءات المخزنة الموسعة قيد الاستخدام. كما يستند على افتراض أن عدم استخدام الرعب وذلك منشئ ملفات التعريف SQL ليس قيد الاستخدام. أي من هذه الحالات قد يتطلب زيادة القيمة الجميع.

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

بالإضافة إلى ذلك، إنشاء العديد من قواعد البيانات له أكبر تأثير على الذاكرة الظاهرية. وهناك أيضا عمليات تخصيص الذاكرة في قاعدة البيانات التي قد تسبب شرط نفاد ذاكرة تجمع المخزن مؤقت. على سبيل المثال، قد تتلقى رسالة الخطأ التالية:
خطأ: 701, الخطورة: حالة 17,: 123.

هناك ذاكرة كافية لتشغيل هذا الاستعلام.
قد يكون هذا النوع من حالة نفاد الذاكرة الأكثر شيوعاً في SQL Server 2005 لأن SQL Server 2005 بتعقب بيانات التعريف في قاعدة بيانات أكثر من الإصدارات السابقة من SQL Server.

عند تعقب استخدام الفهرس باستخدام الإجراء sys.dm_db_index_usage_stats تخزين، العملية قد تتطلب مقداراً كبيرا من الذاكرة. تتطلب العملية مقداراً كبيرا من الذاكرة إذا كان لكل قاعدة بيانات العديد من الفهارس.
خصائص

رقم الموضوع: 316749 - آخر مراجعة: 19‏/01‏/2017 - المراجعة: 1

تعليقات