где я должен делать вычисления, PHP или Mysql?

В настоящее время я много занимаюсь расчетами. Обычно я предпочитаю делать эти вычисления в PHP, а не в MySQL, хотя я знаю, что PHP не очень хорош в этом. Я думал, что MySQL может быть хуже. Но я обнаружил некоторую проблему с производительностью: некоторые страницы загружались так медленно, что им не хватало 30-секундного ограничения времени! Так что мне интересно, где лучше сделать расчеты, и какие принципы для этого? Предложения будут оценены.

8
задан mauris 12 April 2010 в 16:31
поделиться

8 ответов

Все, что можно сделать с помощью СУБД (GROUPING, SUMMING, AVG), где данные можно фильтровать на стороне сервера, следует делать в СУБД.

Если вычисления лучше подходят для PHP, тогда хорошо, сделайте это, но в противном случае не пытайтесь делать в PHP то, для чего была создана СУБД. ТЫ ПРОИГРАЕШЬ.

22
ответ дан 5 December 2019 в 06:22
поделиться

Я бы рекомендовал выполнять любые вычисления на уровне строк с помощью СУБД.

Вы не только выиграете от повышения производительности, но и сделаете ваши приложения более переносимыми, если вам нужно переключиться на другой язык сценариев, скажем, с PHP на Python, потому что вы уже отсортировали, отфильтровали и обработали данные с помощью ваша RBDMS.

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

3
ответ дан 5 December 2019 в 06:22
поделиться

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

Если у вас несколько серверов (например, веб-сервер и сервер БД), обратите внимание, что серверы БД намного дороже, чем веб-серверы, поэтому, если у вас большой трафик или очень загруженный сервер БД, не выполняйте операцию ' extras ', которые можно так же легко и эффективно обрабатывать на компьютере с веб-сервером, чтобы предотвратить замедление работы.

0
ответ дан 5 December 2019 в 06:22
поделиться

Используйте PHP, не заставляйте MySQL выполнять бесконечные вычисления. Если вы говорите о таких вещах, как сортировка, можно использовать MySQL для подобных вещей, SUM, AVG, но не переусердствуйте.

-2
ответ дан 5 December 2019 в 06:22
поделиться

я бы сказал делать вычисления на языках, которые были созданы для этого, например, на c++. Но если выбирать между mysql и php, то php лучше.

1
ответ дан 5 December 2019 в 06:22
поделиться

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

Если вы можете сделать что-то одинаково хорошо и в том, и в другом случае, и sql не слишком сложен в написании (и поддержке), то делайте это. Для простой математики sql обычно является хорошим вариантом. Для работы со строками, где строки в итоге будут иметь одинаковую длину или расти, лучше всего подойдет php.

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

1
ответ дан 5 December 2019 в 06:22
поделиться

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

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

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

1
ответ дан 5 December 2019 в 06:22
поделиться

cmptrgeekken прав, нам нужна дополнительная информация. НО, если вам нужно выполнять вычисления, относящиеся к запросам базы данных или выполнять операции с ними, сравнивать определенные поля из базы данных, заставлять базу данных делать это. Выполнение специальных запросов в SQL - это дешево (что касается времени, и он оптимизирован для этого), но и PHP, и MySQL являются серверной стороной, и на самом деле не имеет значения, где вы выполняете вычисления. Но, как я сказал ранее, если они являются операциями с информацией из базы данных, сделайте более сложный запрос SQL и используйте его.

0
ответ дан 5 December 2019 в 06:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: