Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर कैश प्रश्न

जब आप अपनी क्वेरी करते हैं, तो डेटा को ब्लॉक में मेमोरी में पढ़ा जाता है। ये ब्लॉक स्मृति में रहते हैं लेकिन वे "वृद्ध" हो जाते हैं। इसका मतलब है कि ब्लॉक को अंतिम एक्सेस के साथ टैग किया गया है और जब Sql सर्वर को एक नई क्वेरी के लिए दूसरे ब्लॉक की आवश्यकता होती है और मेमोरी कैश भर जाता है, तो हाल ही में उपयोग किए गए ब्लॉक (सबसे पुराने) को मेमोरी से बाहर कर दिया जाता है। (ज्यादातर मामलों में - फुल टेबल स्कैन ब्लॉक्स तुरंत पुराने हो जाते हैं ताकि फुल टेबल स्कैन ओवररनिंग मेमोरी और सर्वर को रोक सकें)।

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

तो आपका प्रश्न वास्तव में क्या पूछ रहा है "क्या मुझे स्मृति में पढ़ने के बिना स्मृति में आवश्यक डेटा ब्लॉक मिल सकते हैं (वास्तव में एक प्रश्न कर रहे हैं)?"। उत्तर नहीं है, जब तक कि आप संपूर्ण तालिकाओं को कैश नहीं करना चाहते हैं और उन्हें स्थायी रूप से स्मृति में रहना चाहते हैं, जो क्वेरी समय (और इस प्रकार डेटा आकार) से आप वर्णन कर रहे हैं, शायद यह एक अच्छा विचार नहीं है।

प्रदर्शन में सुधार के लिए आपकी सबसे अच्छी शर्त आपकी क्वेरी निष्पादन योजनाओं को देख रही है और यह देखना है कि क्या आपकी अनुक्रमणिका बदलने से बेहतर परिणाम मिल सकता है। दो प्रमुख क्षेत्र हैं जो यहां प्रदर्शन में सुधार कर सकते हैं:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर 2008 से अप्रबंधित C/C++ DLL फ़ंक्शन को कॉल करना

  2. डेटाबेस में मान डालने में समस्या

  3. संग्रहीत प्रक्रिया नहीं मिल सका

  4. SharePoint 2010 - Kerberos से दावा-आधारित प्रमाणीकरण में परिवर्तन

  5. सभी तालिकाओं के लिए बाधाओं को कैसे अक्षम करें और इसे सक्षम करें?