वास्तव में व्यस्त तालिका पर एक सूचकांक बनाना


11

हमारे पास insert\selectहर बार बहुत सी टेबल होती है (जैसे 100 मशीनें हर सेकंड में अपडेट करना)।

एक मेज पर एक सूचकांक बनाने का सबसे अच्छा तरीका क्या है जिसे एक सेकंड के लिए भी लॉक नहीं किया जा सकता है?

यदि मैं सूचकांक बनाता हूं, तो मुझे यकीन है कि यह अनुरोधों को बंद कर देगा, और मैं ऐसा नहीं कर सकता।

यह 1 मिलियन पंक्तियों वाली एक बड़ी तालिका है +।

जवाबों:


12

इस तरह का कोई विकल्प नहीं है CREATE INDEX WITH (NOLOCK)(और यहां तक NOLOCKकि एक प्रश्न पर भी ताले लगते हैं, केवल संकेत के बिना कम)।

सबसे अच्छा आप WITH (ONLINE = ON)जो करने जा रहे हैं , वह अभी भी ऑपरेशन की शुरुआत और अंत में ताले लेता है (दोनों तालिका से संबंधित पुन: योजना से संबंधित हैं - अधिक विवरण के लिए पॉल रैंडल द्वारा इस ब्लॉग पोस्ट को देखें )।

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

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