Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / ПОМОГИТЕ !!!! / 5 сообщений из 5, страница 1 из 1
28.10.2004, 11:26
    #32758657
matriks1981
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ПОМОГИТЕ !!!!
есть 2 таблицы:
mysql> describe flowtraf;
+----------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+---------------+------+-----+---------+-------+
| doctets | varchar(40) | YES | MUL | 0 | |
| srcaddr | varchar(40) | YES | MUL | 0 | |
| dstaddr | varchar(40) | YES | MUL | 0 | |
| datetime | timestamp(14) | YES | | NULL | |
+----------+---------------+------+-----+---------+-------+

и
mysql> describe uaix;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| ip | varchar(15) | | MUL | | |
+-------+-------------+------+-----+---------+-------+

в таблице uaix содержатся ip адреса и подсети в формате
+---------------+
| ip |
+---------------+
| 192.117.224.0 |
| 192.117.225.0 |
| 192.117.226.0 |
| 192.117.227.0 |
| 193.0.228.% |
| 193.0.240.% |
| 193.108.112.% |
| 193.108.113.% |
| 193.108.114.% |
| 193.108.115.% |
+---------------+

всего
mysql> select count(*) from uaix;
+----------+
| count(*) |
+----------+
| 3980 |
+----------+

а в flowtraf:
mysql> select * from flowtraf limit 10;
+---------+---------------+---------------+----------------+
| doctets | srcaddr | dstaddr | datetime |
+---------+---------------+---------------+----------------+
| 84 | 10.10.1.254 | 10.5.59.3 | 20041027160944 |
| 84 | 10.10.1.254 | 10.2.35.30 | 20041027160944 |
| 84 | 10.5.59.3 | 10.10.1.254 | 20041027160944 |
| 84 | 10.2.35.30 | 10.10.1.254 | 20041027160944 |
| 543 | 192.168.0.36 | 193.219.194.8 | 20041027160944 |
| 84 | 195.26.19.9 | 195.26.18.201 | 20041027160944 |
| 545 | 192.168.0.208 | 62.149.0.140 | 20041027160944 |
| 84 | 195.26.18.201 | 195.26.19.9 | 20041027160944 |
| 323 | 66.230.226.27 | 195.26.18.201 | 20041027160944 |
| 323 | 66.230.226.27 | 195.26.18.201 | 20041027160944 |
+---------+---------------+---------------+----------------+

всего:
mysql> select count(*) from flowtraf;
+----------+
| count(*) |
+----------+
| 414750 |
+----------+

нужно выбрать записи из `flowtraf` которые удовлетворяют ip и маскам из `uaix`
пытаюсь сделать это так:

SELECT ft.`srcaddr`,ft.`dstaddr`,SUM(ft.`doctets`) as `kbyte` FROM `flowtraf` ft, `uaix` ua WHERE ft.`srcaddr` LIKE ua.`ip` || ft.`dstaddr` LIKE ua.`ip` GROUP BY ft.`srcaddr`,ft.`dstaddr`;

однако mysql уходит на 97% загрузки + о-о-очень долго обрабатывается запрос, по крайней мере я так и не дождался результата.
Помогите кто-то, спасите, а то погибаю.
Как быть, как правильно организовать структуру, индексы и запросы при таком количестве данных и требуемом результате???
...
Рейтинг: 0 / 0
28.10.2004, 12:50
    #32758939
max(id)
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ПОМОГИТЕ !!!!
О каких индексах может быть речь, у тебя же все через LIKE соединяется. Он индексы не будет использовать если маска поиска не константна начинающаяся с подстроки отличной от "%". У тебя же маска столбец, так что об индексах забудь покрайней мере при такой структуре данных.
...
Рейтинг: 0 / 0
28.10.2004, 13:01
    #32758981
max(id)
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ПОМОГИТЕ !!!!
Могу предложить тебе разбить каждое из вышеуказанных полей для ip на четыре целочисленных поля. построить по ним индексы и соединять таблицы по ним. Причем у последних 2х-3х полей в ip-адресе разрешить значение null соответствуещее * в маске. Подробнее сейчас не опишу - занят.
...
Рейтинг: 0 / 0
28.10.2004, 13:50
    #32759170
matriks1981
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ПОМОГИТЕ !!!!
ты предлагаешь разбить ip только в таблице `uaix` или в обеих? дело в том, что в `flowtraf` ip разбить не получится, т.к. данные в нее экспортируются с помощью flow-export(утилиты netflow).
...
Рейтинг: 0 / 0
29.10.2004, 01:47
    #32760272
max(id)
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ПОМОГИТЕ !!!!
Я предлягаю разбить ip в каждой из таблиц. К сожалению не сталкивался с flow-export, но могу предложить заполнять с его помощью некую промежуточную таблицу, а уже на основании этой таблицы периодически (не думаю что такой 'тяжелый' запрос требуется часто) заполнять flowtraf.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / ПОМОГИТЕ !!!! / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]