Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Procedury składowane MySQL używają ich lub nie

W przeciwieństwie do rzeczywistego kodu języka programowania:

  • nieprzenośne (każda baza danych ma swoją własną wersję PL/SQL. Czasami różne wersje tego tego samego bazy danych są niezgodne - widziałem to!)
  • niełatwe do przetestowania – potrzebujesz prawdziwego (dev) instancja bazy danych w celu ich przetestowania, a zatem jednostkowe testowanie ich kodu w ramach kompilacji jest praktycznie niemożliwe
  • niełatwe do aktualizacji/uwolnienia – musisz je usunąć/utworzyć, tj. zmodyfikować baza danych produkcyjnych, aby je zwolnić
  • nie mam obsługi bibliotek (po co pisać kod, gdy ktoś inny ma)
  • nie można łatwo zintegrować z innymi technologiami (spróbuj wywołać z nich usługę sieciową)
  • używają języka mniej więcej tak prymitywnego jak Fortran, a zatem są nieeleganckie i pracochłonne, aby uzyskać przydatne kodowanie, więc trudno jest wyrazić logikę biznesową, mimo że zazwyczaj taki jest ich główny cel
  • nie oferuj debugowania/śledzenia/rejestrowania wiadomości itp. (niektóre bazy danych mogą to obsługiwać - chociaż tego nie widziałem)
  • brak przyzwoitego IDE, które pomogłoby w składni i łączeniu z innymi istniejącymi procedurami (np. jak Eclipse dla java)
  • ludzie znający się na ich kodowaniu są rzadsi i drożsi niż koderzy aplikacji
  • ich „wysoka wydajność” to mit, ponieważ działają na serwerze bazy danych, które zwykle zwiększają obciążenie serwera bazy danych, więc korzystanie z nich zwykle zmniejszy Twoja maksymalna przepustowość transakcji
  • niemożność efektywnego udostępniania stałych (zwykle rozwiązywane przez utworzenie tabeli i wywołanie jej z poziomu procedury - bardzo nieefektywne)
  • itd.

Jeśli masz działanie bardzo specyficzne dla bazy danych (np. działanie w trakcie transakcji mające na celu zachowanie integralności bazy danych) lub utrzymujesz bardzo atomowe i proste procedury, być może rozważ je.

Zaleca się ostrożność przy określaniu z góry „wysokiej wydajności”. Często prowadzi to do złych wyborów kosztem dobrego projektu i ugryzie Cię znacznie szybciej, niż myślisz.

Korzystaj z procedur przechowywanych na własne ryzyko (od kogoś, kto tam był i nigdy nie chce wracać). Moją radą jest unikanie ich jak ognia.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przyspieszenie liczenia wierszy w MySQL

  2. Konwertuj znacznik czasu na datę w zapytaniu MySQL

  3. Ostrzeżenie:mysql_query():3 nie jest prawidłowym zasobem MySQL-Link

  4. Zapytanie Mysql do dynamicznej konwersji wierszy na kolumny na podstawie dwóch kolumn

  5. 'IF' w instrukcji 'SELECT' - wybierz wartość wyjściową na podstawie wartości kolumn