Является ли библиотека PDO быстрее, чем встроенные функции MySQL? - PullRequest
12 голосов
/ 19 марта 2012

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

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

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

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

Ответы [ 2 ]

11 голосов
/ 19 марта 2012

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

1 голос
/ 10 октября 2014

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...