डेटा ब्लॉक प्रबंधन मोड। नियंत्रित अवरुद्ध का तंत्र

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

  • असामान्य पढ़ें - जबकि एक लेनदेन सरणी बदलता है, दूसरा इसे बदल नहीं सकता है, लेकिन पढ़ सकता है। अलगाव का निचला स्तर।
  • पढ़ा। - जबकि एक लेनदेन सरणी बदलता है, दूसरा इसे बदल नहीं सकता है, न ही पढ़ा जा सकता है
  • दोहराने योग्य पढ़ें। - जबकि एक लेनदेन एक सरणी पढ़ता है, दूसरा इसे बदल नहीं सकता है, लेकिन पढ़ सकते हैं
  • Seriaiaizable - जबकि एक लेनदेन एक सरणी पढ़ता है, दूसरा इसे बदल नहीं सकता है या पढ़ा जा सकता है। सभी संचालन सुसंगत हैं। अधिकतम अलगाव स्तर।

यदि विन्यास 1 सी के लिए: उद्यम स्थापित स्वचालित लॉक मोडडीबीएमएस को अलग करने वाला लेनदेन चुना गया है। एमएस एसक्यूएल के मामले में, यह दोहराए जाने योग्य या धारावाहिक स्तर होगा, यानी, डेटा अलगाव अधिकतम के करीब है। यह डेटा की शुद्धता के साथ समस्याओं को हल करता है, लेकिन उपयोगकर्ताओं के गहन काम के दौरान डीबीएमएस स्तर पर ताले की उपस्थिति का कारण बन सकता है। इसलिए, 1 सी में: कंपनी की अपनी कार्यक्षमता ताले के साथ होती है, जो नियंत्रित ताले को शामिल करने से सक्रिय होती है। इस मामले में, एमएस एसक्यूएल के लिए लेनदेन अलगाव स्तर को पढ़ा जाएगा। मंच स्वयं डीबीएमएस पर भरोसा किए बिना डेटा को अलग कर देगा।

कॉन्फ़िगरेशन गुणों में नियंत्रित लॉक मोड का समावेशन होता है:

इसके अलावा, लॉक मोड विशिष्ट कॉन्फ़िगरेशन ऑब्जेक्ट्स के लिए सेट किया जा सकता है:

यदि संपूर्ण रूप से कॉन्फ़िगरेशन स्वचालित लॉक मोड स्थापित किया गया है, तो कॉन्फ़िगरेशन ऑब्जेक्ट के लिए सेट किए गए मोड के बावजूद सभी रजिस्टरों पर सभी लेन-देन विशेष रूप से स्वचालित मोड में काम करेंगे। यदि प्रबंधित समान है, तो सभी लेनदेन प्रबंधित में होंगे। यदि कॉन्फ़िगरेशन स्वचालित रूप से कॉन्फ़िगरेशन के लिए नियंत्रित होता है, तो प्रत्येक ऑब्जेक्ट के लिए मोड इसकी सेटिंग्स द्वारा निर्धारित किया जाएगा।

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

  1. दस्तावेज़ मोड स्वचालित, स्वचालित मोड पंजीकृत करें -\u003e
  2. दस्तावेज़ मोड नियंत्रित, रजिस्टर मोड प्रबंधित-\u003e प्रबंधित मोड में प्रवेश रजिस्टर
  3. दस्तावेज़ मोड स्वचालित, रजिस्टर मोड प्रबंधित -\u003e स्वचालित मोड में रिकॉर्ड रजिस्टर करें
  4. दस्तावेज़ मोड नियंत्रित, स्वचालित रजिस्टर पंजीकृत करें -\u003e असाधारण स्थिति (त्रुटि)

प्रश्न 06.5 9 परीक्षा 1 सी: मंच पर पेशेवर। किसी भी रजिस्टर पर दस्तावेज़ का संचालन करते समय यदि दस्तावेज़ में स्वचालित लेनदेन लॉक नियंत्रण मोड होता है, और रजिस्टर प्रबंधित होता है (कॉन्फ़िगरेशन गुणों में, "स्वचालित और प्रबंधनीय" विकल्प का उपयोग किया जाता है, तो ऐसा आचरण बढ़ेगा:

सही उत्तर दूसरा है, पहले लेनदेन पर परिभाषित करें, अगर स्वचालित हो, तो सबकुछ स्वचालित रूप से होता है।

प्रश्न 06.60 परीक्षा 1 सी: मंच पर पेशेवर। किसी भी रजिस्टर पर दस्तावेज़ का संचालन करते समय यदि दस्तावेज़ में एक नियंत्रित लेनदेन लॉक नियंत्रण मोड होता है, और रजिस्टर स्वचालित होता है (कॉन्फ़िगरेशन गुणों में, "स्वचालित और प्रबंधनीय" विकल्प का उपयोग किया जाता है, तो ऐसा आचरण का नेतृत्व करेगा:

  1. एक गलत स्थिति के उद्भव के लिए
  2. पूरा लेनदेन स्वचालित रूप से किया जाएगा
  3. संपूर्ण लेनदेन प्रबंधित मोड में किया जाएगा।

सही उत्तर पहला है, पहले लेनदेन पर परिभाषित करें, यदि प्रबंधित किया गया है, तो त्रुटि।

प्रश्न 06.61 परीक्षा 1 सी: मंच पर पेशेवर। किसी भी रजिस्टर पर दस्तावेज़ का संचालन करते समय यदि दस्तावेज़ में स्वचालित लेनदेन लॉक नियंत्रण मोड होता है, और रजिस्टर प्रबंधित होता है (कॉन्फ़िगरेशन गुणों में, "प्रबंधनीय" विकल्प का उपयोग किया जाता है), तो ऐसा आचरण का नेतृत्व करेगा:

  1. एक गलत स्थिति के उद्भव के लिए
  2. पूरा लेनदेन स्वचालित रूप से किया जाएगा
  3. संपूर्ण लेनदेन प्रबंधित मोड में किया जाएगा।

"1 सी: एंटरप्राइज़" सिस्टम आपको दो कार्य डेटाबेस मोड का उपयोग करने की अनुमति देता है: लेनदेन में लेनदेन और नियंत्रित ताले में स्वचालित लॉकिंग मोड।

इन तरीकों का मौलिक अंतर इस प्रकार है। स्वचालित लॉकिंग मोड को लेनदेन में ताले को नियंत्रित करने के लिए किसी भी क्रिया के डेवलपर की आवश्यकता नहीं होती है। इन नियमों को 1 सी: एंटरप्राइज़ सिस्टम प्लेटफ़ॉर्म द्वारा दिए गए डीबीएमएस में कुछ लेनदेन अलगाव स्तर का उपयोग करके प्रदान किया जाता है। ऑपरेशन का एक तरीका डेवलपर के लिए सबसे आसान है, हालांकि, कुछ मामलों में (उदाहरण के लिए, बड़ी संख्या में उपयोगकर्ताओं के गहन एक साथ संचालन के साथ), डीबीएमएस में लेनदेन अलगाव का इनपुट स्तर काम के पर्याप्त समानांतरता प्रदान नहीं कर सकता है, जो उपयोगकर्ता काम कर रहे हैं, जो बड़ी संख्या में अवरोधक संघर्षों के रूप में प्रकट होता है।

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

स्वचालित लॉक मोड में और नियंत्रित लॉक मोड में ऑपरेशन के दौरान अंतर के सारांश में, निम्न तालिका देखें:

लॉक प्रकार लेनदेन का इन्सुलेशन स्तर
स्वत: अवरुद्ध
फ़ाइल डेटाबेस टेबल serializable
एमएस एसक्यूएल सर्वर अभिलेख
आईबीएम डीबी 2। अभिलेख पुनरावर्तनीय पढ़ा या क्रमबद्ध
Postgresql टेबल serializable
ओरेकल डेटाबेस। टेबल serializable
नियंत्रित अवरुद्ध
फ़ाइल डेटाबेस टेबल serializable
एमएस एसक्यूएल सर्वर अभिलेख पढ़ा।
आईबीएम डीबी 2। अभिलेख पढ़ा।
Postgresql अभिलेख पढ़ा।
ओरेकल डेटाबेस। अभिलेख पढ़ा।

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

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

शर्तें निर्दिष्ट मान के फ़ील्ड मान की समानता पर सेट की गई हैं या फ़ील्ड मान को निर्दिष्ट सीमा में दर्ज करने के लिए सेट की गई हैं।
शर्तों को दो तरीकों से सेट किया जा सकता है:

● फ़ील्ड नाम और मूल्य (विधि) के स्पष्ट विनिर्देश का उपयोग करना मूल्य ते करना() वस्तु तत्व ब्लॉक);
● आवश्यक मानों वाले डेटा स्रोत को निर्दिष्ट करके (स्रोत वस्तु की संपत्ति) तत्व ब्लॉक).

प्रत्येक अवरुद्ध तत्व के लिए, दो लॉक मोड में से एक निर्दिष्ट किया जा सकता है:

● साझा किया गया
● असाधारण।

नियंत्रित ताले की संगतता तालिका निम्नानुसार है।

अलग-अलग अवरोधन मोड का तात्पर्य है कि मौजूदा लेनदेन पूरा होने तक अवरुद्ध डेटा को किसी अन्य लेन-देन द्वारा बदला नहीं जा सकता है।
असाधारण लॉक मोड का तात्पर्य है कि अवरुद्ध डेटा को मौजूदा लेनदेन के अंत तक किसी अन्य लेनदेन द्वारा बदला नहीं जा सकता है, और किसी अन्य लेनदेन द्वारा नहीं पढ़ा जा सकता है जो इस डेटा को अलग-अलग अवरोधन सेट करता है।

"स्वचालित और प्रबंधनीय" मोड में काम की विशेषताएं

लॉक प्रबंधन मोड में काम करते समय, दो विशेषताओं को स्वचालित और प्रबंधित खाते में लिया जाना चाहिए:

● इस लेनदेन के लिए निर्दिष्ट मोड के बावजूद, सिस्टम उचित प्रबंधित स्थापित करेगा
ताला।
● लॉक कंट्रोल मोड "ऊपरी" स्तर के लेनदेन द्वारा निर्धारित किया जाता है। दूसरे शब्दों में, यदि लेनदेन की शुरुआत से एक और लेनदेन शुरू हुआ, तो शुरुआती लेनदेन केवल उस मोड में निष्पादित किया जा सकता है जो पहले से चल रहे लेनदेन के लिए स्थापित है।

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

"1 सी: एंटरप्राइज़" सिस्टम आपको दो डेटाबेस मोड का उपयोग करने की अनुमति देता है: लेनदेन में लेनदेन में स्वचालित लॉकिंग मोड और नियंत्रित ताले।

इन तरीकों का मौलिक अंतर इस प्रकार है। स्वचालित लॉकिंग मोड को लेनदेन में ताले को नियंत्रित करने के लिए किसी भी क्रिया के डेवलपर की आवश्यकता नहीं होती है। इन नियमों को दिए गए डीबीएमएस में कुछ लेनदेन अलगाव स्तर का उपयोग करके "1 सी: एंटरप्राइज़" सिस्टम प्लेटफ़ॉर्म द्वारा प्रदान किया जाता है। ऑपरेशन का एक तरीका डेवलपर के लिए सबसे आसान है, हालांकि, कुछ मामलों में (उदाहरण के लिए, बड़ी संख्या में उपयोगकर्ताओं के गहन एक साथ संचालन के साथ), डीबीएमएस में लेनदेन अलगाव का इनपुट स्तर काम के पर्याप्त समानांतरता प्रदान नहीं कर सकता है, जो उपयोगकर्ता काम कर रहे हैं, जो बड़ी संख्या में अवरोधक संघर्षों के रूप में प्रकट होता है।

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

स्वचालित लॉक मोड में और नियंत्रित लॉक मोड में ऑपरेशन के दौरान अंतर के सारांश में, निम्न तालिका देखें:

कॉन्फ़िगरेशन में लॉक मोड सेट करना

कॉन्फ़िगरेशन में एक संपत्ति लॉक नियंत्रण मोड है। प्रत्येक कॉन्फ़िगरेशन एप्लिकेशन में डेटा अवरोधन मोड भी होता है।
संपूर्ण कॉन्फ़िगरेशन के लिए डेटा अवरोधन मोड को स्वचालित रूप से स्वचालित मानों, प्रबंधित (एक नई कॉन्फ़िगरेशन के लिए डिफ़ॉल्ट) और स्वचालित और प्रबंधनीय पर सेट किया जा सकता है। मान स्वचालित और प्रबंधित होते हैं इसका मतलब यह है कि प्रत्येक ऑब्जेक्ट्स के लिए सेट मानों के बावजूद, सभी कॉन्फ़िगरेशन ऑब्जेक्ट्स के लिए संबंधित लॉक मोड का उपयोग किया जाएगा। मान स्वचालित और नियंत्रित का मतलब है कि इसकी संपत्ति में निर्दिष्ट मोड स्वचालित या नियंत्रित एक विशिष्ट कॉन्फ़िगरेशन ऑब्जेक्ट के लिए उपयोग किया जाएगा।
यह ध्यान दिया जाना चाहिए कि मेटाडेटा ऑब्जेक्ट के लिए निर्दिष्ट डेटा अवरोधन मोड इस ऑब्जेक्ट के डेटा के साथ काम करते समय "1 सी: एंटरप्राइज़" सिस्टम द्वारा शुरू किए गए लेनदेन के लिए सेट किया गया है (उदाहरण के लिए, ऑब्जेक्ट डेटा को संशोधित करते समय)।
यदि, उदाहरण के लिए, डेवलपर (प्रारंभिक लेनदेन विधि ()) द्वारा शुरू किए गए लेनदेन में ऑब्जेक्ट रिकॉर्ड ऑपरेशन किया जाता है, तो डेटा ब्लॉक नियंत्रण मोड ब्लॉकिंग मोड पैरामीटर द्वारा निर्धारित किया जाएगा
विधियों वोल्टेज (), और डेटा अवरोधन मोड के मेटाडेटा ऑब्जेक्ट के गुणों का मूल्य नहीं है।
डिफ़ॉल्ट रूप से, अवरुद्ध मोड पैरामीटर में पंजीकृत ब्लॉक का मूल्य होता है। स्वचालित, के लिए
एक स्पष्ट लेनदेन में नियंत्रित ताले का उपयोग करने के लिए, आपको इस पैरामीटर का मान निर्दिष्ट करना चाहिए।
हिल गया ताले .. जारी रखा।

अंतर्निहित भाषा में नियंत्रित ताले के साथ काम करें

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

शर्तें निर्दिष्ट मान के फ़ील्ड मान की समानता पर सेट की गई हैं या फ़ील्ड मान को निर्दिष्ट सीमा में दर्ज करने के लिए सेट की गई हैं।
शर्तों को दो तरीकों से सेट किया जा सकता है:

  • फ़ील्ड नाम और मूल्य को स्पष्ट रूप से निर्दिष्ट करना (सेटिंग के लिए विधि () तत्व-अवरोधन की वस्तु);
  • आवश्यक मानों वाले डेटा स्रोत के स्रोत का उपयोग करना (तत्व-अवरोधन की स्रोत वस्तु की संपत्ति)।

प्रत्येक अवरुद्ध तत्व के लिए, दो लॉक मोड में से एक निर्दिष्ट किया जा सकता है:

  • अलग करना
  • असाधारण।

नियंत्रित ताले की संगतता तालिका निम्नानुसार है।

अलग-अलग अवरोधन मोड का तात्पर्य है कि मौजूदा लेनदेन पूरा होने तक अवरुद्ध डेटा को किसी अन्य लेन-देन द्वारा बदला नहीं जा सकता है।
असाधारण लॉक मोड का तात्पर्य है कि अवरुद्ध डेटा को मौजूदा लेनदेन के अंत तक किसी अन्य लेनदेन द्वारा बदला नहीं जा सकता है, और किसी अन्य लेनदेन द्वारा नहीं पढ़ा जा सकता है जो इस डेटा को अलग-अलग अवरोधन सेट करता है।

"स्वचालित और प्रबंधनीय" मोड में काम की विशेषताएं

लॉक प्रबंधन मोड में काम करते समय, दो विशेषताओं को स्वचालित और प्रबंधित खाते में लिया जाना चाहिए:

इस लेनदेन के लिए निर्दिष्ट मोड के बावजूद, सिस्टम संबंधित प्रबंधित को स्थापित करेगा
ताला।
लॉक कंट्रोल मोड "ऊपरी" स्तर के लेनदेन द्वारा निर्धारित किया जाता है। दूसरे शब्दों में, यदि लेनदेन की शुरुआत से एक और लेनदेन शुरू हुआ, तो शुरुआती लेनदेन केवल उस मोड में निष्पादित किया जा सकता है जो पहले से चल रहे लेनदेन के लिए स्थापित है।

अधिक विस्तार से सूचीबद्ध सुविधाओं पर विचार करें।

पहली सुविधा यह है कि यदि लेनदेन स्वचालित लॉक नियंत्रण मोड का उपयोग किया जाता है, तो भी इस लेनदेन में डेटा लिखते समय सिस्टम अतिरिक्त रूप से और संबंधित नियंत्रित ताले स्थापित करेगा। इससे यह इस प्रकार है कि नियंत्रित ताले में निष्पादित लेनदेन स्वचालित लॉक नियंत्रण मोड में निष्पादित लेनदेन के साथ संघर्ष कर सकते हैं।

दूसरी विशेषता यह है कि कॉन्फ़िगरेशन में मेटाडेटा ऑब्जेक्ट के लिए निर्दिष्ट लॉक कंट्रोल मोड या लेनदेन की शुरुआत में संकेत दिया गया है (स्टार्ट वोल्टेज ()) की शुरुआत के पैरामीटर के रूप में, केवल "वांछित" मोड है। वास्तविक लॉक नियंत्रण मोड जिसमें लेनदेन निष्पादित किया जाएगा, इस पर निर्भर करता है कि लेनदेन की शुरुआत की यह चुनौती पहले है, या इस समय तक एक और लेनदेन "1 सी: एंटरप्राइज़" प्रणाली के इस सत्र में शुरू हो चुका है।

उदाहरण के लिए, यदि आप किसी दस्तावेज़ को संचालित करते समय, रजिस्टर प्रविष्टियों को रिकॉर्ड करते समय ताले को नियंत्रित करना चाहते हैं, तो नियंत्रित लॉक मोड दोनों को रजिस्टर के लिए और दस्तावेज़ के लिए स्थापित किया जाना चाहिए, क्योंकि रजिस्टर प्रविष्टियों की रिकॉर्डिंग लेनदेन में दर्ज की जाएगी एक दस्तावेज़ लिखते समय खुला।

चलो देखते हैं कि क्या दिखता है 1C में विशिष्ट एकाधिकार लॉक.

मेरे लिए, वह इस तरह दिखती है। किसी ने कुछ कार्रवाई करने के लिए कुछ लिया। अन्य सभी यह कार्रवाई नहीं की जा सकती है, वे इंतजार कर रहे हैं। ताकि ऐसी स्थितियां काट रही हों, पता करने की जरूरत कम से कम कुछ मूल सिद्धांत - कम से कम जरूरत है समझ गए, जब अवरोधन सेट होता है, जो ब्लॉकिंग सेट है आदि।

मुझे लगता है कि आप अच्छी तरह से जानते हैं कि क्या 1s में।यहां है दो ताला मोड: स्वचालित और प्रबंधित.

  • स्वचालित मोड में सब कुछ सरल है:
    • किसी भी पठन के साथ एस-लॉकिंग.
    • लेकिन अ किसी भी रिकॉर्ड के साथएक्स।-लॉकिंग - इसके अलावा केवल DBMS सर्वर पर ताले, 1 सी कोई ताले नहीं डालता है।
  • अधिक दिलचस्प प्रबंधित मोड। उनकी मुख्य विशेषता यह है कि 8.2 में और 8.3 में, विभिन्न तरीकों से काम को अवरुद्ध करना.
    • उदाहरण के लिए, 8.2 पर।तुम पह कोई भी पढ़ा जाएगाएस-ब्लॉकिंग। इसके अलावा, पढ़ना सिर्फ एक अनुरोध नहीं है। भरें (), लेकिन लिंक.revevizit, संदर्भ। ध्यान केंद्रित करना (), आदि
    • लेकिन अ 8.3 पर।पहले से ही संगतता मोड के बिना पढ़ने के लिए ताले नहीं होंगे। इस प्रकार, 8.3 निश्चित रूप से काम के समानांतरता के मामले में जीतता है।
    • खैर, तो सबसे दिलचस्प शुरू होता है - उदाहरण के लिए, सेट के डिजाइन के लिए। पढ़ें ()नियंत्रित मोड में 8.2 में आपके पास डीबीएमएस सर्वर पर एस-लॉक होगा (यह प्राकृतिक है)। लेकिन इसके अलावा भी होगा सर्वर 1C पर साझा ब्लॉकिंग, और यह प्रकट होता है और 8.2 पर, और 8.3 पर। और मुख्य समस्या यह है कि यह आपको अवरुद्ध करता है लेनदेन के अंत तक चलेगा - जबकि लेनदेन समाप्त नहीं होता है, डेटा अवरुद्ध हो जाएगा।
      इसलिए, सिफारिश संख्या एक है - यदि आपको केवल पढ़ने के लिए रिकॉर्ड के सेट की आवश्यकता है, तो अनुरोध का उपयोग करना बेहतर है, ऑब्जेक्ट मॉडल नहीं। फिर आप कुछ भी ब्लॉक नहीं करेंगे, और यदि आप हैं, तो यह लंबे समय तक नहीं है।
    • सहज रूप में, किसी भी डेटा परिवर्तन के साथ (रिकॉर्डिंग, होल्डिंग, विलोपन) होगा 1 सी सर्वर और विशेष डीबीएमएस सर्वर पर एक असाधारण अवरोध डालें.

आंखों के सामने इस तालिका को रखने के लिए, आपके लिए यह समझना बहुत आसान होगा कि आप कौन से मामलों को ताले का सामना कर सकते हैं।

नियंत्रित मोड में ताले की अवधि

ताले के साथ काम करते समय सबसे महत्वपूर्ण बात यह है कि यह याद रखना है किसी भी नियंत्रित अवरोधन हमेशा लेनदेन के अंत तक पकड़ जाएगा।, तोह फिर इसकी अवधि को कम करना महत्वपूर्ण है.

जब आपके पास कोई विकल्प होता है तो लॉक (लेनदेन की शुरुआत में या अंत में) को चुनने के लिए, अंत में चुनना बेहतर होता है, क्योंकि इस मामले में उम्मीदों का खतरा बहुत छोटा होगा।

डिजाइन क्वेरी के लिए। भरें (), फिर यदि यह 8.2 है, तो अवरोध को क्वेरी निष्पादित करने के तुरंत बाद हटा दिया जाएगा, और यदि यह 8.3 है (या आपके डीबीएमएस एमएस एसक्यूएल में, पढ़ा गया स्नैपशॉट मोड सक्षम है), तो लॉक बिल्कुल नहीं होगा। इसलिये यदि आपके पास 8.2 या 8.3 संगतता मोड में 8.2 हैमैं हर तरह से हूं मैं मोड को चालू करने की सलाह देता हूंपढ़ें। प्रतिबद्ध स्नैपशॉट एकांत। - किसी भी मामले में, किसी भी मामले में काम के समानांतरता में वृद्धि होगी।

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

ताले के सबसे लगातार कारण

स्कैन के साथ अनुरोध

अक्सर गैर-इष्टतम अनुरोध के मामले में अवरुद्ध होने की प्रतीक्षा होती है। उदाहरण के लिए, आपके पास इवानोव का उपयोगकर्ता है, जो दस्तावेज़ आयोजित करने की प्रक्रिया में नामकरण की कई पदों को अवरुद्ध कर दिया गया है - केवल उसे जो चाहिए वह। और एक पेट्रोव उपयोगकर्ता है जिसने लेनदेन में स्कैन करने का अनुरोध किया (क्वेरी। (भरें ())। और यदि, इस अनुरोध को पढ़ते समय, यह अनुरोध नामकरण पर चलता है जिसे इवानोव द्वारा अवरुद्ध किया गया था, फिर आपके संस्करण 8.2 का उपयोग करने के मामले में (8.2 8.2 से संगतता मोड में 8.3), यह रुक जाएगा और डिफ़ॉल्ट 20 सेकंड के लिए प्रतीक्षा करेगा । साथ ही, उपयोगकर्ता पेट्रोव उम्मीद में होगा, कि, ज़ाहिर है, वह इसे पसंद नहीं करेगा। इस स्थिति को कैसे हल करें? ऐसा लगता है कि जवाब स्पष्ट है - आप ले सकते हैं और अनुरोध को फिर से लिखें ताकि यह अतिरिक्त लाइनें नहीं पढ़ सके, तो सब कुछ अद्भुत होगा।

और यदि यह अनुरोध मंच है? या इस क्वेरी का उपयोग एक सामान्य विन्यास में किया जाता है जिसे आप स्पष्ट कारणों से नहीं बदल सकते हैं - फिर क्या करना है? विकल्प क्या हैं?

अनुकूलता मोड बंद करें? यह कहना अधिक सही है - सप्ताह का परीक्षण करने के लिए एक प्रतिलिपि बनाना, एक प्रतिलिपि बनाने और फिर बंद करने के लिए, क्योंकि यदि आप तुरंत बंद हो जाते हैं, तो आपके पास "मजेदार सप्ताहांत" हो सकता है, और शायद न केवल सप्ताहांत।

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

1 सी "मैजिक टैबलेट" में, लेकिन मोड सक्षम करेंपढ़ें। प्रतिबद्ध स्नैपशॉट एकांत। - निकटतम अनुरूप यह "जादू की गोलियाँ"। आप तुरंत अपने डेटाबेस में न्यूनतम कार्यों पर अपेक्षाओं की संख्या को कम कर सकते हैं। इसके लिए आप बस कई लाइनों को करने की आवश्यकता हैस्क्रीनशॉट में दिखाया गया है स्क्रिप्ट बीएमएस। एसक्यूएल सर्वरऔर आप तुरंत काम के समानांतरता में बहुत अच्छी वृद्धि प्राप्त करते हैं। बेशक, यह केवल 1 सी कॉन्फ़िगरेशन में प्रबंधित लॉकिंग मोड के लिए समझ में आता है। स्वचालित मोड के लिए, डीबीएमएस सर्वर पर आरसीएसआई मोड चालू करें कोई समझ नहीं।

रजिस्टरों की कमी

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

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

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

संचालन करते समय अनुक्रम की सीमा को स्थानांतरित करना

यदि आप अनुक्रम का उपयोग करते हैं जिसमें सीमाओं को दस्तावेजों के दौरान स्थानांतरित किया जाता है, तो संभवतः आपको ताले पर अपेक्षाएं होती हैं। उदाहरण के लिए, दो दस्तावेज जो अनुक्रम में माप समानांतर में मेल खाता है, वे खर्च करने में सक्षम नहीं होंगे - कोई व्यक्ति किसी के लिए इंतजार करेगा।

मैं क्या कर सकता हूँ? तुम डालो अनुक्रम संपत्ति "स्वचालित रूप से स्थानांतरित न करें"और करो नियामक कार्यशाम को आपके पास है यह अनुक्रम आगे बढ़ेगा। यहां एक सरल समाधान है - बस समय पर इन परिचालनों को तोड़ दें, फिर दिन के लिए कोई उम्मीद नहीं होगी।

लंबे लेनदेन

सबसे कम संभव लेनदेन करने की कोशिश करें:

  • आप पहने सभी प्रकार लेनदेन से परे चेक और गणना - कोई भी प्रविष्टि, ताले का कोई भी लगाव बहुत अंत में किया जाना चाहिए।
  • किसी भी मामले में नहीं लेन-देन में कोई संवाद बॉक्स नहीं जरूरत नहीं है, खासकर यदि एक मोटी ग्राहक का उपयोग किया जाता है। हमें ऐसे मामलों का सामना करना पड़ा कि एकाउंटेंट के पास दस्तावेज़ संचालित करते समय "हां" और "नहीं" के साथ एक संवाद बॉक्स था। और जब तक वह फैसला करती है कि यह किसी के साथ किसी के साथ कॉल करेगा, जब तक कि कोई कॉल न करे - यह इस खिड़की को लटकाएगा, और इस बार लेनदेन सक्रिय हो जाएगा, और तदनुसार, अवरुद्ध भी सक्रिय होगा - इसका समय बहुत लंबा होगा। तो करने की जरूरत नहीं है।
  • मैं लेनदेन के समय को कैसे बढ़ा सकता हूं? कर सकते हैं कोड गतिजो वहां चल रहा है। अनुरोध गतियदि आप जानते हैं कि यह कैसे करें। यह तुरंत प्रदर्शन में तेज वृद्धि देगा।
  • एक और विकल्प है रजिस्टरों में प्रवेश को तेज करें। कैसे? प्रोग्रामेटिक रूप से यह संभव है, और आप हार्डवेयर कर सकते हैं। उदाहरण के लिए, यदि आपने सामान्य एसएसडी ड्राइव खरीदे हैं, तो रिकॉर्डिंग की गति स्वाभाविक रूप से बढ़ेगी - यहां तक \u200b\u200bकि क्वेरी भी तेजी से प्रदर्शन की जाएगी। और, तदनुसार, लेनदेन का समय भी कम हो जाएगा। इसका मतलब यह नहीं है कि डिस्क का एक अपग्रेड लॉक की समस्या को हल कर सकता है, लेकिन कम से कम आप इस प्रभाव को सुचारू बना सकते हैं - यह इतना ध्यान देने योग्य नहीं होगा।

बहु-थ्रेडेड मोड में वृद्धि

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

यह पता चला कि एक धाराओं में एक बड़ा, गंभीर दस्तावेज था, जिसने बढ़ोतरी की। वृद्धि - यह कब है लॉक आरोपित मेज में कुछ पंक्ति पर नहीं, और पूरी मेज पर तुरंत। और मेरे मामले में, धाराओं में से एक में, पूरी मेज पर एक अवरुद्ध था।

इस संबंध में, मैंने एल्गोरिदम के साथ पेश किया भूल सुधार, जो ऐसे दस्तावेजों को ध्यान में रखते थे, और अपने प्रसंस्करण को "तब के लिए स्थगित कर दिया" ताकि इस तरह की वृद्धि नहीं होती है, और एक दूसरे के प्रवाह को अवरुद्ध नहीं किया गया था, त्रुटियों से नहीं गिर गया।

आमतौर पर 1 सी में एक वृद्धि होती है? अक्सर यह किसी प्रकार का कठिन संचालन होता है - महीने का बंद होना, लागत की गणना इत्यादि। - जब आप एक विशाल लेनदेन में बहुत सारे दस्तावेजों को शुरू करते हैं, तो पूरी तालिका अवरुद्ध होती है और इस समय कोई भी काम नहीं कर सकता है समानांतरता गिरती है। इस तरह के संचालन को अलग से ध्यान में रखा जाना चाहिए और उन्हें बिताना चाहिएक्योंकि समानांतर मोड में आप उन्हें संसाधित नहीं कर सकते।

प्लेटफार्म त्रुटि - डेटा क्षेत्र विभाजक का उपयोग करते समय ताला

मंच में कई त्रुटियां हैं जो अवरुद्ध करने पर अत्यधिक उम्मीदों का कारण बनती हैं। उदाहरण के लिए, एक गलती है कि मैं बहुत हैरान था। स्थिति निम्नलिखित है - हमने उम्मीदों पर डेटा एकत्र किया और देखा कि पंक्ति क्वेरी भरें ()एक नियंत्रित असाधारण अवरोध लागू करता है, जो सिद्धांत रूप में नहीं हो सकता है और नहीं। जब हमने इसे देखा, तो हमने सोचा कि उपकरण "दावत" था। एक बार फिर से डेटा अपलोड किया गया। सभी ने कहा। वास्तव में, लगाता है। यह पता चला कि प्लेटफार्म 8.3.6 में ऐसी त्रुटि दिखाई दी। पढ़ते समय - कोई बात नहीं, क्वेरी। () या स्थिर। ऊपर () - सामान्य रूप से, किसी भी पढ़ने के साथ - मंच मैदान पर विशेष (एक्स) लॉक को सुपरिम्पोज्ड, जो डेटा विभाजक है और समानांतर तुरंत गिर गया। इसके अलावा, अवरोधन ठीक असाधारण था।

यहां एक मंच त्रुटि है।

सौभाग्य से हमारे लिए, एक ग्राहक जिसने खुद को प्रकट किया है, इस डेटा विभाजक का बिल्कुल उपयोग नहीं किया है, इसलिए हमने बस उस संकेत को हटा दिया है कि यह एक विभाजक है। और सब, त्रुटि गायब हो गई। लेकिन वह तय की गई है या नहीं, मुझे अभी भी नहीं पता। मैं यह सुनिश्चित करने के लिए कह सकता हूं कि इस गलती के बारे में 1 सी में पता है, लेकिन जब वे इसे ठीक करते हैं, तो दुर्भाग्यवश, ज्ञात नहीं है। इसलिए, तैयार रहें कि आप भी हो सकते हैं।

प्लेटफार्म त्रुटि - स्कैन गणना सूचकांक स्कैन

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

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

गणना रजिस्टर की एक और समस्या पढ़ने पर प्रकट होती है और यह है कि एक मंच अनुरोध जो गणना रजिस्टर से डेटा पढ़ता है, सूचकांक भी स्कैन करता है। लेकिन यह पहले से ही या तो रीड किए गए स्नैपशॉट को शामिल करने में मदद करता है, या यदि आपके पास 8.3 है, तो आप संगतता मोड को 8.2 से हटा सकते हैं, तो आपको यह समस्या नहीं होगी।

प्लेटफार्म त्रुटि - आवधिक स्वतंत्र सूचना रजिस्टर में समानांतर रिकॉर्डिंग की असंभवता

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

  • सर्वप्रथम, नियंत्रित लॉक मोड पर जाएं। मुझे लगता है कि यह बहुत स्पष्ट है, क्योंकि यदि आप स्वचालित मोड का उपयोग करते हैं, तो आप प्रश्नों से भी आश्चर्यचकित नहीं हो सकते हैं "हमारे पास एक छोटा सा कार्य समानांतर क्यों है, क्यों बहुत सारे ताले?" सबसे पहले, प्रबंधित मोड पर जाएं, और यदि उसके बाद आपको समस्याएं बनी होंगी, तो आप समझना जारी रख सकते हैं।
  • जब नियंत्रित लॉक मोड में कॉन्फ़िगरेशन स्थानांतरित किया जाता है, तो सुनिश्चित करें dBMS मोड पर चालू होने के स्वामित्व मेंपढ़ें। प्रतिबद्ध स्नैपशॉट एकांत।। यह सीधे होना चाहिए -साजा को काम के समानांतरता में तेज वृद्धि होगी।
  • रजिस्टरों के लिए परिणाम विभाजक का उपयोग करें। जहां कोई अवशिष्ट नियंत्रण नहीं है, यह शामिल करना आवश्यक है कि कोई उम्मीद नहीं है।
  • तथा रिकॉर्ड सेट करें। ऊपर () - सभी पर प्रयास करें उपयोग करने के लिए नहीं पढ़ने के लिएक्योंकि यह एक नियंत्रित अवरोधन द्वारा अतिरंजित किया जाएगा जो लेनदेन के अंत तक "लटका" करेगा। तुम्हें यह क्यों चाहिए? इन अनुरोधों को पढ़ें, और ताले नहीं होंगे यदि आपके पास संगतता मोड के बिना 8.3 हैं या रीड किए गए स्नैपशॉट मोड सक्षम हैं।
  • अनुक्रम की सीमा के बारे में - डिफ़ॉल्ट को भी लेने की कोशिश करें सीमा में केवल नियामक कार्य को स्थानांतरित करने के लिए सीमा। जब स्थानांतरित नहीं किया जाता है।
  • कुछ साझा करने के लिए बड़े लेनदेन। एक लेनदेन में एक लाख दस्तावेजों को खर्च करने के लिए, 100 दस्तावेजों के छोटे लेनदेन को बेहतर बनाना बेहतर है, एक मल्टीथ्रेडेड मोड में 1000 दस्तावेज़ भी बेहतर हैं। यह अधिक स्थिर होगा।
  • सभी प्रकार गणना, चेक आदि। लेन-देन के बाहर। लेनदेन का समय जितना संभव हो उतना छोटा होना चाहिए।

अवरुद्ध समस्या को हल करने का उदाहरण

आप अनावश्यक उम्मीदों से कैसे छुटकारा पा सकते हैं?

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

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

ताले और उपकरण

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

अवरोधन अनुकूलन उपकरण को कैसे प्रभावित करता है? उदाहरण के लिए, आप प्रबंधनीय, या लिया और रीड किए गए स्नैपशॉट पर बदल गए। जबकि सिस्टम इंतजार कर रहा है, वह उपकरण इस मामले में इसका उपयोग नहीं करता है बेकार। लेकिन अ एक बारआपकी प्रणाली ने पूर्ण क्षमता पर अर्जित किया है, कोई उम्मीद नहींआपके पास तुरंत तेज वृद्धि हुई है। और, इस पर निर्भर करता है कि यह इस समय क्या है, यह महत्वपूर्ण हो सकता है। उदाहरण के लिए, यदि सर्वर को 80% से लोड किया गया है, और आप भी अपने लॉक को खत्म कर देते हैं, तो यह "झूठ बोल सकता है"। विचार करना आवश्यक है।

जिसमें, अनुरोधों का अनुकूलन -मोड़, लोडिंग को कम करता हैइसलिए, यदि आप अनुकूलन कर रहे हैं, तो लॉक को खत्म करना बेहतर है, और अनुरोधों को अनुकूलित किया जा सकता है।

ब्लॉक विश्लेषण उपकरण

और अंत में, मैं दिखाना चाहता हूं उपकरण जिसके साथ आप वास्तविक समय में आप देख सकते हैं कि सिस्टम में वर्तमान में कौन सा डेटा अवरुद्ध है।.

प्रबंधित ताले में संक्रमण के मुख्य कारण:

  • मुख्य कारण 1 सी सिफारिश है: रीडिंग या 1 सी: पीसी के आधार पर विशेषज्ञ
  • उपयोगकर्ताओं के समानांतर संचालन के साथ समस्याएं ()
  • ओरेकल, PostgreSQL का उपयोग करें और।

काम की लागत:

नियंत्रित अवरुद्ध का सार

स्वचालित लॉक कंट्रोल मोड 1 सी में काम करते समय: कंपनी डीबीएमएस स्तर पर लेनदेन में डेटा अलगाव की एक उच्च डिग्री निर्धारित करती है। यह लागू डेवलपर्स द्वारा किसी भी विशेष प्रयास के बिना गैर-समग्र या गलत डेटा प्राप्त करने की संभावना को पूरी तरह से समाप्त करना संभव बनाता है।

यह सक्रिय उपयोगकर्ताओं की एक छोटी संख्या के साथ एक सुविधाजनक और सही दृष्टिकोण है। विकास की आसानी की कीमत डीबीएमएस स्तर पर अनावश्यक अवरुद्ध की एक निश्चित राशि है। ये ताले डीबीएमएस में लॉकिंग तंत्र के कार्यान्वयन की दोनों विशेषताओं से जुड़े हुए हैं और जैसे कि डीबीएम मेटाडेटा ऑब्जेक्ट्स 1 सी: उद्यमों के भौतिक अर्थ और संरचना को ध्यान में नहीं रख सकता है (और ध्यान में नहीं रखता)।

किसी बिंदु पर संसाधनों (बड़ी संख्या में उपयोगकर्ताओं) के लिए उच्च प्रतिस्पर्धा के साथ काम करते समय, कमी को अवरुद्ध करने का प्रभाव समानांतर मोड के साथ प्रदर्शन के दृष्टिकोण से ध्यान देने योग्य हो जाता है।

कॉन्फ़िगरेशन को नियंत्रित मोड में परिवर्तित करने के बाद, वैकल्पिक "लॉक मैनेजर" और डेटा की अखंडता पर नियंत्रण अब डीबीएमएस के किनारे सक्रिय होता है, लेकिन सर्वर 1 सी के किनारे। इससे 1 सी सर्वर के लोहे (आवश्यक तेज प्रोसेसर और अधिक मेमोरी की आवश्यकता होती है) पर लोड बढ़ जाती है, और वास्तव में एक छोटी मंदी (कई प्रतिशत) भी बनाती है, लेकिन अधिक महत्वपूर्ण स्थिति में ताले के साथ स्थिति में सुधार होता है (वस्तु के अवरोधों के कारण कम ब्लॉक, और तालिकाओं, कम ब्लॉक क्षेत्र और कुछ मामलों में कम आजीवन जीवन भर उठाने के संयोजन के लिए नहीं, यानी लेनदेन के अंत तक नहीं)। इसके कारण, समग्र समांतरता में सुधार होता है।


नई 1 सी कॉन्फ़िगरेशन तुरंत प्रबंधित मोड में लागू की जाती है।

  • प्रश्न: क्या पहले लेखा परीक्षा करना संभव है, और फिर यूबी में स्थानांतरित करना संभव है?

उत्तर: आप कर सकते हैं, लेखापरीक्षा नियंत्रित ताले में अनुवाद की व्यवहार्यता के अतिरिक्त पर्याप्तता के रूप में कार्य करेगी और कुल धीमा करने के लिए स्वचालित ताले के योगदान का आकलन भी करेगी और क्या अनुवाद के अलावा अतिरिक्त प्रयास की आवश्यकता है।

  • प्रश्न: यूबी में स्थानांतरित करने के लिए, एक्सेस - आरडीपी, TeamViewer प्रदान करने के लिए वास्तव में क्या है? या आप एक फ़ाइल कॉन्फ़िगरेशन भेज सकते हैं?

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

  • प्रश्न: हमारे पास 10 नियमित प्रोग्रामर हैं जो हर दिन सम्मेलन में कुछ बदलते हैं। प्रयुक्त सामान्य विन्यास भंडारण "। यूबी में स्थानांतरित करते समय बातचीत कैसे आयोजित की जाएगी? या सभी प्रोग्रामर को छुट्टी पर भेजने की आवश्यकता है?

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



विषय पर लेख: