SQL Server 2012: Gelagat Peningkatan Identiti Tidak Dijangka
Artikel ini menangani isu dalam SQL Server 2012 di mana kenaikan identiti untuk lajur integer secara tidak dijangka melonjak kepada gandaan 100, bukannya kenaikan yang dijangkakan sebanyak 1. Tingkah laku tidak menentu ini sering dicetuskan oleh permulaan semula sistem.
Punca Punca:
Masalahnya berpunca daripada pengoptimuman prestasi dalam SQL Server 2012. Ia menggunakan cache untuk pra-peruntukkan nilai IDENTITI. Saiz cache lalai ialah 1000.
Akibat:
Setelah pelayan dimulakan semula, sebarang nilai yang tidak diperuntukkan dalam cache ini akan dibuang. Ini mengakibatkan jurang dalam jujukan identiti apabila baris baharu dimasukkan, kerana pangkalan data memperuntukkan nilai baharu daripada cache yang dimuat semula.
Strategi Penyelesaian dan Mitigasi:
Walaupun urutan tanpa jurang sepenuhnya tidak dijamin, beberapa strategi boleh meminimumkan masalah:
NEXT VALUE FOR
dalam kekangan lalai lajur.ALTER DATABASE SCOPED CONFIGURATION SET IDENTITY_CACHE = OFF;
untuk melumpuhkan cache bagi pangkalan data yang terjejas.Pertimbangan Penting:
Adalah penting untuk memahami bahawa tiada satu pun daripada kaedah ini menghalang sepenuhnya jurang dalam urutan identiti. Untuk aplikasi yang memerlukan nilai identiti tanpa jurang mutlak, pendekatan alternatif seperti cap waktu baris atau mekanisme penjanaan kunci tersuai disyorkan.
Atas ialah kandungan terperinci Mengapakah Peningkatan Identiti SQL Server 2012 saya Melompat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!