it-swarm.asia

لا تحد ذاكرة SQL Server Max من استخدام RAM

أود مداخلتك في هذا الشأن. لدي خادم SQL 2008r2 Ent. إد. 64 بت مع 16 نواة و 64 جيجا بايت رام. هناك نسخة واحدة من خادم SQL مصححة بالكامل اعتبارًا من 20111014.

تم ضبط الحد الأقصى للذاكرة العشوائية على 60000 ميجابايت. مقدار الكبش المجاني هو 0 وفقًا لمدير المهام بعد بضعة أيام عبر الإنترنت.

إذا قمت بتغيير الحد الأقصى للذاكرة العشوائية إلى أقل من 53 جيجابايت ، فسوف يستقر بعد بضعة أيام لتحقيق الاستقرار والحصول على بعض ذاكرة الوصول العشوائي المجانية.

إنها عملية SQL التي تقوم بتخصيص الكبش وفقًا لمدير المهام. كيف أتصالح مع المشكلة حقًا؟ وغني عن القول أنني أجريت الكثير من التجارب بالفعل ولكن لم أحل هذا حسب رغبتي حتى الآن. ويا نحن لا نحصل على مجاعة الذاكرة النموذجية متخلفة عندما يكون الكبش المتاح إلى 0 مجانًا.

التحديث 1:

مستوحى من سؤال/سؤال آخر يتعلق RAM في هذه الصفحة https://dba.stackexchange.com/a/7062/2744 . لقد استخدمت هذين الاثنين لرؤية ما هي RAM المستخدمة.

SELECT TOP ( 10 )
        [type] AS [Memory Clerk Type] ,
        SUM(single_pages_kb) AS [SPA Mem, Kb]
FROM    sys.dm_os_memory_clerks
GROUP BY [type]
ORDER BY SUM(single_pages_kb) DESC
OPTION  ( RECOMPILE ) ;

SELECT  DB_NAME(database_id) AS [Database Name] ,
        COUNT(*) * 8 / 1024.0 AS [Cached Size (MB)]
FROM    sys.dm_os_buffer_descriptors
--WHERE   database_id > 4 -- system databases
--        AND database_id <> 32767 -- ResourceDB
GROUP BY DB_NAME(database_id)
ORDER BY [Cached Size (MB)] DESC
OPTION  ( RECOMPILE ) ;

يتم تحديد المبلغ الموضح بواسطة هذه أولاً 7948432 Kb الثانية واحدة 44030،57812 ميجابايت والتي يبلغ إجماليها حوالي 52 جيجابايت المستخدمة من قبل خادم sql ... لذلك أين بقية بلدي RAM go؟ :-) مدير المهام يظهر الآن مخبأًا 363 ومتاحًا 401 و 40 مجانًا و sqlservr.exe يحتوي على مجموعة ذاكرة خاصة 64459656. تم تعيين الحد الأقصى لرام على 60000 ميجابايت كما كان من قبل.

18
Martin Sjöberg

يحدد إعداد الذاكرة القصوى لخوادم SQL حدود استخدام تجمع المخزن المؤقت فقط. سيكون هناك تخصيصات متغيرة ولكن كبيرة مطلوبة فوق هذا الحد.

Jonathan Kehayias's ، Christian Bolton و John Samson لديهم مستوى 300/400 من المنشورات حول الموضوع. Brent Ozar لديه قراءة أسهل للمقالة التي قد تكون مكانًا أفضل للبدء.

ذات الصلة أيضًا: SQL Server 2008 R2 "Ghost Memory"

20
Mark Storey-Smith

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

  • بريد قاعدة البيانات
  • SQLCLR
  • الإجراءات المخزنة الموسعة
  • الثنائيات منهم ذواتهم
  • بريد SQL
  • SSIS
  • SSAS
  • SSRS
16
mrdenny

من SQL 2012 وما بعده ، تم استبدال single_pages_kb بصفحات_kb في DMV. https://msdn.Microsoft.com/en-us/library/ms175019.aspx؟f=255&MSPPError=-2147217396

لذا إذا كنت ترغب في تشغيل الاستعلام المضمن في السؤال ، في خادم 2012+ ، قم بإزالة السلسلة المفردة.

3
Razvan Zoitanu

http://msdn.Microsoft.com/en-us/library/ms178067.aspx

لتقليل الحد الأقصى لذاكرة الخادم ، قد تحتاج إلى إعادة تشغيل SQL Server لتحرير الذاكرة.

ما أفهمه هو أنه إذا لم تتم كتابة صفحة في تجمع المخزن المؤقت على القرص ، فلن يتم تحريرها حتى يتم ذلك.

هل يؤدي خفض إعداد الحد الأقصى للذاكرة إلى قيام SQL Server بمسح الصفحات المتسخة؟

يمكنه مراقبة مدير المخزن المؤقت في perfmon للتحقق من ذلك. الأداء -> SQLServer: إدارة المخزن المؤقت: صفحات قاعدة البيانات

2
Craig Efrein