Rumah > pangkalan data > tutorial mysql > Mengapa Peningkatan Identiti Pelayan SQL Saya Melompat Selepas Dimulakan Semula?

Mengapa Peningkatan Identiti Pelayan SQL Saya Melompat Selepas Dimulakan Semula?

Barbara Streisand
Lepaskan: 2025-01-23 14:51:08
asal
620 orang telah melayarinya

Why Does My SQL Server Identity Increment Jump After Restarts?

Pengecualian kenaikan identiti dalam pangkalan data SQL Server

Dalam pangkalan data SQL Server, kenaikan Identiti lajur "No Receipt" pada jadual "Yuran" mempamerkan gelagat yang tidak konsisten, dengan nilai kenaikan melonjak selepas dimulakan semula.

Fenomena abnormal ini terutamanya dicerminkan dalam tiga senario berikut:

  1. Jika "No Resit" ialah 1205446, lompat ke 1206306.
  2. Jika "No Resit" ialah 1206321, lompat ke 1207306.
  3. Jika "No Resit" ialah 1207314, lompat ke 1208306.

Perlu diingat bahawa tiga digit terakhir (306) kekal sama semasa lompatan ini. Selain itu, isu ini hanya berlaku selepas komputer dimulakan semula.

Analisis sebab:

Tingkah laku ini adalah hasil langsung daripada pengoptimuman prestasi yang diperkenalkan dalam SQL Server 2012. Pangkalan data kini menggunakan saiz cache 1000 apabila memberikan nilai IDENTITY kepada lajur integer. Apabila perkhidmatan dimulakan semula, nilai yang tidak digunakan dalam cache akan hilang.

Kehalusan ini didokumenkan dalam dokumentasi SQL Server, yang menyatakan bahawa jurang dalam nilai Identiti mungkin berlaku disebabkan caching dan boleh menyebabkan masalah semasa kegagalan pangkalan data atau pelayan dimulakan semula.

Penyelesaian:

Jika jurang tersebut tidak diingini, pertimbangkan penyelesaian berikut:

  1. Gunakan penjana SEQUENCE dengan pilihan NOCACHE.
  2. Dayakan bendera surih 272 untuk merekodkan tugasan IDENTITY, mencontohi tingkah laku R2 sebelum 2008.
  3. Gunakan "ALTER DATABASE SCOPED CONFIGURATION SET IDENTITY_CACHE = OFF" untuk melumpuhkan cache Identity untuk pangkalan data tertentu.

Nota Penting:

Perlu ambil perhatian bahawa tiada satu pun daripada penyelesaian ini dijamin bebas jurang sepenuhnya. Kenaikan identiti sememangnya membawa risiko jurang akibat transaksi serentak dan kemungkinan kegagalan sisipan. Untuk penyelesaian yang benar-benar tanpa jurang, pendekatan lain mesti diambil.

Atas ialah kandungan terperinci Mengapa Peningkatan Identiti Pelayan SQL Saya Melompat Selepas Dimulakan Semula?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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