Kötü performans gösteren bir veritabanı veya herhangi biri varsa daha iyi bir öneri düzeltmek için bu fikrin bazı onaylandıktan sonra duyuyorum. Her zaman daha iyi önerilere açıktır.
PK olarak GUID kullanan çok büyük bir veritabanım var (günde yaklaşık 1/2 milyon büyüyen 20+ milyon kayıt).
Benim açımdan bir gözetim ancak PK SQL sunucusunda kümelenmiş ve performans sorunlarına neden oluyor.
Bir kılavuzun nedeni - bu veritabanı kısmen 150 diğer veritabanıyla senkronize edilmiştir, bu nedenle PK'nın benzersiz olması gerekir. Senkronizasyon, SQL Server tarafından yönetilmez, bunun yerine, verilerin sistem gereksinimleri için senkronize olmasını sağlayan özel bir işlem vardır - hepsi bu GUID'ye dayanır.
150 uzak veritabanının her biri, merkezi SQL Veritabanında depolanan verilerin tamamını depolamaz. yalnızca gerçekte ihtiyaç duydukları verilerin bir alt kümesini saklarlar ve gereksinim duydukları veriler kendilerine özgü değildir (150 veritabanından 10'u, örneğin diğer site veritabanlarından aynı kayıtlardan bazılarına sahip olabilirler - paylaşırlar). Ayrıca - veriler aslında uzak noktalarda üretilir - merkezi noktada değil - bu nedenle GUID'lere ihtiyaç vardır.
Merkezi veritabanı sadece her şeyi senkronize tutmak için kullanılmaz, aynı zamanda 3000'den fazla kullanıcının sorguları bu çok büyük parçalı veritabanına karşı yürütülür. Zaten bu ilk testlerde büyük bir problem.
Neyse ki henüz yaşamıyoruz - bu yüzden en azından bir şey olan değişiklikler yapabilir ve gerekirse çevrimdışı yapabilirim.
Uzak veritabanlarının performansı sorun değildir - veri alt kümeleri oldukça küçüktür ve veritabanı genellikle toplamda 1GB'ın üzerine çıkmaz. Kayıtlar oldukça düzenli olarak ana sisteme geri beslenmekte ve artık gerekli olmadığında daha küçük BD'lerden çıkarılmaktadır.
Birçok kaydın birincil anahtarı olarak kümelenmiş bir GUID nedeniyle, tüm kayıtların koruyucusu olan merkezi DB'nin performansı sıkıntılıdır. Dizin parçalanması grafiklerin dışında.
Yani - performans sorunu düzeltmek için düşüncelerimi yeni bir sütun oluşturmak - İmzasız BIGINT IDENTITY (1,1) ve sonra tablo BIGINT sütununun Kümelenmiş PK değiştirmek olduğunu.
Birincil anahtar olan GUID alanında bir Benzersiz Kümelenmemiş dizin oluştururdum.
Daha küçük uzak 150 veritabanları, merkezi SQL Server veritabanındaki yeni PK hakkında bilgi sahibi olmak zorunda değildir - sadece veritabanındaki verileri düzenlemek ve kötü performans ve parçalanmayı durdurmak için kullanılacaktır.
Bu, merkezi SQL veritabanının performansını artıracak ve gelecekteki dizin parçalanma cehennemini engelleyecek mi (bir dereceye kadar)? ya da burada çok önemli bir şeyi kaçırdım ve beni ısırıp daha fazla keder yaratacak mı?
int
olarak 4255 gün (11.5 yıl) içinde tükenecekti. Eğer bunu yaptıysa, sizi sadece 11.5 yıl içinde suçlar;)