Procedura składowana

Z Wikipedii, wolnej encyklopedii

Procedura składowana (ang. stored procedure) – jeden z elementów implementacji bazy danych.

Procedura składowana jest umiejscowiona bezpośrednio w systemie bazy danych, a nie po stronie klienta. Pozwala to na zmniejszenie liczby kroków wymiany danych pomiędzy klientem a systemem zarządzania bazą danych, co może przyczynić się do wzrostu wydajności systemu. Zastosowanie procedur składowanych pozwala również wprowadzić bardziej przejrzysty interfejs pomiędzy bazą danych a aplikacjami z niej korzystającymi. W starszych systemach baz danych procedury były prekompilowane, co stwarzało dalszy zysk wydajnościowy.

Zastosowanie[edytuj | edytuj kod]

  • uporządkowanie/centralizacja operacji na bazie danych
  • wprowadzanie reguł bezpieczeństwa (klient ma prawo wykonać procedurę, a nie wykonać dowolne zapytanie)
  • zmniejszenie liczby interakcji z bazą danych

Wady[edytuj | edytuj kod]

W bazie danych istnieje jedna instancja danej procedury. Jej zmiana wpływa natychmiast na działanie wszystkich elementów systemu (w bazie i poza nią), które z danej procedury korzystają. Prześledzenie wszystkich tego typu zależności jest trudne i wręcz nie zawsze możliwe. W większości języków kompilowanych, formalna poprawność kodu, w tym liczby i zgodności typów argumentów, jest wymagana do poprawnej kompilacji. Z kolei większość systemów DBMS nie przeprowadza walidacji funkcji i procedur wywołujących modyfikowaną procedurę, co może prowadzić do ukrytych błędów, ujawniających się w czasie pracy systemu.

W niektórych instytucjach procedury składowane stosowane są jako metoda nadawania uprawnień do bazy danych. Jednak najczęściej użytkownikami bazy danych są programiści, którzy pozbawieni możliwości wykonania właściwych zapytań, zmuszeni są stosować udostępnione im procedury, które często nie są zoptymalizowane do realizacji celu stawianego przed aplikacją.

Zysk wydajnościowy płynący ze stosowania procedur składowanych jest również ograniczony, gdyż dynamiczny SQL (we współpracy z niektórymi systemami baz danych) pozwala na wykonywanie wielopoleceniowych zapytań. Również prekompilacja przestaje być stosowana w nowszych systemach (np. Microsoft SQL Server od wersji 2000).

Zobacz też[edytuj | edytuj kod]