Вот пишут некоторые что, к БД должно быть как можно меньше запросов. Почему?
Вот я решил неболшой ассоциативный массив хранить в файле [serialised]. Лучше ли это чем в БД?
В phpBB около 10 запросов делается просто при заходе в тему, ветку, это много, но ведь ниче страшного?
24 марта 2009 в 22:03
ладно передаю брахды правления топиком леониду, т.к. он более разбирается в вопросе)
24 марта 2009 в 0:02
сколько он идет – надо не смотреть, а считать при написании. смотреть что да как – это для сложных запросов, которые выполняются неоправданно долго. бывает, достаточно добавить какое-нибудь бессмысленное условие для того, чтобы отбить у оптимизатора желание оптимизировать там, где не следует.
а вот несколько потоков имеют смысл только в случаях, когда запрос выполняется долго не потому, что криво написан. и то, только на больших системах с быстрыми дисками и большим объемом памяти.
24 марта 2009 в 0:01
ну я вообще имел ввиду то, что можно посмотреть скока идёт запрос, и посмотреть что да как… можно ещё пустить в неск потоков…
24 марта 2009 в 0:00
это на выборку одной записи по ключу? а если добавить несколько нетривиальных джойнов? а если в таблицах сотни тысяч и миллионы записей?
23 марта 2009 в 22:05
Зайди в phpmyadmin и там можно спокойно увидеть, сколько времени уходит на запрос в срднен это цифра 10^-5 сек, вот и думай)
23 марта 2009 в 18:01
исключения – это исключения (например, когда какой-нибудь особо хитрый запрос выполняется дольше, чем два попроще). по умолчанию – чем меньше, тем лучше.
23 марта 2009 в 15:01
Ну я только хотел знать как надежней будет. Чем грозит большое кол-во запросов при открытии одной странички?
Например на форумах таких запросов много, но ведь они все равно работают при большой нагрузке. При 5, 10, 20 запросов, сколько надо посетителей в минуту чтобы движок сайта "загнулся"?
Вот тут написано: mysqlconsulting. ru/articles/3/query-optimizing/
Правило очень простое – чем меньше запросов, тем лучше (хотя из этого, как и из любого правила, есть исключения).
22 марта 2009 в 20:02
Где автор?) мы ушли от темы…
22 марта 2009 в 20:01
неплохо; но это не тот показатель, который приведет к упору в ограниченность производительности базы данных в связи с количеством запросов при открытии одной странички.
22 марта 2009 в 17:00
я про то и говорю, по вечерам до 80 доходит…)
22 марта 2009 в 17:00
это по данным открытых сессий, она открывается на 15 минут…
22 марта 2009 в 14:04
имеется в виду одновременных посетителей.
22 марта 2009 в 12:02
а посетителей сколько?
22 марта 2009 в 12:02
около 15 интернет-магазинов и 10 просто, и 5 полностью статических, в среднем 80 выходит, по выходным иногда в раза три больше, но тут уже OutOfMemory выскакивала… слава богу решили)
22 марта 2009 в 12:00
ну не знаю у меня vps, c mysql, под ним около 30 сайтов, с движком на java… не сказал бы, что он так сильно напрягается)
22 марта 2009 в 11:03
надо полагать, что топикстартер рассчитывает на пару сотен человек. а это уже довольно немало.
22 марта 2009 в 9:04
Понятное дело не всегда, но я имел ввиду, что он есть и сокращает время выполнения некоторых операций в разы.
И вообще, я не думаю, что тут будут делать сайт, где будут сидеть хотябы 50 человек онлайн одновременно, а всё что меньше эти 10 запросов любой серверБД выдержит)
22 марта 2009 в 2:00
не всегда в кеше обнаруживаются необходимые данные.
21 марта 2009 в 22:05
PHP тоже знаете не быстрый. Тоже надо распарсить код и тд…
PS.У БД полюбому есть кэш.
21 марта 2009 в 20:03
2 OP
> Вот я решил неболшой ассоциативный массив хранить в файле [serialised]. > Лучше ли это чем в БД?
Зависит от разных факторов.
* паттерн доступа к файлу (несколько одновременных read/write, etc.)
* гарантии ACID
21 марта 2009 в 17:03
файл читается ровно столько, сколько его читает программа. А по теме – если данные в файле идут подряд, то вряд ли они будут читаться дольше, чем из БД, в то время как если у тебя есть куча данных, из которых в каждый момент нужна только часть, то их лучше хранить в БД
21 марта 2009 в 17:02
Хранить – на здоровье.
Но каждый запрос – это
– установление соединения с БД
– отсылка запроса
– БД парсит запрос
– БД составляет план запроса
– БД читает с диска нужные данные
– БД составляет из них ответ
– БД отсылает тебе ответ
– прием ответа от БД
– закрытие соединения
Каждый из этих шагов – небыстрый. Быстрее, чем за несколько десятков миллисекунд, запрос ты не сделаешь, даже если он исключительно простой. (это примерно как сложить пару сотен тысяч чисел)
21 марта 2009 в 16:03
Если винчестер быстрый, то лучше. Но из БД достаётся только нужное, а файл читается весь вроде.