Rumah > pangkalan data > tutorial mysql > Mengapa Kenaikan IDENTITI Pelayan SQL Saya Melompat Selepas Mulakan Semula?

Mengapa Kenaikan IDENTITI Pelayan SQL Saya Melompat Selepas Mulakan Semula?

DDD
Lepaskan: 2025-01-23 14:46:13
asal
827 orang telah melayarinya

Why Are My SQL Server IDENTITY Increments Jumping After a Restart?

Jurang Penambahan Lajur IDENTITI SQL Server: Memahami Cache

Lajur

SQL Server IDENTITY, digunakan untuk menjana pengecam baris unik, kadangkala mempamerkan gelagat yang tidak dijangka: selepas pelayan dimulakan semula, kenaikan melonjak ratusan, bukannya meningkat secara berurutan dengan satu. Ini bukan pepijat, tetapi akibat daripada pengoptimuman prestasi yang diperkenalkan dalam SQL Server 2012.

SQL Server cache nilai identiti untuk meningkatkan prestasi. Cache ini biasanya menyimpan 1,000 int nilai atau 10,000 bigint/numeric nilai. Setelah cache habis, kumpulan baharu diperuntukkan. Walau bagaimanapun, memulakan semula pelayan akan membuang sebarang nilai cache yang tidak digunakan.

Lompatan yang diperhatikan, dengan tiga digit terakhir kekal malar (cth., sentiasa berakhir dengan 306), mencerminkan baki nilai cache selepas peruntukan awal 1,000.

Walaupun mekanisme caching ini mewujudkan jurang dalam urutan IDENTITY, ia meningkatkan prestasi terutamanya. Melainkan jika dimulakan semula secara kerap adalah perkara biasa, kesannya adalah minimum. Walau bagaimanapun, beberapa pilihan wujud untuk mengurangkan perkara ini:

  • Jujukan Guna: Gantikan lajur IDENTITY dengan objek SEQUENCE, membenarkan kawalan yang lebih halus ke atas saiz cache.
  • Dayakan Trace Flag 272: Mengaktifkan pengelogan peruntukan nilai identiti untuk analisis terperinci.
  • Lumpuhkan Caching Identiti: Laksanakan ALTER DATABASE SCOPED CONFIGURATION SET IDENTITY_CACHE = OFF; untuk melumpuhkan cache bagi pangkalan data tertentu.

Adalah penting untuk diingat bahawa walaupun dengan penyelesaian ini, sisipan serentak dan penarikan balik transaksi masih boleh menghasilkan jurang. Untuk aplikasi yang menuntut kesinambungan jujukan mutlak, pertimbangkan alternatif seperti penjana UUID atau pelaksanaan jujukan tersuai.

Atas ialah kandungan terperinci Mengapa Kenaikan IDENTITI Pelayan SQL Saya Melompat 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan