Şema iyileştirme en iyi yöntemleri
Tablo şeması, tablodaki tüm sütunların adlarını ve veri türlerini tanımlar. Tablo şeması, tablo oluşturma sırasında veya ilgili alım eşlemesi değiştirilerek veri alımı işleminin bir parçası olarak ayarlanabilir. Tablo şemasının tanımlanma şekli sorgu performansınızı önemli ölçüde etkileyebilir. Verileriniz için ideal şema, kullanım örneği, veri erişim desenleri ve depolamayı planladığınız belirli veriler gibi birçok faktöre bağlıdır. Bu makalede, verimli şemalar tasarlayarak performansı iyileştirmeye yönelik en iyi yöntemler açıklanmaktadır.
Veri türleri
Veri türleri hakkında genel bilgi için bkz . skaler veri türleri.
Yaygın olarak kullanılan alanlar dinamik tür değil, sütunlar yazılmalıdır.
Dinamik sütunda sık aranan veya toplanan JSON özellikleri, dize, uzun veya gerçek gibi daha belirli bir türe sahip tablodaki normal bir sütuna dönüştürülmelidir.
Filtre ve toplama için yaygın olarak kullanılmayan seyrek sütunlar, eşleme dönüştürmesi kullanılarak
DropMappedFields
dinamik bir sütunda özellik paketi olarak toplanmalıdır.Tarih saat sütunları tarih saat olarak yazılmalıdır; uzun veya diğer veri türleri olarak yazılmalıdır.
- Örneğin
DateTimeFromUnixMilliseconds
, unix dönüştürme eşlemelerinden DateTime kullanın. .
- Örneğin
Ondalık türü tam duyarlık sağlar ve bu da tam doğruluk gerektiren finansal ve diğer uygulamalara en uygun hale getirir. Ancak gerçek türden çok daha yavaştır. Yalnızca gerektiğinde ondalık türünü kullanın.
Tüm kimlik (tanımlama) sütunları sayısal olarak değil dize olarak yazılmalıdır. Bu tür, dizini çok daha etkili hale getirir ve arama süresini önemli ölçüde iyileştirebilir. Bölümleme yalnızca dize sütunlarında tanımlanabildiği için bölümleme de etkinleştirilir. Bu sütunda kullanılan sorgu filtreleri yalnızca eşitlik ise, örneğin sütunda guid'ler varsa kodlama profilini
Identifier
kullanabilirsiniz. Daha fazla bilgi için bkz . kodlama ilkesi.
Tablolar
- Yüzlerce sütunu olan geniş tablolara göre tercih edilen dar tablolar için iyileştirin.
- Sorgu süresinde pahalı birleştirmelerden kaçınmak için, veri alımı sırasında zenginleştirerek boyut verilerini normalleştirin. Zenginleştirme için kullanılan boyut tablosu güncelleştirildiyse ve senaryo en son değeri gerektiriyorsa, yalnızca en son değeri tutmak için gerçekleştirilmiş görünümleri kullanın.
- Seyrek 20'den fazla sütun varsa, yani birçok değer null ise ve bu sütunlar aramalar veya toplamalar için nadiren kullanılıyorsa, dönüştürme eşlemesini kullanarak sütunları dinamik bir sütunda JSON özellik paketi olarak gruplandırın
DropMappedFields
.
Dizinleme
Hiçbir zaman aranmamış alanlar dizin oluşturmayı devre dışı bırakabilir. Dizede veya dinamik yazılan sütunlarda dizin oluşturmayı devre dışı bırakmak için profille BigObject
kodlama ilkesini kullanın.