Saya dapat menyelesaikan masalah ini hanya dengan menggabungkan saran dari @Akina dan @RickJames , terima kasih atas dukungan mereka berdua.
create table my_seq(
min_value integer,
Max_value integer,
last_value integer,
increment_by tinyint,
customer_id integer)ENGINE = InnoDB;
Di sini ENGINE=InnoDB
sangat penting. Untuk memastikan ada penguncian level tabel saat membaca, saya telah memodifikasi kode aplikasi saya menjadi:
Auto-Commit=FALSE
Kemudian,
//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;
Ini menghasilkan sequence number
yang unik bahkan dalam kasus beberapa sesi bersamaan.
Saya telah menghadapi masalah lain, bahwa solusi ini telah memperlambat lainnya adalah tempat saya menghasilkan urutan#. Saya telah menyelesaikannya dengan mengaktifkan kunci level baris alih-alih kunci level tabel dengan mengindeks customer_id.
ALTER TABLE TABLE_NAME ADD INDEX (customer_id);
Semoga ini akan sangat membantu orang lain.