Udostępnij za pośrednictwem


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

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

Czego można się spodziewać

Dedykowana pula SQL obsługuje wiele funkcji języka T-SQL używanych w programie SQL Server. Co ważniejsze, istnieją funkcje specyficzne dla skalowania w poziomie, których można użyć, aby zmaksymalizować wydajność 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 są doskonałym sposobem na enkapsulację kodu SQL, który jest przechowywany blisko danych w dedykowanej 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 były jeszcze bardziej elastyczne.

Dedykowana pula SQL zapewnia uproszczoną i usprawnioną implementację procedur składowanych. Największą różnicą w porównaniu z programem 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 na uruchamianie 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ń.

Wskazówka

Celem jest oszczędność godzin, minut i sekund, a nie milisekund. Warto więc 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ą metodę SQL, mówi się, że wewnętrzna procedura składowana lub wywołanie kodu są zagnieżdżone.

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

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

EXEC prc_nesting

Jeśli procedura składowana wykonuje również kolejne wywołanie EXEC, poziom zagnieżdżenia 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 jakiś dynamiczny SQL, poziom zagnieżdżenia wzrasta 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 ośmiu poziomów gniazdowania. Jeśli jednak to zrobisz, musisz przerobić kod, aby dopasować poziomy zagnieżdżenia w ramach tego limitu.

WSTAWIAĆ.. WYKONAĆ

Dedykowana pula SQL nie zezwala na korzystanie z zestawu wyników procedury składowanej za pomocą instrukcji 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 Transact-SQL, które nie są implementowane w dedykowanej puli SQL, a mianowicie:

  • tymczasowe procedury przechowywane
  • numerowane procedury składowane
  • rozszerzone procedury składowane
  • Procedury składowane CLR
  • opcja szyfrowania
  • opcja replikacji
  • parametry typu tabelarycznego
  • Parametry tylko do odczytu
  • parametry domyślne
  • konteksty wykonywania
  • instrukcja return

Następne kroki

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