Rumah >pangkalan data >tutorial mysql >Kunci urus niaga mysql tunggu tamat masa Lock tunggu tamat masa yang perlu dilakukan;
Persekitaran kejadian masalah:
1 Masukkan dan kemas kini sekeping data yang sama berturut-turut dalam urus niaga yang sama
2 . Konkurensi tinggi berlaku serta-merta;
org.springframework.dao.CannotAcquireLockException:Analisis sebab pada tinggi Dalam kes concurrency, Transaksi Spring menyebabkan kebuntuan pangkalan data, dan operasi seterusnya tamat masa dan membuang pengecualian.### Ralat mengemas kini pangkalan data. sql.SQLException: Tamat masa menunggu kunci melebihi; cuba mulakan semula transaksi
### Ralat mungkin melibatkan com.*.dao.mapper.PhoneFlowMapper.updateByPrimaryKeySelective-Inline
### Ralat berlaku semasa menetapkan parameter
### SQL:-----Berikut ialah pernyataan SQL dan maklumat tindanan--------
Pangkalan data MySQL menggunakan mod InnoDB Parameter lalai: innodb_lock_wait_timeout menetapkan masa menunggu kunci kepada 50s Setelah kunci pangkalan data melebihi masa ini, ralat akan dilaporkan.
select * from information_schema.innodb_trx2 Meningkatkan masa menunggu kunci, iaitu, meningkatkan nilai parameter item konfigurasi berikut, dalam saat (s)
innodb_lock_wait_timeout=5003 kali untuk transaksi. Maklumat rujukan1. Ia disebabkan oleh urus niaga semasa menunggu urus niaga lain melepaskan sumber kunci. Anda boleh menemui jadual dan pernyataan bersaing untuk sumber kunci, mengoptimumkan SQL, mencipta indeks, dsb. Jika itu masih tidak berkesan, anda boleh mengurangkan bilangan urutan serentak dengan sewajarnya. 2. Transaksi tamat masa sementara menunggu untuk mengunci jadual tertentu Dianggarkan bahawa jadual sedang dikunci oleh proses lain dan belum dikeluarkan.
Anda boleh menggunakan SHOW INNODB STATUS/G untuk menyemak status kunci.
TransactionDeadLockDetectionTimeOut=10000 (ditetapkan kepada 10 saat) dalam kawasan [ndbd lalai] nod pengurusan adalah 1200 (1.2 saat)
InnoDB mengesan kebuntuan transaksi secara automatik dan melancarkan transaksi atau transaksi untuk memecahkan kebuntuan InnoDB cuba memilih urus niaga kecil untuk melancarkan semula, di mana saiz transaksi ditentukan oleh bilangan baris yang dimasukkan. , dikemas kini atau dipadamkan.Jika parameter innodb_table_locks=1 dan autocommit=0, InnoDB akan memberi perhatian kepada kebuntuan jadual dan kunci peringkat baris pada peringkat MySQL. Selain itu, InnoDB tidak mengesan arahan Jadual Kunci MySQL dan kebuntuan enjin storan lain. Anda harus menetapkan innodb_lock_wait_timeout untuk menyelesaikan situasi ini.
innodb_lock_wait_timeout ialah tamat masa untuk Innodb melepaskan kunci peringkat baris.
Atas ialah kandungan terperinci Kunci urus niaga mysql tunggu tamat masa Lock tunggu tamat masa yang perlu dilakukan;. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!