PDO в производительности mysql

Недавно я просматривал блог и замечал некоторые моменты об использовании PDO в mysql, и он изменил мой взгляд на PDO. Точки:

  1. Собственные подготовленные операторы не могут использовать кеш запросов, что приводит к снижению производительности.

  2. Собственные подготовленные операторы не могут выполнять типы сертификатов, например «SHOW TABLES»

  3. Собственные подготовленные операторы неправильно сообщают длины столбцов для некоторых других запросов «SHOW», что приводит к искаженным результатам.

  4. Вызов хранимых процедур несколько раз с использованием собственных подготовленных операторов заставляет соединение отказаться.

Может кто-нибудь прокомментировать это, пожалуйста?

Мне нужен кеш запросов в моем веб-приложении. Я готов переместить свое веб-приложение, чтобы использовать PDO после рассмотрения проблем с производительностью на моем веб-сайте. Кто-нибудь может предложить мне?

Заранее спасибо.

Related of "PDO в производительности mysql"

Что ж

  • вы правы для первого пункта
  • SHOW и SHOW TABLES – это команды, которые обычно не используются в большинстве случаев использования
  • Iam, используя подготовленные statemends в сочетании с хранимыми процедурами и еще не сталкивались с такими проблемами.

Вы можете использовать следующую команду для включения кэширования запросов:

$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 (), подвержены ограничениям на кеширование. Сравнение с утверждениями в кеше запросов основано на тексте заявления после расширения? маркеры параметров. Оператор сравнивается только с другими кэшированными операторами, которые выполнялись с использованием двоичного протокола. То есть для целей кеша запросов подготовленные операторы, выпущенные с использованием двоичного протокола, отличаются от подготовленных операторов, выпущенных с использованием текстового протокола.