Насколько дорогая операция подключается к базе данных Mysql? - PullRequest
7 голосов
/ 09 июня 2011

В некоторых функциях кода php будет выполнять сотни, а в некоторых случаях тысячи запросов к одним и тем же таблицам, используя цикл.В настоящее время он создает новое соединение с базой данных для каждого запроса.Насколько дорогая эта операция?Могу ли я увидеть значительное увеличение скорости при повторном использовании того же соединения?Чтобы изменить это поведение и использовать одну и ту же базу данных, может потребоваться немало рефакторинга.

php использует mysql_connect для подключения к базе данных.

Просто исходя из того, что я здесь сказал,Есть ли другие очевидные оптимизации, которые вы бы порекомендовали (я читал о блокировке таблиц, например ...)?

РЕДАКТИРОВАТЬ: Мой вопрос больше о преимуществах использования одного соединения, а не о том, как избежать использованияболее одного.

Ответы [ 3 ]

5 голосов
/ 09 июня 2011

Документация для mysql_connect гласит:

Если будет выполнен второй вызов mysql_connect () с теми же аргументами, новая ссылка не будет установлена, но вместо этогобудет возвращен идентификатор ссылки уже открытой ссылки.

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

1 голос
/ 09 июня 2011

Я использую Zend_Framework, и мое профилирование базы данных показывает, что само соединение занимает почти в 10 раз больше времени, чем большинство моих запросов. У меня есть две разные базы данных, к которым я подключаюсь, и для каждого запроса я подключаюсь только один раз.

Я бы сказал, что переподключение для каждого запроса - плохой дизайн, но вопрос рефакторинга более сложен, чем этот. Вопросы, которые необходимо задать:

  1. Есть ли текущие проблемы с производительностью?
  2. Вы выполнили профилирование кода, чтобы сузить место возникновения проблем с производительностью?
  3. Сколько времени потребуется для этого рефакторинга? Примите во внимание тестирование, а не только время кодирования.
0 голосов
/ 09 июня 2011

Ответ на оригинальный вопрос должен быть очевидным.Если это не очевидно для вас, тогда все равно должно быть очевидно, как выяснить для себя, какое влияние это имеет.

Существуют ли другие очевидные оптимизации

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

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