टेबल लेवल लॉकिंग के लाभ


7

टेबल लेवल लॉकिंग के क्या लाभ हैं जो MyISAM स्टोरेज इंजन द्वारा उपयोग किया जाता है?रो लेवल लॉकिंग में समवर्ती अपडेट जैसे बहुत सारे लाभ हैं और पढ़ता है कि टेबल लॉक नहीं करें।

संपादित करेंइसका व्यापक रूप से माना जाता है कि टेबल लेवल लॉकिंग गतिरोध से बचाता है।लेकिन संगामिति की कीमत पर गतिरोध की रोकथाम कैसे सार्थक है?

  0

[यह चर्चा] (http://dba.stackexchange.com/questions/1/what-are-the-main-differences-between-innodb-and-myisam) आपके लिए कुछ प्रासंगिक जानकारी हो सकती है। 14 sep. 112011-09-14 20:57:50

  0

यह चर्चा MyISAM बनाम InnoDB विशेषताओं के बारे में है जिसमें टेबल स्तर लॉकिंग के लाभों के बारे में कुछ भी नहीं है। 14 sep. 112011-09-14 21:05:21

5

MyISAM में गतिरोध नहीं है, लेकिन एक तरह से गतिरोध है, टेबल-लेवल लॉकिंग में सुधार है।

जब आप लॉक किए गए टेबल से INSERT/UPDATE/DELETE करने की कोशिश कर रहे हैं, तो आपको तब तक इंतजार करना होगा जब तक यह उपलब्ध न हो या जब तक आपको टाइमआउट न हो जाए (डिफ़ॉल्ट रूप से 28800 सेकंड)।एक पंक्ति-स्तरीय लॉकिंग इंजन पर गतिरोध के साथ, आप थोड़ा इंतजार करते हैं यदि यह मुफ़्त नहीं है और यदि सर्वर "अनंत लूप" का पता लगाता है - जहां 2 कनेक्शन एक पंक्ति नहीं छोड़ेंगे - तो यह दोनों कनेक्शनों को जल्दी से अस्वीकार कर देगा और एक गतिरोध देना।

यदि आप गतिरोध को हल करने की कोशिश कर रहे हैं, तो मैं आपको निम्नलिखित चीजों को देखने का सुझाव दूंगा:

  • क्या लेन-देन में गतिरोध खराब कोड पर होता है?क्या आपके लिए अपनी गणना पूरी करने और इसे अपडेट करने के लिए एक पंक्ति को "पकड़" रखना वास्तव में आवश्यक है?
  • क्या आपके बयान में शर्त के लिए कोई सूचकांक है?अन्यथा InnoDB वास्तव में अद्यतन किए जाने की प्रतीक्षा में पूरी तालिका को चिह्नित कर सकता है।
  • क्या ऐसा हो सकता है कि सर्वर पर हार्डडिस्क पर्याप्त तेजी से इनोबीडी परिवर्तन नहीं करता है?क्या सर्वर पर चेकपॉइंट ऑपरेशन इनोबीडी के साथ समस्याओं/स्टालों का कारण बनता है?
  • क्या यह ऑटो वेतन वृद्धि लॉकिंग के कारण है?यदि हां, तो शायद आपको अधिक उदार ऑटो वेतन वृद्धि पर नजर http://dev.mysql.com/doc/refman/5.1/en/innodb-auto-increment-handling.html चाहिए - http://dev.mysql.com/doc/refman/5.1/en/innodb-auto-increment-handling.html सेटिंग http://dev.mysql.com/doc/refman/5.1/en/innodb-auto-increment-handling.html (इस तरह के परिवर्तनों के कारण होने वाली कुछ समस्याओं को हल करने के लिए पंक्ति-स्तर लॉकिंग को भी देखें)

3

एक टेबल-लॉक (जैसे कि MyISAM द्वारा उपयोग किया गया) deadlock मुद्दों से मुक्त है।

  0

गतिरोध पर पहले जवाब देने के लिए BTW +1 !!! 14 sep. 112011-09-14 21:17:32


6

चूंकि mysql इस तरह से निष्पादन के लिए प्रश्नों को निर्धारित करता है:

  • अनुरोध लिखें (जैसे UPDATEs और DELETEs) पढ़ें अनुरोधों पर प्राथमिकता लें (चयन)
  • सर्वर FIFO तरीके (प्राप्त आदेश में) लिखता है

क्या लाभ हैं ?

डेडलॉक कभी भी MyISAM के साथ नहीं हो सकता।MySQL सर्वर इस प्रकार सभी विवाद, स्पष्ट (लॉक टेबल) या अंतर्निहित (किसी भी DML) का प्रबंधन कर सकता है।

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

अंतराल वाली किसी भी तालिका के लिए, OPTIMIZE TABLE चलाने से उन अंतरालों को हटा दिया जाएगा और एक बार फिर समवर्ती आवेषण की अनुमति दी जाएगी।

अधिक जानकारी के लिए कृपया "MySQL 5.0 Certification Study Guide" pages 408-412 Section 29.2 पढ़ें।

  0

इस तरह से गतिरोध कभी नहीं होगा, लेकिन इसका लाभ तब मिलता है जब इसकी तुलना बिना किसी संगति के नुकसान के साथ की जाती है।और डेटाबेस के हाई लोड स्लो थ्रूपुट पर। 14 sep. 112011-09-14 21:10:03

+2

myrickam के लाभ के बारे में @rickjames यह अद्यतन कैसे प्रबंधित करता है में नहीं है।यह एक गैर-लेखन गहन स्थिति में सबसे अच्छा है। 14 sep. 112011-09-14 21:13:01

  0

दुर्भाग्य से, लोगों का भार वर्डप्रेस, Drupal और MoveableTypes CMS's का उपयोग करता है, जिसका डिफ़ॉल्ट हमेशा MyISAM है।यदि किसी के पास उच्च-तस्करी वाली वेबसाइट है, तो उन्हें MyISAM से दूर होना होगा।अन्यथा, MyISAM पर्याप्त होना चाहिए। 14 sep. 112011-09-14 21:13:45

  0

@ सबसे सही है, लेकिन गहन प्रणाली में भी पढ़ें कि पंक्ति स्तर लॉकिंग की तुलना में इसका लाभ कैसे है? 14 sep. 112011-09-14 21:14:38

  0

यहां तक ​​कि एक रीड-इंटेसिव सिस्टम में भी, केवल एक DELETE या UPDATE स्टेटमेंट, MyISAM के जो भी लाभ हैं, उन्हें जल्दी से समाप्त कर देगा। 14 sep. 112011-09-14 21:16:59

  0

@rickjames को गतिरोध हटाने के लिए पंक्ति लॉक पर तालिका लॉक का 'लाभ' है।MyISAM के पास innodb पर अन्य लाभ हैं, लेकिन यह इस बारे में चर्चा नहीं है कि (innodb के कई लाभ हैं myisam!) 14 sep. 112011-09-14 21:25:24

  0

मुझे डर है कि संगठन MySQL का बहुत विशिष्ट है।कारण यह है कि MyISAM में टेबल लेवल लॉकिंग है बस इतना है कि वे पंक्ति-स्तरीय लॉकिंग को लागू करने में सक्षम नहीं थे (जो कि हमें थर्ड पार्टी को छोड़ दिया गया था जिसने हमें InnoDB दिया था)।लेकिन वे इसे स्पिन करने की कोशिश करते हैं जैसे कि वे सभी के साथ थे।मुझे याद है कि वे कहते थे कि आपको विदेशी चाबियों, लेनदेन, संग्रहीत प्रॉक्स आदि की आवश्यकता नहीं थी जब वास्तव में वे बस उन्हें नहीं कर सकते थे।नमक के एक ** बड़े ** चुटकी के साथ उनके प्रलेखन ले लो। 15 sep. 112011-09-15 18:28:52


3

दो फायदे।

ए।brute-force algorithm की समस्या को हल करने के लिए लॉकिंग टेबल brute-force algorithm का एक उदाहरण है।"काम" के उपयुक्त मूल्यों के लिए जानवर बल हमेशा काम करता है।

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

ख।आप निस्संदेह अलग-अलग निर्णय लेंगे क्योंकि आप इंजीनियरिंग के जानकार और एस्थेटिक निर्णय दोनों प्राप्त करेंगे।यह ऊपर "a" की वैधता को प्रभावित नहीं करता है।