Masalah pertumbuhan tidak normal lajur kenaikan automatik dalam SQL Server 2012
Dalam SQL Server 2012, tingkah laku luar biasa telah diperhatikan: nilai kenaikan automatik lajur "No Receipt" dalam jadual "Yuran" akan melonjak 100 secara berselang-seli. Ini tidak konsisten dengan corak kenaikan biasa lajur kenaikan automatik.
Butiran tingkah laku tidak normal:
Sebab:
Tingkah laku ini adalah hasil daripada peningkatan prestasi yang diperkenalkan dalam SQL Server 2012. Secara lalai, pangkalan data kini menyimpan 1000 nilai apabila memberikan nilai kenaikan automatik kepada lajur int. Selepas dimulakan semula, nilai cache yang tidak digunakan mungkin hilang, menyebabkan jurang dalam urutan kenaikan automatik.
Rujukan dokumen:
Penerangan dokumentasi SQL Server:
"Atas sebab prestasi, SQL Server mungkin cache nilai kenaikan automatik, dan semasa kegagalan pangkalan data atau pelayan dimulakan semula, beberapa nilai yang ditetapkan mungkin hilang... Ini mungkin menyebabkan jurang dalam nilai kenaikan automatik semasa pemasukan ."
Penyelesaian yang mungkin:
Jika jurang dalam lajur kenaikan automatik menjadi kebimbangan, pertimbangkan penyelesaian berikut:
Petua Penting:
Adalah penting untuk memahami bahawa penyelesaian ini tidak menjamin operasi bebas jurang yang lengkap. Auto-increment lajur dengan sendirinya tidak menjamin jujukan bebas jurang disebabkan oleh kegagalan atau transaksi terbalik. Untuk nilai yang benar-benar tanpa jurang, pertimbangkan penyelesaian lain seperti algoritma tersuai atau penjana kunci luaran.
Atas ialah kandungan terperinci Mengapa Lajur Identiti SQL Server 2012 Saya Bertambah sebanyak 100s Selepas Mulakan Semula?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!