@dba_ru

Страница 246 из 718
Alexander
13.09.2017
21:38:43
либо ещё один вариант - постоянно выдёргивать завершённые сессии и складывать куда-то ещё, в nosql...

Al
13.09.2017
21:39:04
А смысл

Алексей
14.09.2017
03:07:40
бд проектировали авторы freeradius, естественно, они на такие запросы не рассчитывали
поэтому я и предлагаю - сделать свою табличку, под свои задачи. И помещать туда то, что нужно вам. А не авторам freeradius

Al
14.09.2017
04:09:44
поэтому я и предлагаю - сделать свою табличку, под свои задачи. И помещать туда то, что нужно вам. А не авторам freeradius
Для этого все равно придется теребить табличку авторов. И какой тогда смысл?

Google
Ilia
14.09.2017
04:38:40
есть запрос: explain SELECT username, max(acctstarttime) AS last_session_start , IFNULL(MAX(acctstoptime), 0) AS last_session_end, SUM(acctinputoctets+acctoutputoctets) AS data_usage FROM radacct GROUP BY username ORDER BY max(acctstoptime) ASC;
Запрос обрабатывает все записи из таблицы, нет повода для оптимизации вообще. Так что страдай

Alexander
14.09.2017
04:52:35
придётся ... всем спасибо

Denis
14.09.2017
04:55:01
придётся ... всем спасибо
а у вас username идет именно строкой? если бы там был userid, есть шанс что группировка шла бы быстрее

Alexander
14.09.2017
04:55:27
строкой ...

придётся завершённые сессии вытаскивать в аггрегирующую таблицу

Ilia
14.09.2017
05:57:16
есть запрос: explain SELECT username, max(acctstarttime) AS last_session_start , IFNULL(MAX(acctstoptime), 0) AS last_session_end, SUM(acctinputoctets+acctoutputoctets) AS data_usage FROM radacct GROUP BY username ORDER BY max(acctstoptime) ASC;
Кроме того, я не уверен, что запрос правильный. У тебя для сессии начало и конец берутся тупо как min, Max, но записи эти две друг с другом никак не связаны.

Denis
14.09.2017
06:12:18
На 5% ?
процентов на 20 прирост дать вполне может

Alexander
14.09.2017
06:15:21
покурю насчёт start/stop

Ilia
14.09.2017
06:40:49
процентов на 20 прирост дать вполне может
С 20 сек будет 18? Зашибись результат...

Оптимизация запроса — это ускорение его минимум на порядок.

Vasya
14.09.2017
06:41:17
16

Ilia
14.09.2017
06:41:29
Лучше на 2-3 порядка

Google
Denis
14.09.2017
06:43:34
Все верно, но ты вообще предложил парню страдать

Ilia
14.09.2017
06:44:35
Так а чёго ему ещё делать?

С такими запросами...

ССЗБ!

Denis
14.09.2017
06:46:02
Я не знаю, что под капотом у mysql, но в pg я бы посоветовал ему покрывающий индекс по полю группировки и полям агрегации. Ну и активно фризить таблицу.

Ilia
14.09.2017
06:46:24
Какой индек, он ВСЮ ТАБЛИЦУ выбирает!

Покрывающие индексы это вообще зло. Не надо их форсить.

Ксати , нездоровая тенденция последних лет ... блин, лет 5ти

Denis
14.09.2017
06:47:48
Ненене, покрывающие индексы - это отличная тема.

Ilia
14.09.2017
06:47:53
Каждый форсит покрывающий индекс.

Это гнилая тема.

Denis
14.09.2017
06:48:09
Почему?

Ilia
14.09.2017
06:48:13
Ты не сделаешь на все запросы покрывающие индексы

Завтра запрос поменяли, добавили одно полюшко — всё, в сад, с копыт.

Потом, покрывающий индекс (В ЭТОМ ЗАПРОСЕ) не сильно и поможет. Может, в 2 раза ускорит. А надо (повторяюсь) на порядки.

Denis
14.09.2017
06:49:57
Покрывающие индексы хороши для агрегаций. А добавление дополнительного роля агрегации всегда черевато

Ilia
14.09.2017
06:50:21
Почему?
Идеологически покрывающий индекс сродни денормализации. Такая же тупая дебильная технология.

Ilia
14.09.2017
06:50:48
И бесполезная в 90% случаев

Ладно, это лирика всё

Google
Ilia
14.09.2017
06:51:00
Нет не говорил

Но видимо немаленькая, видимо, лог какого-то девайса.

Если бы таблица была маленькой, он бы сюда не прибежал.

Ilia
14.09.2017
06:52:00
Наверное, несколько сот тыщ записей

Denis
14.09.2017
06:52:48
Это очень долго для нескольких кк записей. Миллионов - да, ещё возможно

Ilia
14.09.2017
06:52:49
Что-то тебя понесло
Несёт —- это когда гонишь, и гонишь туфту... А я ПРАВДУ говорю...

Ладно, не важно. Автор пусть либо колется, либо страдает.

Vladislav
14.09.2017
06:54:22
У меня был проект, где денормолизация и покрывающие индексы были в одном флаконе и прирост был колоссальный, как и профит от этого

Denis
14.09.2017
06:54:35
Vladislav
14.09.2017
06:54:50
Все зависит от данных и как их использовать

Ilia
14.09.2017
06:55:08
А так ему нужно ловить в таблице окончания сессий и отваливать в отдельную таблицу последних сессий сессии по юзерам. Тогда будет быстро

Но это ему уже сказали.

Виктор
14.09.2017
06:57:59
Ilia
14.09.2017
06:59:31
А ну тогда вообще трындец.

Alexander
14.09.2017
07:03:19
по имени таблицы radacct видно, что это radius accounting, грубо говоря - логи пользователей, которые через radius-сервер приходят

Denis
14.09.2017
07:05:36
По explain же видно 5.5 миллионов
Партицирование таблицы и преагрегацию порезанных кусков уже советовали?

Vladislav
14.09.2017
07:08:00
Прикольно, когда старт сессии в одной партиции, а окончание в другой ??

Google
Ilya
14.09.2017
07:10:21
проблема будет в извлечении

Vladislav
14.09.2017
07:11:27
проблема будет в извлечении
Действительно, что это я. Надо улучшить одну проблему, чтобы получить еще и другую

Алексей
14.09.2017
07:12:03
Разработчики freeradius не могут предусмотреть всех "хотелок" тех, кто будет пользоваться их продуктом. Лет 10 назад, когда в компании, где я работал, прикручивали freeradius к биллингу, создали дополнительно еще несколько таблиц, для тех задач, которые нужны были биллингу, но не предусмотрены были во freeradius.

Denis
14.09.2017
07:12:16
Правда это убивает идею преагрегации

Vladislav
14.09.2017
07:13:20
А если партицировать по хешу пользователя?
Проще сделать ELT агрегаты в новой таблице

Ilia
14.09.2017
07:13:41
А если партицировать по хешу пользователя?
Денис, ты не идеи толкай, а полностью изложи мысль. ЕСЛИ мы сделаем то-то и то-то, ТО будет то-то И запрос будет работать ТАК. Я уверен, что когда ты дойдёшь до конца таких рассуждений, идеи отпадут

Правда это убивает идею преагрегации
Нахрена предагрегировать старые сессии, если ему нужны ПОСЛЕДНИЕ ?

Ilia
14.09.2017
07:15:37
Чтобы ближе был...

есть запрос: explain SELECT username, max(acctstarttime) AS last_session_start , IFNULL(MAX(acctstoptime), 0) AS last_session_end, SUM(acctinputoctets+acctoutputoctets) AS data_usage FROM radacct GROUP BY username ORDER BY max(acctstoptime) ASC;

Кстати, а что вообще ему нужно?
О!, с этого и нужно начинать...

Denis
14.09.2017
07:35:36
Если я правильно понимаю, это по факту таблица логирования. При таких объемах и требуемой скорости по ней real time аналитику не построишь. Значит, нужна ещё одна таблица, где у каждого пользователя будут апсертиться последние данные о сессии, чтобы сколько уникальных пользователей, столько и строк. Ну и агрегацию делать по ней

Ilia
14.09.2017
07:36:19
Ну это уже высказывали в обсуждении.

Denis
14.09.2017
07:36:47
Ну тогда все правильно сказали, тут нужно архитектуру менять

Батыр
14.09.2017
07:43:18
Как посмотреть статистику заполнения таблспейсов в оракл

?

/stat@combot

Google
Combot
14.09.2017
07:44:20
combot.org/chat/-1001045152752

Alexander
14.09.2017
08:02:27
угу, направление примерно понятно, что делать. займусь ...

Igor
14.09.2017
08:11:18
https://huntflow.ru/insight/article/recruting-in-tinder

годный мануал тутешним HR

Ilia
14.09.2017
08:44:59
Ты чатик не попутал?

Igor
14.09.2017
08:53:12
Ненуашо

Rushan
14.09.2017
08:53:57
ой

не то )))

у ХР есть отдельные чаты

Ilya
14.09.2017
08:56:17
помницо эту хрюшу я тоже вежливо посылал. она мне java предлагала

Rushan
14.09.2017
08:56:43
хаха )))

Хрюша )) Надо запомнить

Ilya
14.09.2017
08:57:29
а я не хочу джаву.

Страница 246 из 718