Dengan int, nilai maksimum yang didukung oleh SQL Server adalah 2.147.483.647. Karena Anda saat ini berada di 1.000, saya pikir Anda tidak perlu khawatir dulu
Jika Anda kehabisan nilai, maka jika Anda menggunakan IDENTITAS, Anda akan mendapatkan kesalahan runtime. Itu tidak akan secara otomatis berputar kembali. Jika Anda menggunakan URUTAN alih-alih IDENTITAS, maka Anda dapat menentukan yang harus berputar. Tetapi Anda perlu membuat perubahan kode untuk mengganti IDENTITAS dengan SEQUENCE
Mungkin opsi yang lebih baik untuk Anda, terutama karena Anda sudah mengatakan bahwa tabel tersebut adalah tabel kerja yang biasanya kosong, adalah secara berkala mengisi ulang kolom identitas. Cari DBCC CHECKIDENT di Books Online, dan berikan perhatian khusus pada opsi RESEED
Hanya untuk kelengkapan, saya juga akan menambahkan bahwa opsi lain adalah mengubah tipe data kolom menjadi bigint (nilai maksimum 9.223.372.036.854.775.807 - ini memungkinkan Anda memasukkan satu juta baris per detik, selama hampir 300.000 tahun berturut-turut)
Atau jika Anda takut akan meluap bahkan itu, Anda dapat mempertimbangkan untuk menggunakan desimal (38,0) - maksimum di sini adalah angka yang terdiri dari 38 9 (yang akan memungkinkan Anda mempertahankan kecepatan yang sama selama 31.709.791.983.764.586.586.504.312.531 tahun kekalahan)
AUTO_INCREMENT kunci utama berguna, karena mereka menyelamatkan kita dari masalah untuk menghasilkan nilai unik untuk setiap baris, mendelegasikan tugas ini ke database. Tapi saat kita mencapai batas kita perlu melakukan beberapa tindakan, atau kita tidak akan bisa menyisipkan lebih banyak baris
Pada tanggal 5 Mei 2020, GitHub mengalami periode nonaktif selama 2 jam 24 menit yang disebabkan oleh AUTO_INCREMENT nilai
Gibraltar dari atasUntuk meningkat atau tidak meningkat
Seseorang akan berpendapat bahwa AUTO_INCREMENT dilengkapi dengan apa yang disebut Insert Locks, yang dapat menyebabkan perselisihan untuk beban kerja intensif penulisan. Di sisi lain, membuat UUID akan menyebabkan kunci primer dan semua indeks sekunder menjadi lebih besar, dan sedikit kurang efisien. Jadi, sebagian besar orang lebih suka menggunakan AUTO_INCREMENT kunci utama
Masalah lainnya adalah semua tipe data memiliki nilai maksimum. Ketika Anda mencapai maksimum yang diizinkan untuk kunci utama Anda, Anda akan mendapatkan kesalahan
ERROR 1467 (HY000): Failed to read auto-increment value from storage engineUntuk memperburuk masalah, AUTO_INCREMENT_ nilai hanya dapat meningkat. Tidak mungkin menurunkan penghitung untuk menggunakan nilai yang lebih rendah dari nilai tertinggi di kolom, bahkan jika ada "lubang"
Untuk pengguna MariaDB, solusi lain adalah menggunakan urutan, tetapi ini akan menjadi topik untuk artikel lain
PMM dan mysqld_exporter
Beberapa perangkat lunak pemantauan menyertakan grafik untuk AUTO_INCREMENT nilai
Misalnya, PMM (Percona Monitoring and Management) melakukannya dengan baik
Panel PMM menampilkan nilai AUTO_INCREMENT tertinggiIni sebenarnya adalah fitur dari Prometheus mysqld_exporter, yang termasuk dalam PMM. Jika Anda menggunakannya tetapi tidak menggunakan PMM, yang harus Anda lakukan hanyalah memanggil eksportir dengan opsi --collect.auto_increment.columns
SQL yang terhormat
Jika solusi pemantauan Anda tidak menyertakan AUTO_INCREMENT, atau jika ya, tetapi Anda ingin tahu cara melakukannya, Anda mungkin ingin melihat kueri yang dapat digunakan untuk memantau progres nilai AUTO_INCREMENT
Perhatikan bahwa saya membuat asumsi bahwa AUTO_INCREMENT kolom selalu menjadi bagian dari kunci utama. Saya merekomendasikan untuk memastikan mengikuti praktik yang baik ini. Namun belum tentu demikian, seperti dibahas di sini. Ubah kueri jika Anda merasa memiliki kolom non-primary key AUTO_INCREMENT
Lihat juga
Ebook
Pelatihan
Kesimpulan
Kita membahas cara memeriksa apakah salah satu tabel Anda memiliki nilai AUTO_INCREMENT yang mendekati batasnya. Dalam artikel terpisah kita akan melihat cara memperbaiki masalah ini tanpa menyebabkan downtime