Сколько запросов на одной веб-странице? - PullRequest
2 голосов
/ 11 августа 2010

Сколько запросов на одной веб-странице - это хорошая производительность?Если эта страница является домашней страницей, которая просматривается много раз.

и как насчет ....

$sql1 = mysql_query("SELECT * FROM a", $db1);
while($row = mysql_fetch_assoc($sql1)){
  $sql2 = mysql_query("SELECT * FROM b WHERE aid='a'", $db2);
  $a = mysql_fetch_assoc($sql2);
}

это хорошо?фактически я могу объединить $ sql1 и $ sql2 вместе с помощью INNER JOIN, но проблема в том, что $ sql1 - это данные запроса из базы данных 1, а $ sql2 - это данные запроса из базы данных 2. и я использую Parallels Plesk Panel, которая не позволяет мне добавлять ихбаза данных пользователя для нескольких баз данных.

Если я использую этот код на моем сайте, это хорошо?или в любом случае сделать это?

Спасибо ...

Ответы [ 4 ]

7 голосов
/ 11 августа 2010

На самом деле у вас есть 2 вопроса в 1.
Общий и конкретный.
На мой взгляд, у обоих есть очевидные ответы.

Сколько запросов на одной веб-странице - это хорошая производительность?

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

это хорошо?

Имеет ли значение, если у вас нет выбора?

И еще один невысказанный вопрос:

Должен ли я беспокоиться о производительности этого фрагмента кода?

Должны ли вы?
Есть ли у вас проблемы с производительностью на данный момент?
Если нет - зачем вообще беспокоиться? Зачем беспокоиться об этом конкретном фрагменте, а не о каком-либо другом?
Если да - у вас есть в профиле ваш код в первую очередь.
А затем создайте свою стратегию оптимизации на основе результатов профилирования. Это может быть количество запросов, правильная индексация, кластеризация, обновление сервера.
Не вслепую стреляйте. Делай разумные шаги.

4 голосов
/ 11 августа 2010

Мне нравится держать мой под 8.

На полном серьезе, хотя, это довольно бессмысленно.Если гипотетически у вас была причина иметь 800 запросов на странице, то вы можете пойти дальше и сделать это.Вы, вероятно, обнаружите, что количество запросов на страницу будет зависеть от того, что вы делаете, хотя в обычных обстоятельствах я бы удивился, увидев более 50 (хотя в наши дни может быть трудно понять, скольковы делаете, если вы абстрагируете свои вызовы из БД).

Медленные запросы имеют значение больше

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

Я думаю, что выявление и исправление медленных запросов должно предшествовать выявлению и устранению ненужных запросов, поскольку это может потенциально сделать намного большеРазница.
Учтите даже, что три быстрых запроса могут быть значительно быстрее, чем один медленный запрос - количество запросов не обязательно относится к скорости.

У меня есть одна страница (что на самом деле является своего рода тестовым примером /диагностический инструмент, предназначенный для запуска только администратором), который имеет более 800 запросов, но запускается за считанные секунды.Я предполагаю, что это все очень простые запросы.

Попробуйте кэшировать

Существуют различные способы кэширования частей вашего приложения, которые действительно могут сократить количество запросов, которые выделать, не снижая функциональности.Такие библиотеки, как memcached , в наши дни упрощают эту задачу, но при этом работают очень быстро.Это также может помочь повысить производительность намного больше, чем уменьшить количество запросов.

Если запросы действительно не нужны и производительность действительно имеет значение, то удалите / объедините их

Просто сначала подумайте о поиске медленных запросов и их оптимизации или кэшировании их результатов.

4 голосов
/ 11 августа 2010

Измерь это.

Для конкретного случая, описанного выше, я бы по возможности объединился в объединение.

Как правило, несколько запросов на запрос вполне нормально.

Многие сайты имеют десятки запросов на запрос, и они довольно производительны.

Используйте нагрузочный тестер, такой как Apache bench.(Если у вас установлен Apache, введите ab, чтобы увидеть параметры)

1 голос
/ 27 апреля 2012

У меня просто была такая же проблема.

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

Решение состоит в том, чтобы поместить запросы в массив и использовать правильные циклы foreach для отображения одного и того же только с двумя запросами. Я нашел Этот сайт , который действительно ясно об этой теме.

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