Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

हाइबरनेट के साथ एक टेबल लॉक करना

आपको निराशावादी लॉकिंग का उपयोग करने की आवश्यकता है, जिसे प्राप्त किया जा सकता है

setLockMode(String alias, LockMode lockMode) 

क्वेरी पर और LockMode.UPGRADE . का उपयोग करें ।

देखें Query.setLockMode

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

अद्यतन:

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

अद्यतन2:

ओपी ने पाया कि निम्नलिखित ने काम किया:

session.get(class.Class, id, lockOption)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. JDBC बैच सम्मिलित प्रदर्शन

  2. त्रुटि कोड 1005, SQL स्थिति HY000:तालिका त्रुटि नहीं बना सकता:150

  3. MYSQL ने गलत दोहरा मान काट दिया

  4. पोस्ट php mysql . के लिए कीवर्ड विभाजित करें

  5. django 1.11.4 . में त्रुटि ('datetime.datetime' ऑब्जेक्ट में कोई विशेषता नहीं है 'विभाजन')