2009-05-13 13 views
11

मैं अपने डेटाबेस पर तनाव परीक्षण कर रहा हूं, जो SQL सर्वर 2008 64-बिट पर 64-बिट मशीन पर 10 जीबी रैम के साथ चल रहा है।एसक्यूएल सर्वर 2008 बहुत मेमोरी लेता है?

मेरे पास 400 धागे हैं। प्रत्येक थ्रेड डेटाबेस को हर सेकेंड से पूछताछ करता है, लेकिन क्वेरी समय में समय नहीं लगता है, क्योंकि एसक्यूएल प्रोफाइलर कहता है, लेकिन 18 घंटों के बाद SQL सर्वर 7.2 जीबी रैम और 7.2 जीबी वर्चुअल मेमोरी का उपयोग करता है।

क्या यह सामान्य व्यवहार है? अप्रयुक्त स्मृति को साफ करने के लिए मैं SQL सर्वर को कैसे समायोजित कर सकता हूं?

+0

आप इन आंकड़ों कैसे माप रहे हैं? ध्यान रखें कि टास्क मैनेजर उन आंकड़ों को दे सकता है जो भ्रामक हैं (मैं हमेशा परफॉर्म का चयन करता हूं, और निजी/वर्चुअल बाइट्स को देखता हूं) –

+0

मैं कार्य प्रबंधक का उपयोग कर एसक्यूएल सेवर की निगरानी कर रहा हूं और अलग-अलग डॉटनेट एप्लिकेशन जो PerformanceCounter क्लास का उपयोग करता है –

उत्तर

27

एसक्यूएल सर्वर को मेमोरी में सामानों के भार को कैच करके प्रदर्शन में सुधार करने के लिए, जितनी मेमोरी मिल सकती है उतनी मेमोरी का उपयोग करने के लिए डिज़ाइन किया गया है। अनुशंसा SQL सर्वर के लिए समर्पित मशीनों का उपयोग करना है, जो इसे एक पूरी तरह से मान्य दृष्टिकोण बनाता है, क्योंकि यह किसी और को स्मृति की आवश्यकता नहीं है। तो आपको इसके बारे में चिंता नहीं करनी चाहिए; यह बिल्कुल सामान्य है।

यह कहा गया कि, यदि आप लाइव वातावरण की बजाय विकास मशीन पर हैं, तो आप अपने बॉक्स को बंद करने के लिए स्मृति की मात्रा को सीमित करना चाह सकते हैं। इस मामले में SQL सर्वर प्रबंधन स्टूडियो को खोलने का सबसे आसान तरीका है, सर्वर पर राइट-क्लिक करें और "गुण" का चयन करें, फिर "मेमोरी" टैब पर आप अधिकतम सर्वर मेमोरी सेट कर सकते हैं। जब आप कॉन्फ़िगर स्मृति ओएस के लिए मुफ्त समग्र स्मृति के कम से कम 10% छोड़ने के लिए कोशिश

1

ग्रेग के जवाब बंद जा रहे हैं,। यदि एक लंबी क्वेरी पर एसक्यूएल नियंत्रण से बाहर हो जाता है तो आप चाहते हैं कि कुशन रिमोट में सक्षम हो और अभी भी बॉक्स को प्रशासित करे।

4

दरअसल, जो भी आप ढूंढ रहे हैं उसे प्राप्त करने के लिए एक साफ छोटी सी चाल है। समस्या/प्रश्न यह है कि SQL सर्वर को "अस्थायी रूप से" स्मृति को कैसे छोड़ना है, इसे आक्रामक रूप से आवश्यकता नहीं हो सकती है, फिर इसे आवश्यकतानुसार दोबारा शुरू करें।

ऐसा करने के लिए, निम्न स्क्रिप्ट चलाएँ: {कम पानी निशान} और {उच्च पानी के निशान} (MB में) के लिए अपने स्वयं के मूल्यों में

EXEC sys.sp_configure N'show advanced options', N'1' 

RECONFIGURE WITH OVERRIDE 

GO 

EXEC sys.sp_configure N'max server memory (MB)', N'{low water mark}' 

GO 

RECONFIGURE WITH OVERRIDE 

GO 

EXEC sys.sp_configure N'max server memory (MB)', N'{High water mark}' 

GO 

RECONFIGURE WITH OVERRIDE 

GO 

EXEC sys.sp_configure N'show advanced options', N'0' 

RECONFIGURE WITH OVERRIDE 

GO 

रखें।

यह एक न्यूनतम राशि के लिए नीचे स्मृति के लिए मजबूर करेंगे फिर उसे पुनः खोलें तुरंत अगर एसक्यूएल सर्वर की जरूरत है/यह चाहता है।

एकमात्र चीज करने के लिए छोड़ दिया गया है, स्क्रिप्ट को आवधिक आधार पर चलाने के लिए शेड्यूल किया गया है।

सिफारिश:

कहाँ एसक्यूएल सर्वर भारी नहीं किया जाता है, इस हर 6 घंटे स्वचालित रूप से चला कर देखें। यदि इसका भारी उपयोग किया जाता है, तो हर 24 घंटों में एक बार दौड़ें (रात के मध्य में या दिन शुरू होने से ठीक पहले)। आपका उपयोग अलग-अलग होगा।

संबंधित मुद्दे