Dalam MySQL, jadual dengan medan auto_increment ditambah dengan kekangan unik mempamerkan tingkah laku yang pelik apabila operasi sisipan gagal disebabkan oleh nilai unik pendua . Walaupun sisipan gagal seperti yang dimaksudkan, nilai auto_increment tetap dinaikkan, fenomena yang dicetuskan dengan mengakses kaunter kenaikan automatik.
Pada teras kelakuan ini terletak sifat transaksi InnoDB. Untuk memastikan keselarasan bagi sisipan, InnoDB menggunakan kunci AUTO-INC peringkat jadual khas yang kekal dikunci sehingga penghujung penyata SQL semasa dan bukannya penghujung transaksi.
Ini bermakna walaupun sisipan gagal disebabkan oleh nilai unik pendua, kaunter kenaikan automatik akan dinaikkan kerana LOCK dikeluarkan setelah penyata selesai. Sisipan seterusnya akan mengambil nilai yang dinaikkan, yang membawa kepada jurang dalam jujukan autokenaikan.
Keputusan InnoDB untuk membenarkan jurang bertujuan untuk meningkatkan konkurensi untuk sisipan ke dalam jadual dengan lajur auto_increment. Walau bagaimanapun, ia menimbulkan kebimbangan tentang kemungkinan kerosakan jadual jika lajur id kenaikan automatik merangkumi nilai maksimumnya.
Untuk mengurangkan risiko ini, pertimbangkan untuk menggunakan jenis data BIGINT untuk lajur id, yang menawarkan 8- kapasiti storan bait dan kebarangkalian isu pembalut yang berkurangan dengan ketara.
Atas ialah kandungan terperinci Mengapa Peningkatan Autoincrement MySQL Walaupun pada Sisipan Gagal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!