singlepost

PHP запросы к БД, кол-во, скорость << На главную или назад  

Вот пишут некоторые что, к БД должно быть как можно меньше запросов. Почему?
Вот я решил неболшой ассоциативный массив хранить в файле [serialised]. Лучше ли это чем в БД?
В phpBB около 10 запросов делается просто при заходе в тему, ветку, это много, но ведь ниче страшного?

23 ответов в теме “PHP запросы к БД, кол-во, скорость”

  1. 23
    Микхаил Владимирович ответил:

    ладно передаю брахды правления топиком леониду, т.к. он более разбирается в вопросе)

  2. 22
    Леонид Максимов ответил:

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

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

  3. 21
    Микхаил Владимирович ответил:

    ну я вообще имел ввиду то, что можно посмотреть скока идёт запрос, и посмотреть что да как… можно ещё пустить в неск потоков…

  4. 20
    Леонид Максимов ответил:

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

  5. 19
    Микхаил Владимирович ответил:

    Зайди в phpmyadmin и там можно спокойно увидеть, сколько времени уходит на запрос в срднен это цифра 10^-5 сек, вот и думай)

  6. 18
    Леонид Максимов ответил:

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

  7. 17
    Алексей Макаров ответил:

    Ну я только хотел знать как надежней будет. Чем грозит большое кол-во запросов при открытии одной странички?
    Например на форумах таких запросов много, но ведь они все равно работают при большой нагрузке. При 5, 10, 20 запросов, сколько надо посетителей в минуту чтобы движок сайта "загнулся"?

    Вот тут написано: mysqlconsulting. ru/articles/3/query-optimizing/
    Правило очень простое – чем меньше запросов, тем лучше (хотя из этого, как и из любого правила, есть исключения).

  8. 16
    Микхаил Владимирович ответил:

    Где автор?) мы ушли от темы…

  9. 15
    Леонид Максимов ответил:

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

  10. 14
    Микхаил Владимирович ответил:

    я про то и говорю, по вечерам до 80 доходит…)

  11. 13
    Микхаил Владимирович ответил:

    это по данным открытых сессий, она открывается на 15 минут…

  12. 12
    Леонид Максимов ответил:

    имеется в виду одновременных посетителей.

  13. 11
    Леонид Максимов ответил:

    а посетителей сколько?

  14. 10
    Микхаил Владимирович ответил:

    около 15 интернет-магазинов и 10 просто, и 5 полностью статических, в среднем 80 выходит, по выходным иногда в раза три больше, но тут уже OutOfMemory выскакивала… слава богу решили)

  15. 9
    Микхаил Владимирович ответил:

    ну не знаю у меня vps, c mysql, под ним около 30 сайтов, с движком на java… не сказал бы, что он так сильно напрягается)

  16. 8
    Леонид Максимов ответил:

    надо полагать, что топикстартер рассчитывает на пару сотен человек. а это уже довольно немало.

  17. 7
    Микхаил Владимирович ответил:

    Понятное дело не всегда, но я имел ввиду, что он есть и сокращает время выполнения некоторых операций в разы.
    И вообще, я не думаю, что тут будут делать сайт, где будут сидеть хотябы 50 человек онлайн одновременно, а всё что меньше эти 10 запросов любой серверБД выдержит)

  18. 6
    Леонид Максимов ответил:

    не всегда в кеше обнаруживаются необходимые данные.

  19. 5
    Микхаил Владимирович ответил:

    PHP тоже знаете не быстрый. Тоже надо распарсить код и тд…
    PS.У БД полюбому есть кэш.

  20. 4
    Артём Шалхаков ответил:

    2 OP
    > Вот я решил неболшой ассоциативный массив хранить в файле [serialised]. > Лучше ли это чем в БД?

    Зависит от разных факторов.
    * паттерн доступа к файлу (несколько одновременных read/write, etc.)
    * гарантии ACID

  21. 3
    Владимир Муромский ответил:

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

  22. 2
    Жека Кирпичев ответил:

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

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

  23. 1
    Евгений Тихонов ответил:

    Если винчестер быстрый, то лучше. Но из БД достаётся только нужное, а файл читается весь вроде.

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.