Jump to content
  • 0

кого заставить считать: PHP или MySQL


az
 Share

Question

hi all

У меня опыта просто никакого пока. Поэтому может спрашиваю очевидные вещи.

Итак: повозившись с недельку появилось некое подобие сайта (apache+php+mysql).

Вот смотрю я на кусок кода php (этот код бер?т поле из таблицы, множит его на 2 и выводит результат) и возникает у меня в голове мысль.

А не вернее ли заставить считать саму БД? ведь и mysql прекрасно знает таблицу умножения на 2 :-).

Но, как вы понимаете, вопрос шире чем мой дохлый пример.

Чем руководствоваться принимая решение о переносе вычислений из БД в PHP и обратно.

Есть ли какие-то рекомендации?

Есть ли мысли (а лучше опыт) относительно производительности того или иного варианта.

Одним словом: кто где считает? в php или mysql? и почему?

Link to comment
Share on other sites

15 answers to this question

Recommended Posts

  • 0

Все что я отвечу, это сугубо мое мнение ИМХО. Можете не брать в счет это как аксиому, но все-же:

Я считаю что MySQL это всего навсего база данных. Конечно сервер MySQL позволяет выполнять некие математические операции, но лично я, использовал бы MySQL только для чтения и хранения информации. Лишь только малую часть возможностей MySQL я бы использовал в SQL запросах, только в том случае если по другому запрос не выполнить (зависит от поставленной задачи).

Повторюсь: - Это лично мое мнение.

Link to comment
Share on other sites

  • 0

Ну вот. Снова никакой ясности. ;)

Получил 2 противоположных ответа.

Видимо, вопрос, действительно и разряда "на вкус и цвет все фломастеры разные".

Или вс? же есть аргументированные причины использования того либо другого подхода?

Мои рассуждения таковы:

Если есть php код производящий вычисления с одним из полей из БД, то получается что этот код будет выполняться для КАЖДОГО запроса. Что, видимо, может отрицатенльно отразиться на нагрузке.

Если же производить вычисление в БД, то php просто бер?т результат. Т.е. вроде как меньшая нагрузка получается. Ибо для всех текущих соединений ид?т не обсч?т в php для каждого соединения, а обращение к БД и, как я понимаю, БД в данном случае просто хранит результат, а не производит расч?т для каждого отдельно взятого соединения. Т.е. получается, что результат отда?тся "оптом". Что, в свою очередь, наверное должно положительно сказаться на общей нагрузке.

Где я ошибаюсь? Что есть неточного в моих рассуждениях?

Link to comment
Share on other sites

  • 0
Что есть неточного в моих рассуждениях?

Практически вс?. Вы вообще что-то непонятное говорите.

Если вы ищите вариант с наибольшей скоростью исполнения, то вы могли бы найти его за 5 минут с помощью элементарного эксперимента.

Уверен, что в данном случае это будет вычисление на стороне базы.

Link to comment
Share on other sites

  • 0
Что есть неточного в моих рассуждениях?

Практически вс?. Вы вообще что-то непонятное говорите.

Как же можно ответить, что "практически вс?", если Вы меня не поняли (по причине того, что я "что-то непонятное говорю"). :-)

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

Если вы ищите вариант с наибольшей скоростью исполнения, то вы могли бы найти его за 5 минут с помощью элементарного эксперимента.

О! А не подсобите советом, как такой эксперимент практически поставить?

Уверен, что в данном случае это будет вычисление на стороне базы.

Откуда уверенность? Из каких соображений?

Link to comment
Share on other sites

  • 0
Откуда уверенность? Из каких соображений?

2az, из банальной логики ([upd] пример которой я вс?-таки ст?р).

О! А не подсобите советом, как такой эксперимент практически поставить?

Объяснение банальной логики ст?р именно в связи с этим вопросом)

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

Link to comment
Share on other sites

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

Да-да-да!!! Все гениальное просто. Если вопрос был только в скорости выполнения, но не в удобстве и других целях, то вот вам скриптик таймера в помощь. Измеряйте!!!;)

<?php
$mtime = explode(" ", microtime());
$start_time = $mtime[1] + $mtime[0];

##################################
#
# Здесь код вашего скрипта
#
##################################

$mtime = explode(" ", microtime());
print round((($mtime[1] + $mtime[0]) - $start_time), 4);
?>

Link to comment
Share on other sites

  • 0
Откуда уверенность? Из каких соображений?

2az, из банальной логики ([upd] пример которой я вс?-таки ст?р).

О! А не подсобите советом, как такой эксперимент практически поставить?

Объяснение банальной логики ст?р именно в связи с этим вопросом)

Бррр... ничего не понял. Как-то не поспел за мыслью....

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

Да нет. Догадаться то можно, что нужно просто замерить. Просто есть всякие "но". Вот они:

- есть ли резон замерять заведомо известные результаты?

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

В любом случае всем огромное спасибо за ответы!

По крайней мере я понимаю, что кто-то делает ставку на php а кто-то на mysql. При этом к сожалению _никто_ не желает тратить время хоть на сильно поверхностную аргументацию ;)

Link to comment
Share on other sites

  • 0
По крайней мере я понимаю, что кто-то делает ставку на php а кто-то на mysql.

Все вменяемые программисты делают ставку на то, что более подходит к соответствующей ситуации.

При этом к сожалению _никто_ не желает тратить время хоть на сильно поверхностную аргументацию

Аргументация была дана ? mysql будет в данном случае быстрее.

Потому что это е? задача ? обработка данных. Потому что цикл и операции сложения на интерпертируемом и слаботипизированном языке будут медленнее. Потому что потому...

Для измерение скорости есть профайлеры.

Link to comment
Share on other sites

  • 0

vasa_c - Почитал я про профайлеры и сразу возник вопросик. А есть профайлер для версии PHP ниже пятой. Ну для PHP 3 или PHP 4 есть такие профайлеры?

Вопрос в корне: - ЕСТЬ или НЕТ? (апгрейдиться не предлагать, потому как суть в другом.)

Link to comment
Share on other sites

  • 0

vasa_c - Супер!!! Заработала!!!;)

PHP xDebud - Рулит аднака!!!

Спасибо за информацию, не плохое пополнение копилки знаний. Вполне может пригодиться.

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

? Кладем полученную dll в папку с остальными библиотеками php (надеюсь, вы в курсе, где она у вас).

обращая внимеание на текст в скобочках. Не нужно "надеяться", твою статью может читать и "чайник", но при этом он может не знать где находится папка с библиотеками php, но прекрасно представлять о чем идет речь.

Так вот гораздо корректнее было бы просто указать эту дирректорию на примере (usr/local/php/extensions/). Пусть это выглядит несколько банально, но зато конкретно и не оставляет дополнительных вопросов.

Ну и так в целом еще некотороые места тоже требуют небольшой коррекции, просто создается впечатление что ты не статью пишешь, а так сказать "ЖЖОШЬ" или прикалываешься над чайниками.

А в целом очень поучительно. Еще раз спасибо! Разобрался я с этим ИксДебагером.

Link to comment
Share on other sites

  • 0
Vladiger, человек пишет ровно так, как ему хочется. Правил приличия он не нарушал, да и подобную полемику можно вести и в привате.

Я поблагодарил человека и сделал небольшие замечания. Это плохо?

То есть вы считаете что людям не стоит делать замечания, так как каждый должен писать

ровно так, как ему хочется

Ну если вы сами определили рамки приличия и того как хочется писать, ответьте мне пожалуйста: - А я имею это право? (писать так как хочется).

Link to comment
Share on other sites

  • 0
Так вот гораздо корректнее было бы просто указать эту дирректорию на примере (usr/local/php/extensions/)

А у меня лежит не там ;) И относится это уже скорее к установке PHP. Но спасибо за критику.

Впрочем, действительно, не будем об этом в чужой теме.

Хотя, автор уже куда-то исчез и не рассказал, какой вариант выбрал и почему :)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy