Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 3812|Yanıt: 2

[Kaynak] [Dönüş] (MSSQL) SQL Server veritabanı int ve birincil anahtar karşılaştırması için yönlendirme

[Bağlantıyı kopyala]
Yayınlandı 6.06.2023 22:17:40 | | |
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 1Bağ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 ikiBağ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)




Önceki:ASP.NET Core (20) Açık yönlendirme saldırılarını önle
Önümüzdeki:.NET Core programı çok dilli okuma ve yazma kaynak (.resx) dosyaları
 Ev sahibi| Yayınlandı 6.06.2023 22:42:46 |
SequentialGuidValueGenerator, Microsoft SQL Server küme anahtarları veya indeksleriyle kullanım için optimize edilmiş sıralı Guid değerleri üretir ve rastgele değerlerden daha iyi performans sağlar. Bu, SQL Server Guid sütunları eklendiğinde üreten varsayılan üretici setidir.

Bağlantı girişi görünür.


Entity Framework Core'daki sıralı GUID'ler sıralı olmayabilir

Bağlantı girişi görünür.
 Ev sahibi| Yayınlandı 27.01.2024 11:07:29 |
[MSSQL] SQL SERVER, birincil anahtar toplama endeks testleri olarak sıralanmış GUID'ler ve sıralanmamış GUID'ler
https://www.itsvse.com/thread-10607-1-1.html
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com