2014-10-21 4 views
10

मैं संकुल मोड में क्वार्ट्ज का उपयोग कर रहाक्वार्ट्ज org.quartz.jobStore.selectWithLockSQL पंक्ति ताला

मैं डीबी स्तर पर कुछ पंक्ति ताला विवाद को अत्यधिक कॉल की वजह से:

org.quartz.jobStore.selectWithLockSQL SYS_B_0 "और LOCK_NAME =: 1 अद्यतन के लिए":

"QRTZ_LOCKS कहां SCHED_NAME = से चुनें *"

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

इस पंक्ति को लॉक करने का उद्देश्य क्या है?

सादर

+2

https://jira.terracotta.org/jira/browse/QTZ-35 पर एक नज़र डालें। जेरा को "ठीक नहीं होगा" के साथ बंद कर दिया गया है लेकिन उपयोगी सूचना – blob

उत्तर

3

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

प्रलेखन (http://quartz-scheduler.org/generated/2.2.1/html/qs-all/#page/Quartz_Scheduler_Documentation_Set%2Fre-cls_cluster_configuration.html%23) क्लस्टरिंग अनुभाग से:

क्लस्टरिंग वर्तमान में केवल JDBC-Jobstore (JobStoreTX या JobStoreCMT) के साथ काम करता है, और अनिवार्य रूप से क्लस्टर शेयर के प्रत्येक नोड होने से काम करता है एक ही डेटाबेस। क्लस्टर फायरिंग नौकरियों के प्रत्येक नोड जितनी जल्दी हो सके लोड-बैलेंसिंग स्वचालित रूप से होता है। जब ट्रिगर का फायरिंग समय होता है, तो इसे प्राप्त करने वाला पहला नोड ( पर एक ताला लगाकर) वह नोड है जो इसे आग लगा देगा।

+2

है मुझे एक समान समस्या है। मैं क्वेरी के पीछे तर्क समझता हूं, लेकिन मुझे यह भी नहीं मिल सकता है कि इसे कई बार क्यों निष्पादित किया जाता है। मेरे मामले में, नौकरी के लिए जो हर 10 मिनट में चलाने के लिए निर्धारित है, क्वेरी प्रति घंटे 11000 बार से अधिक निष्पादित की जा रही है! क्या आप किसी निष्कर्ष पर पहुंचे? –