Преимущества и области применения процедурных расширений
Хранимые процедуры, пользовательские функции и триггеры можно использовать множеством разных способов, в зависимости от конкретной ситуации. Основное их назначение — повышение производительности, сокращение сетевого трафика, повышение безопасности данных и повторное использование программного кода.
Производительность и сетевой трафик Хранимые процедуры можно использовать для повышения производительности приложения. Так как эти процедуры хранятся в СУБД в виде уже скомпилированного кода, они, как правило, выполняются быстрее, чем скомпилированные инструкции SQL (последние компилируются при каждом обращении к ним в программе; компиляция — довольно затратный процесс с точки зрения загрузки процессора и потребления памяти). Сетевой трафик можно существенно снизить, так как отпадает необходимость пересылки на сервер сложных инструкций — они и так там хранятся, причем в скомпилированном виде. Каждая отдельная инструкция недостаточно велика, чтобы как-то понизить производительность сети, однако в крупных системах с тысячами пользователей и инструкций SQL различие сразу становится заметным.
Безопасность базы данных
Хранимые процедуры, функции и триггеры могут быть использованы в целях повышения безопасности базы данных. Хранимая процедура (равно как и функция) представляет собой отдельный объект базы данных с собственными привилегиями. Таким образом, можно создать хранимую процедуру и предоставить ей полномочия изменения только отдельных столбцов таблицы. После этого у пользователей можно отозвать права обновления данных в таблице и одновременно предоставить им привилегии на запуск данной хранимой процедуры. Такой подход дополняет систему защиты данных дополнительным уровнем безопасности, который основан на привилегиях