Какой самый быстрый в PHP-MySQL или MySQLi? - PullRequest
56 голосов
/ 05 октября 2008

Я хотел бы знать, есть ли у кого-нибудь опыт из первых рук с этой дихотомией. В некоторых блогах говорится, что расширение mysql работает быстрее, чем mysqli. Это правда?

И я спрашиваю только о скорости. Я знаю, что в mysqli есть функции, которых нет в старом расширении.

Ответы [ 10 ]

88 голосов
/ 05 октября 2008

Расширение MySQL немного быстрее MySQLi в большинстве тестов, о которых я уже писал. Однако разница настолько мала, что это, вероятно, не должно быть вашим критерием для выбора между ними.

Другие факторы увеличивают разницу в производительности между MySQL и MySQL. Использование mod_php или FastCGI, кеша байт-кода, такого как APC, или разумное использование кэширования данных для уменьшения количества обращений к базе данных гораздо более выгодно для общей производительности сценариев PHP, чем выбор расширения MySQL.

Не будь копеечным и глупым! : -)

10 голосов
/ 29 декабря 2009

"Это зависит."

Например, PHP MySQL против метрик доступа к базе данных MySQLi и последующие комментарии указывают на аргументы в обоих направлениях.

Если у вас есть зрелая база данных и кодовая база, проведите некоторое тестирование и посмотрите, что работает в вашей системе. Если нет, перестаньте беспокоиться о преждевременной оптимизации.

6 голосов
/ 17 января 2012

См. http://php.net/manual/en/mysqlinfo.api.choosing.php

Общая производительность всех трех расширений примерно одинакова. Хотя производительность расширения составляет лишь часть общего времени выполнения веб-запроса PHP. Часто воздействие составляет всего 0,1%.

4 голосов
/ 28 декабря 2011

По отношению к языку программирования PHP MySQL - это старый драйвер базы данных, а MySQLi - улучшенный драйвер. MySQLi использует преимущества новых функций MySQL 5.

Особенности MySQLi взяты с сайта php.net:

  • Объектно-ориентированный интерфейс
  • Поддержка подготовленных заявлений
  • Поддержка нескольких операторов
  • Поддержка транзакций
  • Расширенные возможности отладки
  • Поддержка встроенного сервера
4 голосов
/ 15 июля 2011

Может быть, это может быть причиной, чтобы сделать правильный выбор :: Участок Убить PHP расширение MySQL

"Да, вы все правильно прочитали. Недавно Филипп Олсон отправил в список рассылки внутренних компонентов PHP предложение убить оригинальное расширение PHP MySQL в будущих версиях PHP."

3 голосов
/ 08 апреля 2009

В документации PHP есть хорошее сравнение mysql, mysqli и PDO . Я знаю, что вы спрашивали только о скорости, но другие могут найти это полезным. В нем рассказывается о функциональных различиях между опциями.

3 голосов
/ 05 октября 2008

Согласно всем результатам Google для тестов, связанных с ceejayoz , похоже, что MySQL, по крайней мере, немного быстрее MySQLi во всех тестах производительности. Я рекомендую прочитать результаты для деталей, но решил, что я опубликую что-то, что прямо ответит на вопрос и увеличит ответ ceejayoz.

2 голосов
/ 25 февраля 2010

Если не имеют значения миллисекунды, не волнуйтесь. Конечно, если вам не нужны дополнительные функции, предоставляемые mysqli, просто придерживайтесь проверенного и проверенного mysql.

0 голосов
/ 25 декабря 2013
<?php
$start = microtime();
$c = new mysqli('localhost', 'username', 'userpass', 'username_dbname');
$c -> select_db('username_dbname');


$q = $c -> query("SELECT * FROM example");

while ($r = $q -> fetch_array(MYSQLI_ASSOC))
  {
  echo $r['col1'] . "<br/>\n";
  }

$me = $c -> query("SELECT col1 FROM example WHERE id='11'") -> fetch_array(MYSQLI_ASSOC);

echo $me['col1'];
echo (microtime() - $start);
?>

Почему при использовании mysqli oop происходит небольшое увеличение скорости при использовании этого скрипта с процедурным стилем mysql или mysqli? При тестировании вышеописанного скрипта я получаю на 0,0009 секунды больше, чем при использовании другого 2. При использовании процедурных процедур mysql или mysqli я загружал скрипты 20x в каждом отдельном стиле, и оба всегда были выше .001. Я загружаю вышеупомянутый скрипт 20x, и я получаю ниже .001 5x.

0 голосов
/ 22 июня 2013

MySQLi имеет два основных преимущества перед MySQL ; подготовленные операторы - отличный способ избежать атак с использованием SQL-инъекций. Во-вторых, MySQL (или mariaDB) сделает все возможное, чтобы оптимизировать подготовленные операторы, и, таким образом, у вас есть потенциал для оптимизации скорости. Увеличение скорости от осчастливления базы данных значительно увеличит крошечную разницу между MySQL и MySQLi.

Если вы вводите операторы, вы искажаете их вместе, как SELECT * FROM users WHERE ID=$user_id, база данных будет обрабатывать это как уникальный оператор с каждым новым значением $user_id. Но подготовленный оператор SELECT * FROM users WHERE ID=? имеет гораздо больше шансов на выполнение некоторых оптимизаций / кэширования в базе данных.

Но сравнения довольно скучны, поскольку MySQL теперь официально устарела . Изо рта лошади:

Устаревшие функции в PHP 5.5.x

ext / mysql deprecation

Исходное расширение MySQL устарело и будет выдавать E_DEPRECATED ошибок при подключении к базе данных. Вместо этого используйте расширения MySQLi или PDO_MySQL .

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