मैं केवल @Akina और @RickJames के सुझावों को मिलाकर इस समस्या को हल करने में सक्षम था, उनके समर्थन के लिए आप दोनों को धन्यवाद।
create table my_seq(
min_value integer,
Max_value integer,
last_value integer,
increment_by tinyint,
customer_id integer)ENGINE = InnoDB;
यहां ENGINE=InnoDB
यह बहुत महत्वपूर्ण है। यह सुनिश्चित करने के लिए कि पढ़ते समय टेबल लेवल लॉकिंग है, मैंने अपना ऐप कोड संशोधित कर दिया है:
Auto-Commit=FALSE
फिर,
//very import to begin the transaction
begin;
select last_number from my_seq where customer_id=? FOR UPDATE;
Read the result in App.
update my_seq set last_number=last_number+1 where customer_id=?;
commit;
यह अद्वितीय sequence number
उत्पन्न कर रहा था कई समवर्ती सत्रों के मामले में भी।
मुझे एक और समस्या का सामना करना पड़ा है, कि यह समाधान धीमा हो गया है, जहां मैं अनुक्रम उत्पन्न करता हूं #। मैंने इसे ग्राहक_आईडी को अनुक्रमित करके टेबल लेवल लॉक के बजाय एक पंक्ति स्तर लॉक को सक्षम करके हल किया है।
ALTER TABLE TABLE_NAME ADD INDEX (customer_id);
आशा है कि यह दूसरों की पूरी मदद करेगा।