SQL सर्वर - मेमोरी में बल DB?


14

हमारे पास एक beefy Windows 2008 x64 सर्वर (4 x 4 कोर सीपीयू, 32 जीबी रैम) SQL Server 2005 64-बिट चल रहा है। हमारे पास एक छोटा (6GB) लेकिन बहुत महत्वपूर्ण डेटाबेस है जो कुछ हद तक उपयोग में धीमा है जब तक कि पृष्ठों को मेमोरी में कैश नहीं किया जाता है (उपयोग बहुत यादृच्छिक है I / O इसलिए ऑड्स बहुत कम हैं एक दिया गया पृष्ठ स्मृति में है और अंतिम उपयोगकर्ता हैं प्रारंभिक सुस्ती के बारे में शिकायत)। डिस्क काफी तेजी से (स्थानीय 15K SAS) हैं, लेकिन मुझे लगता है कि ऐप कुछ हद तक अनाड़ी रूप से लिखा हुआ है (यह एक COTS समाधान है) इसलिए मैं सोच रहा हूं कि क्या SQL Server 2005 में मेमोरी में डेटाबेस को "बाध्य" करने का कोई तरीका है (2008 समर्थित नहीं है) शुरुआती कैश-फिलिंग ब्लूज़ से बचने में मदद करने के लिए वेंडर द्वारा, इसलिए हमें अभी तक उस पर अपग्रेड नहीं करना चाहिए)?

मेरी वर्तमान विधि यह है कि मैं मेमोरी में डेटा पृष्ठ प्राप्त करने के लिए स्क्रिप्ट में प्रत्येक तालिका से एक SELECT * चलाता हूं, लेकिन कुछ ऑब्जेक्ट्स (अनुक्रमित, पूर्ण पाठ खोज, आदि) इस विधि द्वारा कैश नहीं किए जाते हैं (और स्क्रिप्ट को संशोधित करने के लिए अनुक्रमित करने के लिए अनुक्रमित करें) कैश के लिए उपयुक्त क्‍लॉसेस को उबालना महासागर में जटिल है)।

जवाबों:


15

नहीं, दुर्भाग्य से डेटाबेस को कैश में मजबूर करने का कोई तरीका नहीं है। आपकी पाशविक बल विधि शायद सबसे सीधी है। आप बहुत कम सीमा सेटिंग के साथ इंडेक्स डिफ्रैग स्क्रिप्ट का उपयोग करके करीब आने में सक्षम हो सकते हैं, जैसे कि यह 1% खंडित होने पर इंडेक्स को फिर से बनाना, जैसे:

http://sqlserverpedia.com/wiki/Index_Maintenance

यह अधिक समय लेगा और डिस्क में अधिक लिखता है, लेकिन इसका आपके अनुक्रमितों को डीफ़्रैग करने और आंकड़ों को अपडेट करने का साइड इफेक्ट होगा, जो वैसे भी एक अच्छा विचार है।


9

ठीक है - मैं ब्रेंट के जवाब पर टिप्पणी नहीं कर सकता (फिर भी, जैसा कि मेरे पास पर्याप्त प्रतिनिधि नहीं है) - लेकिन यदि आप डीफ़्रैग मार्ग पर जा रहे हैं, तो जरूरी नहीं कि सूचकांक को फिर से बनाएं - जैसा कि नए सूचकांक का निर्माण करेगा, संभवतः डेटाबेस बढ़ रहा है अगर पर्याप्त खाली स्थान नहीं है, और गारंटी है कि आपका अगला लॉग बैकअप कम से कम आपके अनुक्रमित का आकार है और आपके लॉग में लॉग रिकॉर्ड का एक टन भी हो सकता है (पुनर्प्राप्ति मॉडल के आधार पर)। यदि आप डीफ़्रैग रूट करने जा रहे हैं, तो एक ALTER INDEX करें ... REORGANIZE, जिसे किसी भी खाली स्थान (अच्छी तरह से, एक 8k पृष्ठ) की आवश्यकता नहीं है, लेकिन पत्ता-स्तर को स्मृति में पढ़ेगा और केवल खंडित पर काम करेगा पृष्ठों की है। गैर-पत्ती का स्तर कुछ प्रश्नों के बाद जल्दी से आना चाहिए और (फैन-आउट के आधार पर) पत्ती के स्तर की तुलना में बहुत कम डेटा होना चाहिए।


मुझे यह पसंद है
मैट रोजिश

1

डेटाबेस ऑब्जेक्ट्स को पहली बार कैश से क्यों निकाल दिया जाता है? क्या आप SQL सेवाओं को पुनः आरंभ कर रहे हैं या डेटाबेस को ऑनलाइन बंद कर रहे हैं? या अन्य डेटाबेस से कैशिंग द्वारा उन्हें बाहर धकेला जा रहा है?

सादर,

एससीएम।


1
वर्तमान में सिस्टम परीक्षण में है और अक्सर रिबूट किया जाता है; उपयोगकर्ता इसके बाद शिकायत करते हैं। उत्पादन में उम्मीद से बहुत कम
मैट रोजिश 19

कनेक्शन दीक्षा से देरी की तरह लगता है; मुझे उम्मीद नहीं होगी कि उपयोगकर्ता कैश्ड / अनकैप्ड रीड्स में ध्यान देने योग्य अंतर देख पाएंगे; जब तक ओवरलोडेड या धीमी डिस्क जैसे अन्य कारक शामिल न हों।
SqlACID


1

मैंने पाया है कि कुछ परिदृश्य फुलस्कैन के साथ आँकड़ों को अद्यतन कर रहे थे, जिन पर प्रमुख तालिकाओं ने डेटा को कैश में डाल दिया था और मेरे बाद के डीएमएल को उन तालिकाओं के आसपास बहुत तेज बना दिया था। और यह तारीख के आंकड़ों का परिणाम नहीं था क्योंकि इसके परिणामस्वरूप निष्पादन योजनाओं में कोई बदलाव नहीं हुआ।


0

आप केवल उस डेटाबेस के साथ SQL सर्वर का दूसरा उदाहरण क्यों नहीं स्थापित करते हैं , और उस आवृत्ति के लिए न्यूनतम मेमोरी 6GB पर सेट करते हैं ?

यह गारंटी देगा कि आपके अन्य डेटाबेस आपके "छोटे लेकिन बहुत महत्वपूर्ण" डेटाबेस से मेमोरी को कभी नहीं जकड़ेंगे।

इसका मतलब यह भी होगा कि आप दूसरे उदाहरण को ऑफ़लाइन ले सकते हैं और आपका छोटा DB मेमोरी में बना रहेगा।


0

मैं आपके sql की जाँच करने के लिए प्रोफाइलर का उपयोग करूँगा। 'लॉजिकल' रीड्स की तुलना 'फिजिकल' रीड्स से करें। एसक्यूएल सर्वर स्मार्ट है और यह रैम का उपयोग करेगा जो इसके लिए सबसे अनुकूल परिणाम की आवश्यकता है।

यह भी जांच लें कि आपके ऑटोस्टैट्स अप टू डेट हैं।

क्वेरी के प्रकार और db तालिका आकारों के अधिक विचार के बिना यह थोड़ा अजीब लगता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.