Зачем использовать готовые заявления?
Есть множество преимуществ использования
готовые заявления в вашем
приложения, как для безопасности, так и
причины производительности.
Подготовленные заявления могут помочь увеличить
безопасность путем отделения логики SQL от
данные предоставляются. это
разделение логики и данных может помочь
предотвратить очень распространенный тип
уязвимость называется инъекцией SQL
атака. Обычно, когда вы имеете дело
со специальным запросом, вы должны быть
очень осторожен при обработке данных
что вы получили от пользователя. это
влечет за собой использование функций, которые экранируют
все необходимые неприятности
символы, такие как одинарные кавычки,
двойная кавычка и обратная косая черта
персонажи. Это не нужно, когда
иметь дело с подготовленными заявлениями.
разделение данных позволяет MySQL
автоматически учитывать эти
персонажи и они не должны быть
сбежал с помощью любой специальной функции.
Увеличение производительности в
подготовленные заявления могут исходить от
несколько разных функций. Во-первых
нужно только разобрать запрос по одному
время. Когда вы изначально готовите
заявление, MySQL будет анализировать
заявление, чтобы проверить синтаксис и установить
вверх запрос, который будет запущен. Тогда если вы
выполнить запрос много раз, это будет
больше не будет накладных расходов. это
предварительный анализ может привести к скорости
увеличить, если вам нужно запустить то же самое
много раз, например, когда
много операторов INSERT.
(Примечание: пока этого не произойдет с
MySQL 4.1, будущие версии также
кэшировать план выполнения подготовленных
заявления, устраняя еще один бит
накладные расходы вы платите за каждый
выполнение запроса.)
Второе место, где производительность может
увеличение за счет использования нового
двоичный протокол, который подготовил
заявления могут использовать. Традиционный
протокол в MySQL всегда конвертирует
все в строки перед отправкой
их по сети. Это означает
что клиент преобразует данные в
строки, которые часто больше, чем
исходные данные, отправляет их через
сеть (или другой транспорт) к
сервер, который, наконец, декодирует
строка в правильный тип данных.
двоичный протокол удаляет это
конверсионные накладные расходы. Все типы
отправлено в собственном двоичном виде, который
сохраняет использование процессора преобразования и
также может сократить использование сети.
Когда следует использовать подготовленные заявления? Подготовленные заявления могут
быть полезным для всего вышеперечисленного
причины, однако они не должны (и
не могут быть использованы для всего в
ваше приложение. Во-первых, тип
запросов, над которыми они работают
ограничено DML (INSERT, REPLACE,
ОБНОВЛЕНИЕ и УДАЛЕНИЕ), СОЗДАТЬ ТАБЛИЦУ, и
ВЫБЕРИТЕ запросы. Поддержка дополнительных
типы запросов будут добавлены в дальнейшем
версии, чтобы подготовить
API заявления более общий.
-> Иногда подготовленные операторы могут на самом деле быть медленнее, чем обычные
запросы . Причина этого заключается в том, что
есть две поездки туда и обратно
сервер, который может тормозить просто
запросы, которые выполняются только
разовое В таких случаях один
должен решить, стоит ли торговать
от влияния на производительность этого
дополнительный туда-обратно, чтобы получить
преимущества безопасности использования готовых
заявления.