
Natali
09.10.2018
19:36:40
Хм

Al
09.10.2018
19:54:11

Natali
09.10.2018
20:19:05
Хм

VV
10.10.2018
05:03:58

Google

Al
10.10.2018
05:10:01

Terminator
10.10.2018
05:17:46
@dedipur будет жить. Поприветствуем!

VV
10.10.2018
05:55:54

Михаил Власов
10.10.2018
05:57:06
В мск жепа в электричке и метро. Как сардины в банке.

Sergey
10.10.2018
07:05:30
Если сдвинуться от часов пик очень даже неплохо. А в МЦК так всегда хорошо

Ilia
10.10.2018
07:11:18

Natali
10.10.2018
07:11:41
Отлично)
А там же на какой-тр одной половине только быть можно
Как можно жить, когда тебя не везде пускают? Интересно же

Frank
10.10.2018
07:12:25

Natali
10.10.2018
07:12:45

VV
10.10.2018
07:13:20
Можно быть на любой стороне, но с турецкой стороной некоторые нюансы)

Terminator
10.10.2018
07:13:43
@crestoff будет жить. Поприветствуем!

Михаил Власов
10.10.2018
07:13:49

Google

VV
10.10.2018
07:14:21
из дома в тёплых странах - особенно актуально осенью, зимой и весной)

Frank
10.10.2018
07:14:22

Natali
10.10.2018
07:16:40

Саша
10.10.2018
07:16:53
Дома работать уныло и скучно

Natali
10.10.2018
07:17:15
Я интррверт мне ваще норм

Frank
10.10.2018
07:17:58

Natali
10.10.2018
07:18:04

Саша
10.10.2018
07:19:53
Без возможности обсудить что-нибудь интересное с более опытным товарищем? Ну нет

Ilia
10.10.2018
07:21:40

Crestoff
10.10.2018
07:36:40
Добрый день, уважаемые специалисты!
Есть такая таблица статистики посещений (InnoDB в MySQL 7):
с такими индексами
за сутки в ней набирается до 1м записей, вот таких

Google

Crestoff
10.10.2018
07:36:40
Для вывода статистики делаем подобные запросы, только с разной группировкой (по часам, дате, IP, referer и тд)
SELECT SUM(visit_amount) AS raws,
COUNT(visit_amount) AS uniques,
SUM(click_amount) AS clicks,
ROUND(SUM(click_amount)/SUM(visit_amount)*100) AS prod,
SUM(is_bot) AS bots,
SUM(is_proxy) AS proxies,
SUM(is_no_cookie) AS nocookies,
FROM_UNIXTIME(TIME, "%H") AS hour
FROM `log_visit`
WHERE `time` BETWEEN 1539129600 AND 1539215999
GROUP BY `time`
ORDER BY `hour` DESC,
`raws` DESCполучаем подобные результаты:
в общем то всё прекрасно если бы не время выполнения запросов к примеру за прошлые сутки около 2х секунд,
или если брать группировку по датам за неделю - это около 30 секунд.
результат профилирования
Больше программист чем специалист по DB, поэтому вопрос тривиальный -
"Как можно оптимизировать таблицу/запрос/итд" чтобы запросы выполнялись бысрее:) ?
интерфейс, чтобы было понятно что требуется в статсе


Ilia
10.10.2018
07:42:35
Для вывода статистики делаем подобные запросы, только с разной группировкой (по часам, дате, IP, referer и тд)
SELECT SUM(visit_amount) AS raws,
COUNT(visit_amount) AS uniques,
SUM(click_amount) AS clicks,
ROUND(SUM(click_amount)/SUM(visit_amount)*100) AS prod,
SUM(is_bot) AS bots,
SUM(is_proxy) AS proxies,
SUM(is_no_cookie) AS nocookies,
FROM_UNIXTIME(TIME, "%H") AS hour
FROM `log_visit`
WHERE `time` BETWEEN 1539129600 AND 1539215999
GROUP BY `time`
ORDER BY `hour` DESC,
`raws` DESCполучаем подобные результаты:
Ты хочешь ПО ЧАСУ времени сгруппировать ?
Или по времени?
Боюсь, тут ошибка в запросе, надо было
GROUP BY FROM_UNIXTIME(TIME, "%H")

Crestoff
10.10.2018
07:45:33
конечно же я делал такую группировку время выполнения запроса увеличивает в 2.5-3 раза

Виктор
10.10.2018
07:49:31
Почему агрегаты не собирать хоть в ту же вертику, зачем насиловать mysql?

Anton
10.10.2018
07:50:10
Я об этом написал в другой группе. Он везде одно и то же понакидал)

Crestoff
10.10.2018
07:51:33

Anton
10.10.2018
07:52:35
1) сожми колонки
2) разбей на партиции
А вообще задача конечно для колоночной бд
3) закажи железо помощнее ))))
NVME, буфер пул на весь размер бд, и номр даже так будет?

Виктор
10.10.2018
07:54:02
партиции не спасут, срез данных большой, все равно seq scan какой-то будет

Crestoff
10.10.2018
07:54:16
делал партиции по датам
не помогло

Anton
10.10.2018
07:54:35
есть предположение, что плохо делал

Google

Anton
10.10.2018
07:54:52
сколько дней в таблице хранится?

Crestoff
10.10.2018
07:55:02
30 дней

Ilia
10.10.2018
07:55:32

Crestoff
10.10.2018
07:55:55
это точно)

Ilia
10.10.2018
07:55:59

Crestoff
10.10.2018
07:56:29
мильён он быстро делает
а за недельку, за месяц уже плохо ему
как-то я уже лояльно настроен на перенос данных в вертику, адаптер для yii2 даже есть (проект на yii2).
конечно придётся поебаться, чувствую...

Виктор
10.10.2018
07:58:33
агрегаты и в мускуле можно хранить

Ilia
10.10.2018
07:58:53

Anton
10.10.2018
07:59:14
агрегаты и в мускуле можно хранить
да, но там у него декартово произведение получается чуть ли не во всю таблицу) 250 стран умножить на n браузеров умножить на m устройств...

Ilia
10.10.2018
07:59:47

Anton
10.10.2018
08:00:22

Crestoff
10.10.2018
08:00:29

Ilia
10.10.2018
08:00:33

Crestoff
10.10.2018
08:00:58
не решена проблема с временем
выполнения

Ilia
10.10.2018
08:01:49

Google

Crestoff
10.10.2018
08:02:03
ща

Ilia
10.10.2018
08:02:25

Crestoff
10.10.2018
08:02:26
примерно 1м в сутки

Ilia
10.10.2018
08:02:35
примерно 1м в сутки
Ye 30 млн это не шибко много, но уже да, многовато чтобы просто так вот на шару агрегировать...

Crestoff
10.10.2018
08:03:48

Ilia
10.10.2018
08:04:27

Crestoff
10.10.2018
08:04:50
как раз этот промежуток не так долго выполняется, т.к. это 1 день.
но когда берём неделю и тд, это уже долго

Ilia
10.10.2018
08:05:33
Короче.

Crestoff
10.10.2018
08:06:14
случаи разные - количество обрабатываемых данных увеличивается.
короче чо оптимальнее click хаус или вертика?
я понял уже что проще перенести таблицу

Natali
10.10.2018
08:14:57