Rumah > pangkalan data > tutorial mysql > Mengapa Lajur Identiti SQL Server 2012 Saya Bertambah sebanyak 100s Selepas Mulakan Semula?

Mengapa Lajur Identiti SQL Server 2012 Saya Bertambah sebanyak 100s Selepas Mulakan Semula?

Patricia Arquette
Lepaskan: 2025-01-23 14:41:09
asal
635 orang telah melayarinya

Why Does My SQL Server 2012 Identity Column Increment by 100s After a Restart?

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:

  • Lompatan kenaikan diri meningkat sebanyak 100, tetapi tiga digit terakhir kekal sama (mis., 306).
  • Tingkah laku ini dicetuskan selepas komputer dimulakan semula.

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:

  • Gunakan SEQUENCE: Tentukan jujukan dengan saiz cache yang lebih kecil dan gunakan "NEXT VALUE FOR" dalam nilai lalai lajur.
  • Dayakan bendera surih 272: Ini akan merekodkan peruntukan nilai yang meningkat sendiri, membolehkan anda melihat jurang.
  • Lumpuhkan auto-meningkatkan caching: Lakukan "UBAH SET KONFIGURASI SKOP PANGKALAN DATA IDENTITY_CACHE = OFF" untuk pangkalan data tertentu.

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan