Mysql
 sql >> база данни >  >> RDS >> Mysql

Съхранените процедури на MySQL ги използват или не, за да ги използват

За разлика от действителния код на езика за програмиране, те:

  • не е преносим (всеки db има своя собствена версия на PL/SQL. Понякога различни версии на същото базата данни са несъвместими - виждал съм го!)
  • не е лесно за тестване – имате нужда от истински (dev) екземпляр на база данни, за да ги тества и по този начин модулното тестване на техния код като част от изграждане е практически невъзможно
  • не може лесно да се актуализира/освобождава – трябва да ги пуснете/създадете, т.е. промените производствената база данни, за да ги освободи
  • нямат поддръжка на библиотека (защо да пишете код, когато някой друг има)
  • не са лесно интегрируеми с други технологии (опитайте да се обадите на уеб услуга от тях)
  • те използват език приблизително толкова примитивен като Fortran и поради това са неелегантни и трудоемки, за да направят полезно кодиране, така че е трудно да се изрази бизнес логиката, въпреки че обикновено това е основната им цел
  • не предлагайте отстраняване на грешки/проследяване/регистриране на съобщения и т.н. (някои dbs може да поддържат това - все пак не съм го виждал)
  • липса на приличен IDE, който да помага със синтаксиса и свързването към други съществуващи процедури (напр. като Eclipse за java)
  • хора, които имат умения да ги кодират, са по-редки и по-скъпи от кодиращите на приложения
  • техната „висока производителност“ е мит, тъй като те се изпълняват на сървъра на базата данни, който обикновено увеличават натоварването на db сървъра, така че използването им обикновено намалява максималната ви пропускателна способност на транзакциите
  • невъзможност за ефективно споделяне на константи (обикновено се решава чрез създаване на таблица и търсене на нея от вашата процедура - много неефективно)
  • и др.

Ако имате много специфично за базата данни действие (напр. действие по време на транзакция за поддържане на целостта на db) или поддържате процедурите си много атомни и прости, може би бихте могли да ги обмислите.

Препоръчва се повишено внимание, когато посочвате "висока производителност" отпред. Често води до лош избор за сметка на добрия дизайн и ще ви ухапе много по-рано, отколкото си мислите.

Използвайте съхранени процедури на свой собствен риск (от някой, който е бил там и никога не иска да се върне). Моята препоръка е да ги избягвате като чума.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да свържете параметри към необработена DB заявка в Laravel, която се използва в модел?

  2. Кога *не* да използвате подготвени изявления?

  3. MySQL - Редове към колони

  4. Как да конвертирате низ към дата в MySQL?

  5. Разгръщане и управление на MySQL NDB клъстер с ClusterControl