|
|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Victor Sudakov 2:5020/400 04 Jan 2003 17:48:10 To : Serge V Panchenko Subject : Re: Учет тpаффика -------------------------------------------------------------------------------- Serge V.Panchenko wrote: > VS> эквивалентный SQL запрос будет > VS> select dstIP, sum(octets) from table group by dstIP; > VS> Я мерял на файле размером 866M, 17750277 строк, PostgreSQL версии > VS> 7.2.3 таблица создавалась с нуля путем "copy from file", > VS> потом индексировалась по полю dstip. Hо наличие или отсутствие > VS> индекса, как оказалось, на скорость практически не влияет. > Конечно же, не влияет. Куска where-то нету, поэтому всё равно нужно > сканировать _всю_ таблицу. Вот, если бы, ты создал составной индекс по dstIP и > octets, то Я уже говорил, что awk идеально подходит для задачи учета трафика в таком понимании: пройти по логу однократно и при этом выписать счета сразу всем клиентам. Для большинства случаев этого достаточно. Хотя и при наличии where результат awk не сильно отличается от результата того же постгреса в ту или иную сторону. [sudakov@work ~] time psql -f 1.sql test pgsql Password: psql:1.sql:1: NOTICE: QUERY PLAN: Aggregate (cost=8464.36..8464.36 rows=1 width=4) (actual time=39320.17..39320.1 8 rows=1 loops=1) -> Index Scan using dstip on netflow (cost=0.00..8458.11 rows=2500 width=4) (actual time=45.24..35362.47 rows=151451 loops=1) Total runtime: 39351.73 msec EXPLAIN 0.035u 0.035s 0:41.65 0.1% 144+192k 7+0io 10pf+0w > ^^^^^^^^ [sudakov@work ~] time ./1.awk flow.small.txt Total= 0.0993829 24.619u 5.211s 0:30.23 98.6% 175+272k 182+0io 1pf+0w > ^^^^^^^^ [sudakov@work ~] Запросы были соответственно awk '($2 == "213\.59\.238\.11\/32" ) { total+=$6 } END { print "Total=", total/1024^3 }' explain analyze select sum(octets)/1024^2 from netflow where dstip = '213.59.238 .11'; на таблице из 500000 записей. > В общем, SQL-сервером тоже надо _уметь_ пользоваться. Разумеется, чем сложнее запрос, тем меньше выигрыша может дать такой простой инструмент, как awk. Этим инструментом тоже надо уметь пользоваться и применять там, где он способен дать наибольший выигрыш. > К чему это я? А к тому, что если ты решишь перейти от plain text файлов > статистики к хранению данных на SQL-сервере, то не нужно из каждого лога > создавать отдельную таблицу и потом сравнивать производительность. Hужно > грамотно спроектировать базу данных, построить её на грамотном сервере и уж > тогда... Перечисленное тобой может не окупиться. > Короче, как всегда: ВСЁ ЗАВИСИТ ОТ ЗАДАЧИ. Hикто и не утверждал обратного. -- Victor Sudakov, VAS4-RIPE, VAS47-RIPN 2:5005/149@fidonet http://vas.tomsk.ru/ --- ifmail v.2.15dev5 * Origin: Golden Bough (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/6640a387760c.html, оценка из 5, голосов 10
|