2010-11-24 12 views
5

मैंने अक्सर लोगों को यह कहते हुए सुना कि संग्रहित प्रक्रियाएं पूर्व-संकलित हैं। इसका क्या मतलब है?"संग्रहित प्रक्रियाओं का पूर्व-संकलित" का अर्थ क्या है?

दरअसल हम संग्रहित प्रो में प्रश्न लिखते हैं और फिर संकलित करते हैं। यदि कोई वाक्य रचनात्मक त्रुटि है, तो यह शिकायत करता है। तो अगर ऐसा है तो संकलन उस समय हो रहा है।

फिर, "प्री" क्या संदर्भित करता है?

+0

यह वास्तव में "पूर्व संकलित" है। यह "संकलन करने के लिए क्रिया" का पिछला भाग है। – thomaspaulb

उत्तर

4

वे वास्तव में पूर्व पार्स और वाक्य रचना/अर्थ विज्ञान बनाएँ और परिवर्तन

"Batch Compilation, Recompilation, and Plan Caching Issues in SQL Server 2005 "

"संकलन" के लिए एक क्वेरी योजना मांग

पर होता है संकलन और फिर से उपयोग के अवलोकन के लिए, को देखने पर जाँच कर रहे हैं

शब्दावली (आपके मतलब में) SQL Server 6.5 पर वापस जाती है। पिछले श्वेत पत्र लिंक में हाइलाइट किया गया "नया" तरीका SQL सर्वर 7.0

+0

महोदय, आपने पूर्व-पार्स किया था। यहां क्या है मैं इस क्षेत्र में बहुत नया हूं। तो मेरा सवाल बहुत मूर्खतापूर्ण लग सकता है। लेकिन मुझे सिखाओ .. मैं सीखना चाहता हूं –

+0

योजना बनाने के लिए CREATE/ALTER की जांच करना अलग है। वाक्यविन्यास आदि को CREATE/ALTER पर चेक किया गया है। इस बिंदु पर, संग्रहित proc संकलित नहीं है। कृपया मेरे यूडेट को दूसरे लिंक के साथ देखें जहां "प्री संकलित" – gbn

1

माइक्रोसॉफ्ट एसक्यूएल सर्वर में, संग्रहित प्रक्रियाओं को पहली बार चलाने के लिए एक क्वेरी योजना में संकलित किया जाता है।

बाद के रनों पर, उन्हें कभी-कभी स्रोत से पुन: संकलित किया जाता है, लेकिन हमेशा नहीं। यही कारण है कि उन्हें "पूर्व संकलित" कहा जाता है।

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

+0

से आता है इसका मतलब है कि वे पहले से संकलित नहीं होते हैं .. क्योंकि "संग्रहीत प्रक्रियाओं को पहली बार चलाने के लिए एक क्वेरी प्लान में संकलित किया जाता है" मुझे यह इंप्रेशन देता है कि पहली बार जब हम अपनी पहली क्वेरी लिखते हैं, केवल उस समय केवल क्वेरी प्लान को पकड़ लिया जाता है। और अगली बार, जब हम एसपी को संशोधित करते हैं, तो पुनर्मूल्यांकन क्वेरी प्लान के आधार पर होता है .. अगर मैं गलत हूं तो मुझे सही करें! –

+0

यह सच है कि उन्हें 'ALTER PROC' चलाने के बाद कभी भी पुन: संकलित नहीं किया जाता है, इसलिए यह तकनीकी रूप से पूर्व-संकलन नहीं है। लेकिन जहां तक ​​मुझे पता है कि उन्हें हमेशा 'EXTER PROC' के बाद पहले 'EXEC' पर पुन: संकलित किया जाता है। एक कैश किए गए क्वेरी प्लान का उपयोग तब किया जाता है जब कोई 'ALTER' नहीं होता है और पुन: संकलन को मजबूर करने के लिए कोई ओवरराइडिंग विकल्प उपयोग नहीं किया जाता है। – thomaspaulb

+0

यह भी देखें: http://stackoverflow.com/questions/1048572/how-to-precompile-stored-procedures-in-sql- सर्वर – thomaspaulb

1

संग्रहीत प्रो की एसक्यूएल सामग्री को चलाने के लिए पार्स नहीं किया जाएगा। एसक्यूएल पार्सिंग बहुत समय लेने वाला ऑपरेशन हो सकता है।

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