Udostępnij za pośrednictwem


Najlepsze rozwiązania dotyczące optymalizacji schematu

Schemat tabeli definiuje nazwy i typy danych wszystkich kolumn w tabeli. Schemat tabeli można ustawić podczas tworzenia tabeli lub w ramach procesu pozyskiwania danych, modyfikując odpowiednie mapowanie pozyskiwania. Sposób definiowania schematu tabeli może znacząco wpłynąć na wydajność zapytań. Idealny schemat danych zależy od wielu czynników, w tym przypadków użycia, wzorców dostępu do danych i określonych danych, które mają być przechowywane. W tym artykule opisano najlepsze rozwiązania dotyczące optymalizacji wydajności przez projektowanie wydajnych schematów.

Typy danych

Aby uzyskać ogólne informacje na temat typów danych, zobacz typy danych skalarnych.

  • Często używane pola powinny być wpisywane kolumny, a nie typ dynamiczny .

  • Często wyszukiwane lub agregowane właściwości JSON w kolumnie dynamicznej powinny być konwertowane na zwykłą kolumnę w tabeli z bardziej określonym typem, takim jak ciąg, długi lub rzeczywisty.

  • Kolumny rozrzedzone, które nie są często używane do filtrowania i agregacji, powinny być zbierane jako torba właściwości w kolumnie dynamicznej DropMappedFields przy użyciu przekształcenia mapowania.

  • Kolumny daty i godziny powinny być wpisywane jako data/godzina, a nie długie lub inne typy danych.

  • Typ dziesiętny zapewnia dokładną precyzję, co sprawia, że najbardziej nadaje się do zastosowań finansowych i innych, które wymagają dokładnej dokładności. Jest to jednak znacznie wolniejsze niż rzeczywisty typ. Użyj tylko typu dziesiętnego, jeśli jest to wymagane.

  • Wszystkie kolumny identyfikatora (identyfikacji) powinny być wpisywane jako ciąg, a nie numeryczne. Ten typ sprawi, że indeks będzie znacznie bardziej skuteczny i może znacznie poprawić czas wyszukiwania. Umożliwi również partycjonowanie, ponieważ partycjonowanie można zdefiniować tylko w kolumnach ciągów. Jeśli filtry zapytania używane w tej kolumnie mają tylko równość, na przykład jeśli kolumna ma identyfikatory GUID, możesz użyć profilu Identifierkodowania . Aby uzyskać więcej informacji, zobacz zasady kodowania.

Tabele

  • Optymalizuj pod kątem wąskich tabel, które są preferowane w przypadku szerokich tabel z setkami kolumn.
  • Aby uniknąć kosztownych sprzężeń w czasie zapytania, zdenormalizuj dane wymiarów, wzbogacając je podczas pozyskiwania. Jeśli tabela wymiarów używana do wzbogacania jest aktualizowana, a scenariusz wymaga najnowszej wartości, użyj zmaterializowania widoków , aby zachować tylko najnowszą wartość.
  • Jeśli istnieje więcej niż 20 kolumn, które są rozrzedzoną, co oznacza, że wiele wartości ma wartość null, a te kolumny są rzadko używane do wyszukiwania lub agregacji, pogrupuj kolumny jako torbę właściwości JSON w kolumnie dynamicznej przy użyciu DropMappedFields mapowania transformacji.

Indeksowanie

Pola, które nigdy nie są przeszukiwane, mogą wyłączyć indeksowanie. Użyj zasad kodowania z profilemBigObject, aby wyłączyć indeksowanie w kolumnach ciągowych lub dynamicznych.