![]() |
Модераторы: skyboy |
![]() ![]() ![]() |
|
kuzyara |
|
||||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 215 Регистрация: 13.11.2006 Репутация: нет Всего: 1 |
Собираю данные о скорости с netflow-коллектора домашней сетки в mysql perl-скриптом в таблицу flowdata2 вида:
Внутри данные о входящем-исходящем трафике для каждого ip 192.168.0.* поминутно. Задача: для отрисовки графика на веб-страничке выбрать записи в заданном интервале времени в килобайтах. Если для ip-адреса в какой-то момент времени нет данных о трафике - заполнить нулями. (Например если бы в таблице были бы только вышеприведённые записи, то нужно было бы добавить 2 строки за 29 минуту по адресам 3 и 1 с нулями в in_kbytes и out_kbytes). В php я реализую это так:
или с подсветкой sql:
Проблема: при обработке запроса за последние 2 часа мой старенький атлончик задумывается на пол минуты и больше, можно ли оптимизировать запрос? upd: Вот он, этот коварный тип гражданской наружности!
Это сообщение отредактировал(а) kuzyara - 4.12.2012, 15:38 --------------------
подпись |
||||||||
|
|||||||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
1) Покажите DDL на таблицу flowdata2. Больше всего интересует, что там с индексами...
2) Есть ли таблица существующих адресов? потому как догадываться, что некий адрес, отсутствующий в статистике, таки должен быть отображён - занятие неблагодарное... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
kuzyara |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 215 Регистрация: 13.11.2006 Репутация: нет Всего: 1 |
не, одни компы добавляются, другие уходят, постоянной таблицы нет, но их всего ~30 --------------------
подпись |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
Должна быть таблица. Типа (IP - Дата ввода - Дата отключения - прочее). 1) Выполните генерацию таблицы времён с использованием переменных, а не подзапросом; 2) Создайте таблицу IP-адресов, и используйте её вместо подзапроса (вернее, в подзапросе - надо же выбрать действующие); 3) Выполните декартово умножение этих таблиц, и привяжите к результату справа таблицу данных. Хотя я лично считаю, что не нужно получать в запросе нули для отсутствующих пар адрес-время. С этим прекрасно справится скриптовая часть непосредственно в момент формирования графика. Это сообщение отредактировал(а) Akina - 4.12.2012, 15:56 -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
tzirechnoy |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1173 Регистрация: 30.1.2009 Репутация: 2 Всего: 16 |
Второй запрос можно тупо выкинуть, нули для недостающих ip показывать чисто скриптом.
PS Впрочем, если хотите красиво и быстро -- добавляйте данные [такжэ] в rrdtool. Ну, в 30 баз (на каждый ip). |
|||
|
||||
kuzyara |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 215 Регистрация: 13.11.2006 Репутация: нет Всего: 1 |
в итоге сам разобрался, заменил ресурсоемкий запрос на
--------------------
подпись |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
Интересно, что ты будешь делать, если за какой-то кол времени не будет ни одного пакета ни от одной станции...
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Составление SQL-запросов | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |