Reset auto_increment tabel MySQL

Pada tabel InnoDB yang memakai auto increment sebagai id-nya, jika sering terjadi operasi insert dan delete sekaligus banyak akan ada banyak nilai integer yang tidak terpakai atau istilahnya bolong-bolong karena setelah delete banyak, insert berikutnya memakai id sebelum delete.

Contoh dari hal ini ada tabel saldo_awal_barang yang menyimpan jumlah tiap barang per gudang per tanggal 1 pada bulan aktif, tabel ini di-insert ketika tutup pencatatan bulan sebelumnya, dan akan delete ketika periode yang sudah ditutup tersebut dibuka lagi. Untuk itu gunakan perintah SQL berikut tiap selesai delete untuk mereset id ke nilai terakhir setelah delete.
ALTER TABLE `item` AUTO_INCREMENT = 1;
Cara ini akan mereset field auto_increment ke nilai terbesar, maka nilai berikutnya yg akan dihasilkan adalah max(id) + 1. dimana fk adalah primary key dengan opsi auto_increment.

CATATAN :
Pada MySQL/MariaDB versi 5.5 jika isi tabel tersebut cukup banyak maka akan berjalan cukup lambat karena proses ini melibatkan penyalinan semua isi tabel bahkan dalam beberapa kasus akan membuat aplikasi hang dan harus direstart service databasenya agar bisa dipakai lagi. Namun masalah ini hilang ketika dicoba pada MariaDB versi 10.3.

Merubah Engine Tabel MySQL

Script berikut digunakan untuk merubah engine table ke InnoDB

ALTER TABLE `nama_table` ENGINE = InnoDB;