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

SQL सर्वर में पैरामीटर सूँघना (या स्पूफ़िंग)

एफवाईआई - जब आप एसक्यूएल 2005 और पैरामीटर के साथ संग्रहित प्रोसेस के साथ काम कर रहे हों तो आपको कुछ और जागरूक होना चाहिए।

एसक्यूएल सर्वर संग्रहित प्रो की निष्पादन योजना को पहले पैरामीटर के साथ संकलित करेगा जिसका उपयोग किया जाता है। तो अगर आप इसे चलाते हैं:

usp_QueryMyDataByState 'Rhode Island'

एक छोटे राज्य के डेटा के साथ निष्पादन योजना सबसे अच्छा काम करेगी। लेकिन अगर कोई मुड़कर भागे:

usp_QueryMyDataByState 'Texas'

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

यह वह जगह है जहाँ क्वेरी योजनाएँ आती हैं, और SQL Server 2008 बहुत सारी नई सुविधाएँ प्रदान करता है जो DBA को किसी विशेष क्वेरी योजना को लंबे समय तक पिन करने में मदद करती हैं, इससे कोई फर्क नहीं पड़ता कि पहले कौन से पैरामीटर कॉल किए जाते हैं।

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



  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 सर्वर में दिनांक से दिन, माह और वर्ष प्राप्त करने के लिए 6 कार्य

  2. तालिका में पहचान कॉलम के लिए एक स्पष्ट मान केवल तभी निर्दिष्ट किया जा सकता है जब कॉलम सूची का उपयोग किया जाता है और IDENTITY_INSERT SQL सर्वर पर होता है

  3. सिस्टम टेबल मास्टर..spt_values ​​का उद्देश्य क्या है और इसके मूल्यों के अर्थ क्या हैं?

  4. Ubuntu 18.04 पर Azure डेटा स्टूडियो स्थापित करें

  5. पंक्ति मानों को CSV में मर्ज करें (SQL सर्वर के लिए उर्फ ​​GROUP_CONCAT)