Udostępnij za pośrednictwem


Używanie procedur składowanych dla dedykowanych pul SQL w usłudze Azure Synapse Analytics

Ten artykuł zawiera wskazówki dotyczące tworzenia dedykowanych rozwiązań puli SQL przez zaimplementowanie procedur składowanych.

Czego oczekiwać

Dedykowana pula SQL obsługuje wiele funkcji języka T-SQL używanych w SQL Server. Co ważniejsze, istnieją funkcje specyficzne dla skalowania w poziomie, których można użyć do zmaksymalizowania wydajności rozwiązania.

Ponadto, aby ułatwić utrzymanie skali i wydajności dedykowanej puli SQL, istnieją dodatkowe funkcje i funkcje, które mają różnice behawioralne.

Wprowadzenie procedur składowanych

Procedury składowane to doskonały sposób hermetyzacji kodu SQL, który jest przechowywany blisko dedykowanych danych puli SQL. Procedury składowane pomagają również deweloperom modularyzować swoje rozwiązania, hermetyzując kod w możliwe do zarządzania jednostki, co ułatwia zwiększenie możliwości ponownego używania kodu. Każda procedura składowana może również akceptować parametry, aby uczynić je jeszcze bardziej elastycznymi.

Dedykowana pula SQL zapewnia uproszczoną i uproszczoną implementację procedury składowanej. Największą różnicą w porównaniu z SQL Server jest to, że procedura składowana nie jest wstępnie skompilowanym kodem.

Ogólnie rzecz biorąc, w przypadku magazynów danych czas kompilacji jest niewielki w porównaniu z czasem potrzebnym do uruchamiania zapytań względem dużych woluminów danych. Ważniejsze jest upewnienie się, że kod procedury składowanej jest poprawnie zoptymalizowany pod kątem dużych zapytań.

Porada

Celem jest oszczędność godzin, minut i sekund, a nie milisekund. Dlatego warto traktować procedury składowane jako kontenery logiki SQL.

Gdy dedykowana pula SQL wykonuje procedurę składowaną, instrukcje SQL są analizowane, tłumaczone i zoptymalizowane w czasie wykonywania. Podczas tego procesu każda instrukcja jest konwertowana na zapytania rozproszone. Kod SQL wykonywany względem danych różni się od przesłanego zapytania.

Zagnieżdżanie procedur składowanych

Gdy procedury składowane wywołają inne procedury składowane lub wykonują dynamiczną procedurę SQL, mówi się, że wewnętrzna procedura składowana lub wywołanie kodu mają być zagnieżdżone.

Dedykowana pula SQL obsługuje maksymalnie osiem poziomów zagnieżdżania. Natomiast poziom zagnieżdżenia w SQL Server wynosi 32.

Wywołanie procedury składowanej najwyższego poziomu odpowiada poziomowi zagnieżdżenia 1.

EXEC prc_nesting

Jeśli procedura składowana powoduje również kolejne wywołanie EXEC, poziom zagnieżdżania zwiększa się do dwóch.

CREATE PROCEDURE prc_nesting
AS
EXEC prc_nesting_2  -- This call is nest level 2
GO
EXEC prc_nesting

Jeśli druga procedura wykonuje kilka dynamicznych operacji SQL, poziom zagnieżdżania zwiększa się do trzech.

CREATE PROCEDURE prc_nesting_2
AS
EXEC sp_executesql 'SELECT 'another nest level'  -- This call is nest level 2
GO
EXEC prc_nesting

Dedykowana pula SQL nie obsługuje obecnie @@NESTLEVEL. W związku z tym należy śledzić poziom zagnieżdżania. Jest mało prawdopodobne, że przekroczysz limit poziomu ośmiu zagnieżdżeń. Jeśli jednak to zrobisz, musisz przerobić kod, aby dopasować poziomy zagnieżdżania do tego limitu.

WSTAWIĆ.. WYKONAĆ

Dedykowana pula SQL nie umożliwia korzystania z zestawu wyników procedury składowanej z instrukcją INSERT. Istnieje jednak alternatywne podejście, którego można użyć. Aby zapoznać się z przykładem, zobacz artykuł dotyczący tabel tymczasowych.

Ograniczenia

Istnieją pewne aspekty procedur składowanych języka Transact-SQL, które nie są implementowane w dedykowanej puli SQL, które są następujące:

  • tymczasowe procedury składowane
  • ponumerowane procedury składowane
  • rozszerzone procedury składowane
  • Procedury składowane CLR
  • opcja szyfrowania
  • opcja replikacji
  • parametry wartości tabeli
  • Parametry tylko do odczytu
  • parametry domyślne
  • konteksty wykonywania
  • return, instrukcja

Następne kroki

Aby uzyskać więcej porad dotyczących programowania, zobacz Omówienie programowania.