[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: MySQL 4 обращения к БД это много!?
горе-прогер
Приветствую всех!
У меня на сайте имеется раздел для личной переписки. Так вот, когда пользователь отправляет новое сообщение то скрипт 4 раза обращается к БД. Это много или нормально, сколько запросов в идеале должно быть для таких целей? Ниже опишу то как это у меня работает.

Первое обращение в БД - проверка что пользователь добавлен в контакты.
Второе обращение - запись нового сообщения в БД
Третье - помечаю сообщение как отвеченное (И не только, на самом деле, с этим же запросом сохраняется последний ID, чтобы потом знать с какого сообщения динамически подгружать другие)
Четвертное - Помечаем сообщение как непрочитанное для контакта которому его отправили (Сделано так для будущего группового чата, чтобы подсчет непрочитанных сообщений велся у каждого отдельно)

Какой совет вы можете дать по этому поводу?
Это вообще нормально столько запросов за раз?

Со структурой таблиц все в порядке, ключи, индексы и т.д. все настроена как подобает. И речь не идет о мультизапросах, меня больше волнует именно запросы которые будет осуществлять MySQL для записи, обновлений и выборки.
AllesKlar
Цитата (горе-прогер @ 12.11.2015 - 13:53)
Третье - помечаю сообщение как отвеченное (И не только, на самом деле, с этим же запросом сохраняется последний ID, чтобы потом знать с какого сообщения динамически подгружать другие)
Четвертное - Помечаем сообщение как непрочитанное для контакта которому его отправили (Сделано так для будущего группового чата, чтобы подсчет непрочитанных сообщений велся у каждого отдельно)

Это одна и та же запись в таблице?
Если да, то можно одним UPDATE обойтись

_____________
[продано копирайтерам]
Zzepish
Чтоб не постить лишние темы: выборка из 4-х таблиц в 4 запросах - это норма?
GET
горе-прогер

Если они логические не связаны, то чего переживать? У меня есть страницы где 10 раз обращается к БД.

Другой разговор, что бывает можно за один раз все вытащить через JOIN, но только там где это нужно. smile.gif

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
GET
Цитата
Чтоб не постить лишние темы: выборка из 4-х таблиц в 4 запросах - это норма?


Ну вот не могу понять вопрос. Зависит-же от логики скрипта, где-то норма где-то нет. smile.gif Конечно надо стараться сокращать число запросов к БД, но есть места где не обойтись без отдельных запросов и даже есть места где можно сделать JOIN, но не нужно из-за высоких затрат на объединение, скажем.

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
inpost
горе-прогер
Это очень мало. wink.gif

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Zzepish
GET
просто нужно сделать выборку, для занесения данных а массив)
4 независимые таблицы. JOIN'ом нечего соединять)
горе-прогер
Цитата (AllesKlar @ 12.11.2015 - 16:11)
Это одна и та же запись в таблице?
Если да, то можно одним UPDATE обойтись

Нет, разные. Логика скрипта не позволяет осуществить это в одной таблице!
горе-прогер
Цитата (GET @ 12.11.2015 - 16:13)
горе-прогер

Если они логические не связаны, то чего переживать? У меня есть страницы где 10 раз обращается к БД.

Другой разговор, что бывает можно за один раз все вытащить через JOIN, но только там где это нужно. smile.gif

Все таблицы, по сути, не связаны между собой. Дело в том, что переписка может быть активной, а переписываться могут сразу 1000 и больше пользователей, вот и думаю, нормально ли это для приложения или нет
горе-прогер
Цитата (inpost @ 12.11.2015 - 16:21)
горе-прогер
Это очень мало. wink.gif

Ну не знаю) Я привередлив к производительности. Тем более речь идет о скрипте к которому много пользователей и часто будут обращаться. Здесь в корне все меняется
GET
Цитата
Ну не знаю) Я привередлив к производительности. Тем более речь идет о скрипте к которому много пользователей и часто будут обращаться. Здесь в корне все меняется


Цитата
Первое обращение в БД - проверка что пользователь добавлен в контакты.
Второе обращение - запись нового сообщения в БД
Третье - помечаю сообщение как отвеченное (И не только, на самом деле, с этим же запросом сохраняется последний ID, чтобы потом знать с какого сообщения динамически подгружать другие)
Четвертное - Помечаем сообщение как непрочитанное для контакта которому его отправили (Сделано так для будущего группового чата, чтобы подсчет непрочитанных сообщений велся у каждого отдельно)


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

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
горе-прогер
Цитата (GET @ 12.11.2015 - 16:39)
ну можно попробывать спланировать по другому архитектуру БД, у меня например всё в одной таблице, +подключается еще одна в случае если нужно плюсануть личку, но у меня и инициация переписки не совсем обычная, из-за особенностей самого приложения.

Я как только не ломал голову над архитектурой БД.
Не хочется проектировать таблицы так, чтобы скрипт часто обращался к таблице с сообщениями т.к. эта самая тяжелая таблица будет. Да и в любом случае, чтобы все работало без каких либо ограничений (без урезания функционала) то по другому я ничего не могу придумать, на самом деле долго голову ломал на этим. И поэтому меня сильно заволновал вопрос, нормально ли столько обращений, если принимать во внимание тот факт, что сайт будет посещаемым, скажем от 10 тыс и больше
sergeiss
Цитата (горе-прогер @ 12.11.2015 - 15:53)
Какой совет вы можете дать по этому поводу?
Это вообще нормально столько запросов за раз?

"Не трожь работающую систему!" (с) один из "Законом Мерфи" wink.gif

А вообще, если хочется пооптимизировать, то внимательно почитай про триггеры. Для некоторых позиций из перечисленных они тебе очень даже пригодятся. В частности, для пп. 3 и 4. Они, т.е. триггеры, позволят тебе не делать некоторые запросы, т.к. они будут сделаны автоматически (при выполнении запросов из пп.1 и 2).

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
горе-прогер
Цитата (sergeiss @ 12.11.2015 - 16:47)
А вообще, если хочется пооптимизировать, то внимательно почитай про триггеры. Для некоторых позиций из перечисленных они тебе очень даже пригодятся. В частности, для пп. 3 и 4. Они, т.е. триггеры, позволят тебе не делать некоторые запросы, т.к. они будут сделаны автоматически (при выполнении запросов из пп.1 и 2).

Да, я слышал, даже как-то давненько экспериментировал с ними, вот только давно было.
Триггреы ведь MYISAM поддерживают? Я уже и не помню
GET
Цитата
Я уже и не помню


Ну не беда smile.gif
user posted image


_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.