Gereksinimler: Yakın zamanda yaptığım bir röportajda, ana anahtar olarak SQL Server veritabanı int ile guid arasındaki fark nedir soruldu.İkisinin de artıları ve eksileri var, lütfen bunları gerçek iş senaryolarınıza göre tartın。
Orijinal metin 1:Bağlantı girişi görünür.
INT'nin birincil anahtar olarak kullanılmasının avantajları:
1. Sadece 4 baytlık küçük bir veri depolama alanı gerektirir.
2. Ekleme ve güncelleme işlemleri için INT kullanımının performansı GUID'den daha iyidir, bu nedenle int kullanımı uygulamanın performansını artırır.
3. Indeksleme ve Birleştirme işlemleri, en iyi performansa sahip int var.
4. Hatırlanması kolay.
5. Bir fonksiyon aracılığıyla en son değeri elde etme desteği, örneğin: Scope_Indentity().
INT'yi birincil anahtar olarak kullanmanın dezavantajları
1. Tabloların birleştirilmesi sık sık yapılırsa, birincil anahtarların çoğaltılması olabilir.
2. INT verilerinin kullanım kapsamında kısıtlamalar vardır. Eğer veri çok büyükse, INT değer aralığını aşabilir.
3. Dağıtılmış depolanmış veri tablolarını işlemek zordur.
GUID'i ana anahtar olarak kullanmanın avantajları:
1. Benzersizdir.
2. Çoğaltma için çok az fırsat vardır.
3. Büyük miktarda veriye ekleme ve güncelleme işlemleri için uygundur.
4. Sunucular arası veri birleştirme çok kullanışlıdır.
GUID'i birincil anahtar olarak kullanmanın dezavantajları:
1. Depolama alanı büyüktür (16 bayt), bu yüzden daha fazla disk alanı kaplar.
2. Hatırlamak zordur. Birleştirme işleminin performansı int'ten daha düşüktür.
3. En son oluşturulan GUID birincil anahtarını elde etmek için yerleşik bir fonksiyon yoktur.
4. GUID, birincil anahtar olarak tablodaki diğer indekslere eklenecek, bu da performansı düşürecektir.
Özet:
Yukarıdakiler, GUID ve INT veri tiplerinin birincil anahtar olarak avantaj ve dezavantajlarını listeler. Büyük veri hacimleri için birincil anahtar olarak guid kullanılması önerildiğini düşünüyorum. OysaZökgeleme kullanmak size en iyi performansı sağlar。
Yorum: KullanımSiparişli GUID performansı çok iyileşiyor。
Orijinal metin iki:Bağlantı girişi görünür.
Identity tam bir tür türüdür, ondalık tanımı yoktur, bigint kabul edilebilir
Guid sabit ikilidir(16), yani 16 bayttır
kimlik artırılır (veya çıkarılır) ve GUID rastgele olur, böylece veri eklendiğinde,İlki parça üretmezken, ikincisi üretir ve ikincisi sırasız olduğu için sıranın eklenmesi gerekir; bu nedenle performans açısından genellikle birinciden daha iyidir.
Büyük miktarda bilgi genellikle tablolara bölünür, bu yüzden kimlik birçok durumda daha uygundur
Birincil anahtarın anlamı ise tasarım yaparken nasıl değerlendirdiğinize bağlı; veri işleme için birincil anahtarın anlamlı olması gerekmez ve birincil anahtarın iş anlamı içermesi gerekirse, kimlik birincil anahtarı elbette anlamsızdır, ama genel olarak iş anlamı ile veri işlemeyi ayırmak daha iyidir, iş sürekli değişir, anlamı tablo tasarımının ana anahtarına getirmek istiyorsanız, iş değişir, tablo yapısını daha fazla ayarlamanız gerekir.
Orijinal metin üç:Bağlantı girişi görünür.
1. Veri taşıması gereken sistemlerde Guid kullanılması önerilir. Ve ilgili yabancı anahtar alanlara, yani birleştirme sorguları için kullanılan alanlara kümelenmiş olmayan indeksler eklemek, performansı artırmak için büyük fayda sağlar. Where koşulu alanı, kümelenmemiş indeksler için uygun şekilde eklenebilir.
2. Guid tipi birincil anahtar olarak kullanılırken, veri tipi uniqueidentifier olmalı ve bunu mutlaka hatırlamalı.Birincil anahtarı iptal et "Toplu indeksler”
3. Taşınması gerekmeyen sistemler veya küçük sistemler için, int birincil anahtar olarak kullanmak hâlâ çok kullanışlıdır ve verimlilikte hâlâ belli bir iyileşme vardır.
(Son)
|