Typy danych tabeli w usłudze Synapse SQL

Tip

Microsoft Fabric Data Warehouse to magazyn relacyjny w skali przedsiębiorstwa na podstawie bazy danych data lake z architekturą gotową do użycia w przyszłości, wbudowaną sztuczną inteligencją i nowymi funkcjami. Jeśli dopiero zaczynasz korzystać z magazynowania danych, zacznij od Fabric Data Warehouse. Istniejące obciążenia dedykowanej puli SQL mogą zostać zaktualizowane do Fabric, aby uzyskać dostęp do nowych możliwości w zakresie nauki o danych, analizy w czasie rzeczywistym i raportowania.

W tym artykule znajdziesz zalecenia dotyczące definiowania typów danych tabeli w dedykowanej puli SQL usługi Synapse.

Typy danych

Dedykowana pula usługi Synapse SQL obsługuje najczęściej używane typy danych. Aby uzyskać listę obsługiwanych typów danych, zobacz typy danych w instrukcji CREATE TABLE. W przypadku usługi Synapse SQL Serverless zapoznaj się z artykułem Query storage files with serverless SQL pool in Azure Synapse Analytics oraz Jak używać OPENROWSET z bezserwerową pulą SQL w Azure Synapse Analytics

Minimalizuj długość wiersza

Minimalizacja rozmiaru typów danych skraca długość wiersza, co prowadzi do lepszej wydajności zapytań. Użyj najmniejszego typu danych, który będzie odpowiedni dla Twoich danych.

  • Unikaj definiowania kolumn znaków o dużej długości domyślnej. Jeśli na przykład najdłuższa wartość to 25 znaków, zdefiniuj kolumnę jako VARCHAR(25).
  • Unikaj używania NVARCHAR, gdy potrzebujesz tylko VARCHAR.
  • Jeśli to możliwe, należy użyć NVARCHAR(4000) lub VARCHAR(8000) zamiast NVARCHAR(MAX) lub VARCHAR(MAX).
  • Unikaj używania liczb zmiennoprzecinkowych i liczb dziesiętnych o skali 0 (zero). Powinny to być TINYINT, SMALLINT, INT lub BIGINT.

Uwaga

Jeśli do ładowania tabel SQL usługi Synapse używasz tabel zewnętrznych programu PolyBase, zdefiniowana długość wiersza tabeli nie może przekroczyć 1 MB. Jeśli wiersz z danymi o zmiennej długości przekracza 1 MB, można załadować wiersz przy użyciu narzędzia BCP, ale nie narzędzia PolyBase.

Identyfikowanie nieobsługiwanych typów danych

W przypadku migrowania bazy danych z innej bazy danych SQL mogą wystąpić typy danych, które nie są obsługiwane w usłudze Synapse SQL. Użyj tego zapytania, aby odnaleźć nieobsługiwane typy danych w istniejącym schemacie SQL.

SELECT  t.[name], c.[name], c.[system_type_id], c.[user_type_id], y.[is_user_defined], y.[name]
FROM sys.tables  t
JOIN sys.columns c on t.[object_id]    = c.[object_id]
JOIN sys.types   y on c.[user_type_id] = y.[user_type_id]
WHERE y.[name] IN ('geography','geometry','hierarchyid','image','text','ntext','sql_variant','xml')
 OR  y.[is_user_defined] = 1;

Alternatywne rozwiązania dla nieobsługiwanych typów danych

Na poniższej liście przedstawiono typy danych, których usługa Synapse SQL nie obsługuje i udostępnia alternatywy, których można użyć zamiast nieobsługiwanych typów danych.

Nieobsługiwany typ danych Rozwiązanie
geometria varbinary
geografia varbinary
hierarchyid nvarchar(4000)
obraz varbinary
text varchar
ntext nvarchar
sql_variant Podziel kolumnę na kilka silnie typiowanych kolumn.
table Przekonwertuj na tabele tymczasowe lub rozważ zapisanie danych za pomocą CETAS.
timestamp Przekształć kod, aby używać `datetime2` i funkcji `CURRENT_TIMESTAMP`. Tylko stałe są obsługiwane jako wartości domyślne, dlatego current_timestamp nie można zdefiniować jako domyślnego ograniczenia. Jeśli musisz przeprowadzić migrację wartości wersji wiersza z kolumny o typie sygnatury czasowej, użyj BINARY(8) lub VARBINARY(8) dla wartości wersji wiersza NOT NULL lub NULL.
xml varchar
typ zdefiniowany przez użytkownika W miarę możliwości przekonwertuj z powrotem na natywny typ danych.
wartości domyślne Wartości domyślne obsługują tylko literały i stałe.

Aby uzyskać więcej informacji na temat tworzenia tabel, zobacz omówienie programowania.