Недавно я просматривал блог и замечал некоторые моменты об использовании PDO в mysql, и он изменил мой взгляд на PDO. Точки:
Собственные подготовленные операторы не могут использовать кеш запросов, что приводит к снижению производительности.
Собственные подготовленные операторы не могут выполнять типы сертификатов, например «SHOW TABLES»
Собственные подготовленные операторы неправильно сообщают длины столбцов для некоторых других запросов «SHOW», что приводит к искаженным результатам.
Вызов хранимых процедур несколько раз с использованием собственных подготовленных операторов заставляет соединение отказаться.
Может кто-нибудь прокомментировать это, пожалуйста?
Мне нужен кеш запросов в моем веб-приложении. Я готов переместить свое веб-приложение, чтобы использовать PDO после рассмотрения проблем с производительностью на моем веб-сайте. Кто-нибудь может предложить мне?
Заранее спасибо.
Что ж
Вы можете использовать следующую команду для включения кэширования запросов:
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);
Эта команда доступна только для PHP 5.1.3.
Подготовленные утверждения DO используют кеш запросов, но у него есть условия:
Из документа 5.1 Doc:
До MySQL 5.1.17 подготовленные операторы не используют кеш запросов. Начиная с 5.1.17, подготовленные операторы используют кеш запросов при определенных условиях, которые различаются в зависимости от метода подготовки:
- Выписки, которые выдаются с использованием двоичного протокола с использованием mysql_stmt_prepare () и mysql_stmt_execute ().
- Выписки, которые выдаются с использованием текстового (недвоичного) протокола с использованием PREPARE и EXECUTE. См. Раздел 12.6 «Синтаксис SQL для подготовленных выражений».
Что 5.5 Doc повторяет как:
Подготовленные утверждения, которые выдаются с использованием двоичного протокола с использованием mysql_stmt_prepare () и mysql_stmt_execute (), подвержены ограничениям на кеширование. Сравнение с утверждениями в кеше запросов основано на тексте заявления после расширения? маркеры параметров. Оператор сравнивается только с другими кэшированными операторами, которые выполнялись с использованием двоичного протокола. То есть для целей кеша запросов подготовленные операторы, выпущенные с использованием двоичного протокола, отличаются от подготовленных операторов, выпущенных с использованием текстового протокола.