Сколько MySQL-запросов я должен ограничить на странице? PHP / MySQL

Хорошо, поэтому я уверен, что многие из вас создали сумасшедшие страницы с интенсивной базой данных …

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

  • Содержание статьи и информация
  • ЕСЛИ автор является зарегистрированным пользователем, их информация
  • ОБНОВЛЕНИЕ счетчик просмотров статьи
  • получать комментарии к статье
  • получить информацию для авторов комментариев
  • если читатель статьи подписан, запрос информации о них
  • и т.д…

Я знаю, что в основном это будет очень быстро молниеносно, и я мог бы комбинировать некоторые; но я хотел убедиться, что это не ненормально?

Сколько довольно обычных и не тяжелых запросов вы бы ограничили на странице?

Solutions Collecting From Web of "Сколько MySQL-запросов я должен ограничить на странице? PHP / MySQL"

Сколько нужно, но не больше.

На самом деле: не беспокойтесь об оптимизации (прямо сейчас). Сначала создайте его, измерьте производительность во-вторых, а IFF – проблема производительности, а затем начните с оптимизации.

В противном случае вы рискуете потратить много времени на оптимизацию того, что не требует оптимизации.

У меня были страницы с 50 запросами на них без проблем. Быстрый запрос к таблице нечетких (т. Е. Подходит в основной памяти) может произойти за 1 миллисекунду или менее, поэтому вы можете сделать немало таких.

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

Большим узким местом, вероятно, будет количество времени, которое вы должны потратить на проект, поэтому сначала оптимизируйте его 🙂 Оптимизируйте код позже, если вам нужно. При этом, если вы собираетесь написать какой-либо код, связанный с этой проблемой, напишите что-то, что делает очевидным, сколько времени ваши запросы берут. Таким образом, вы, по крайней мере, узнаете, что у вас есть проблема.

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

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

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

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

Вы должны стараться делать как можно больше в SQL, но: не используйте материал для ввода какого-либо алгоритма на вашем языке клиента, если тот же алгоритм может быть реализован без проблем в самом SQL. Это не только уменьшит количество ваших запросов, но и поможет вам выбрать только нужные вам строки.

Ответ Писквора по-прежнему применяется в любом случае.

Например, WordPress может вывести до 30 запросов на страницу. Есть несколько вещей, которые вы можете использовать, чтобы остановить выключение MySQL – один из них – memchache, но прямо сейчас, и, как вы говорите, если будет просто, убедитесь, что все данные, которые вы вытаскиваете, правильно проиндексированы в MySQL и не волнуйтесь много о количестве запросов.

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

Как говорили другие, единого номера нет. По возможности используйте SQL для того, для чего он был создан и из которого извлекаются наборы данных.

Как правило, указание на то, что вы можете сделать что-то неправильно, – это когда у вас есть SQL внутри цикла.

По возможности Используйте объединения для извлечения данных, которые принадлежат друг другу, и отправки нескольких операторов.

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

Если вам нужны запросы, вы должны просто использовать их.

То, что я всегда пытаюсь сделать, состоит в том, чтобы они выполняли все одновременно в одном и том же месте, так что нет необходимости в разных частях (если они разделены …) на странице для подключения к базе данных. Я считаю, что более эффективно хранить все в переменных, чем каждая часть страницы подключается к базе данных.

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

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

Я думаю, что вы должны ограничивать себя как можно меньше запросов. Попробуйте объединить запросы с mutlitask и сэкономить время.

Преждевременная оптимизация – это проблема, о которой говорили ранее, но это то, где вы клонируете свой код, чтобы он работал быстро. Но люди воспринимают эту «максиму» слишком далеко.

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