सादे के साथ CREATE INDEX
, तालिका लिखने के लिए लॉक हो जाएगी, लेकिन पढ़ी नहीं जाएगी।
CREATE INDEX CONCURRENTLY
लिखने के ताले से भी बचने के लिए उपयोग करें ।
से पर PostgreSQL डॉक्सCREATE INDEX
:
जब इस विकल्प का उपयोग किया जाता है, तो PostgreSQL तालिका में समवर्ती आवेषण, अपडेट या हटाने से रोकने वाले किसी भी ताले को बिना सूचकांक का निर्माण करेगा; जब तक एक मानक इंडेक्स बिल्ड लॉक बाहर नहीं लिखता (लेकिन पढ़ता नहीं है) तब तक टेबल पर रहता है जब तक यह पूरा नहीं हो जाता। इस विकल्प का उपयोग करते समय जागरूक होने के लिए कई चेतावनी हैं - बिल्डिंग इंडेक्स को समवर्ती देखें ।
और अधिक विशेष रूप से ( @ypercube की तरह टिप्पणी ):
PostgreSQL लिखते हुए बिना लॉक किए इंडेक्स बनाने का समर्थन करता है । के CONCURRENTLY
विकल्प को निर्दिष्ट करके इस विधि को लागू किया जाता है CREATE INDEX
। जब इस विकल्प का उपयोग किया जाता है, तो PostgreSQL को तालिका के दो स्कैन करने चाहिए, और इसके अलावा यह उन सभी मौजूदा लेनदेन की प्रतीक्षा करनी चाहिए जो संभावित रूप से सूचकांक को समाप्त करने के लिए उपयोग कर सकते हैं। इस प्रकार इस विधि को एक मानक इंडेक्स बिल्ड की तुलना में अधिक कुल काम की आवश्यकता होती है और इसे पूरा करने में अधिक समय लगता है। हालाँकि, चूंकि यह सामान्य ऑपरेशन को इंडेक्स के निर्माण के दौरान जारी रखने की अनुमति देता है, इसलिए यह विधि उत्पादन परिवेश में नए इंडेक्स को जोड़ने के लिए उपयोगी है।
बोल्ड जोर मेरा।