Подтвердить что ты не робот

Является ли библиотека PDO быстрее, чем собственные функции MySQL?

Я прочитал несколько вопросов по этому поводу, но я боюсь, что они могут устареть, поскольку выпущены более новые версии библиотек PDO, так как на эти вопросы был дан ответ.

Я написал класс MySQL, который строит запросы и экранирует параметры, а затем возвращает результаты на основе запроса. В настоящее время этот класс использует встроенные функции mysql.

Я хорошо знаю преимущества использования библиотеки PDO, например. он совместим с другими базами данных, хранимые процедуры проще выполнять и т.д. Однако то, что я хотел бы знать, просто; быстрее использует библиотеку PDO, а затем использует встроенные функции mysql?

Я только что написал эквивалентный класс для MsSQL, поэтому переписывать его для работы со всеми базами данных не заставит себя долго ждать. Стоит ли это или это библиотека PDO медленнее?

4b9b3361

Ответ 1

Я обнаружил, что PDO во многих ситуациях/проектах будет даже быстрее, чем более родные модули.
В основном потому, что многие шаблоны/строительные блоки в "PDO-приложении" требуют меньше управляемого кода PHP скрипт, а в скомпилированном расширении выполняется больше кода, и при выполнении действий в script есть ограничение скорости. Простые синтетические тесты без обработки данных и ошибок часто не охватывают эту часть, поэтому (среди других проблем, таких как, например, измерение неточностей), я думаю, что "10000x SELECT x FROM foo занимает 10 мс больше", выводы чаще всего отсутствуют.
Я не могу предоставить вам прочные эталонные показатели, и результат зависит от того, как окружающее приложение обрабатывает данные, но даже синтетические тесты обычно показывают только незначительные различия, что позволяет лучше тратить время на оптимизацию ваших запросов, сервера MySQL, сети... вместо того, чтобы беспокоиться о производительности PDO. Не говоря уже о безопасности и обработке ошибок...

Ответ 2

Мое наблюдение заключается в том, что PDO, по-видимому, менее терпимо относится ко многим последовательным соединениям - это соединения, создаваемые в цикле. Я знаю, что это плохая практика, это первое место. Когда я использовал mysql_ *, мои зацикленные запросы казались достаточно быстрыми. Однако, когда я переключился на PDO, я заметил гораздо больше времени отклика для этих типов запросов.

TL; DR; - Если вы переключитесь на PDO и вы вызываете запросы в цикле PHP, вам может потребоваться переписать приложение для вызова одного запроса, а не для многих последовательных запросов.