|
|
|
Подсчет кол-ва уникальных записей при больших объемах данных.
|
|||
|---|---|---|---|
|
#18+
Приветствую! Столкнулся с такой проблемой. Есть таблица большого размера (на данный момент 300+ млн. записей и постоянно растет): Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Появилась необходимость регулярно получать кол-во уникальных пользователей за определённый период времени (например, за прошлый год) для одной, двух, N-го количества игр. Есть серьезное опасение, что время выполнения подобных запросов превысит все нормальные сроки. Что можно сделать для оптимизации? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 18:26:00 |
|
||
|
Подсчет кол-ва уникальных записей при больших объемах данных.
|
|||
|---|---|---|---|
|
#18+
Рядом же практически аналогичный топик - http://www.sql.ru/forum/1057783/ogromnaya-i-bystrorastushhaya-tablica ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 18:30:24 |
|
||
|
Подсчет кол-ва уникальных записей при больших объемах данных.
|
|||
|---|---|---|---|
|
#18+
miksoft, я этот топик просмотрел, но полезного ничего не нашлось. Точнее, всё что предлагалось либо уже делалось, либо не подходит к решению данной задачи :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 18:33:48 |
|
||
|
Подсчет кол-ва уникальных записей при больших объемах данных.
|
|||
|---|---|---|---|
|
#18+
Эти варианты - 15092619 - чем не устраивают? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 18:39:30 |
|
||
|
Подсчет кол-ва уникальных записей при больших объемах данных.
|
|||
|---|---|---|---|
|
#18+
sp33dдля одной, двух, N-го количества игр.Вот это фрагмент опишите подробнее. Возможно, тут будет закавыка... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 18:40:50 |
|
||
|
Подсчет кол-ва уникальных записей при больших объемах данных.
|
|||
|---|---|---|---|
|
#18+
OLAP? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 18:57:47 |
|
||
|
Подсчет кол-ва уникальных записей при больших объемах данных.
|
|||
|---|---|---|---|
|
#18+
Есть несколько групп игр, и для каждой группы нужно посчитать кол-во пользователей за период. Если подробнее, то сейчас все сводиться к запросу типа: Код: sql 1. 2. 3. 4. 5. 6. Проблема в том, что нельзя посчитать уникальных пользователей по каждой игре отдельно, а для группы - просто сложить. Пользователи могут играть в несколько игр, а значит и пересекаться. Аналогично и с датами. Сумма уникальных пользоваталей за вчера и сегодня отдельно будет больше или равна кол-ву таких пользоваталей за эти дни, если считать их вместе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 18:58:12 |
|
||
|
Подсчет кол-ва уникальных записей при больших объемах данных.
|
|||
|---|---|---|---|
|
#18+
sp33d, какого масштаба величины общее количество пользователей и общее количество игр? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 19:07:29 |
|
||
|
Подсчет кол-ва уникальных записей при больших объемах данных.
|
|||
|---|---|---|---|
|
#18+
sp33dЕсть несколько групп игрГруппы насколько фиксированы? Игры могут перемещаться между группами? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 19:09:19 |
|
||
|
Подсчет кол-ва уникальных записей при больших объемах данных.
|
|||
|---|---|---|---|
|
#18+
miksoft, Общее кол-во пользоваталей большое, 50+ млн., игр около 500. Группы можно считать фиксированными. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 19:14:43 |
|
||
|
Подсчет кол-ва уникальных записей при больших объемах данных.
|
|||
|---|---|---|---|
|
#18+
sp33d, а много ли групп? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 19:15:59 |
|
||
|
Подсчет кол-ва уникальных записей при больших объемах данных.
|
|||
|---|---|---|---|
|
#18+
Хм, хорошего решения сейчас не вижу. Можно попытаться ускорить имеющийся запрос. Можете показать план запроса? Возможно, поможет перестановка порядка полей в индексе. Но какой именно порядок окажется лучше - без экспериментов не скажу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 19:32:12 |
|
||
|
Подсчет кол-ва уникальных записей при больших объемах данных.
|
|||
|---|---|---|---|
|
#18+
miksoft, на данный момент 2 группы. В одной порядка 25-30 игр, в другой около 200. И есть игры без групп - они в данной задаче неважны. С индексами я ещё поиграюсь, может что и получится, но судя по EXPLAIN, UNIQUE INDEX используется. А что вы имеете в виду под планом запроса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 19:40:12 |
|
||
|
Подсчет кол-ва уникальных записей при больших объемах данных.
|
|||
|---|---|---|---|
|
#18+
sp33dС индексами я ещё поиграюсь, может что и получится, но судя по EXPLAIN, UNIQUE INDEX используется. А что вы имеете в виду под планом запроса?план и есть EXPLAIN ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 19:49:01 |
|
||
|
Подсчет кол-ва уникальных записей при больших объемах данных.
|
|||
|---|---|---|---|
|
#18+
miksoft, Не знаю как принято показывать. Вот: Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 20:34:59 |
|
||
|
Подсчет кол-ва уникальных записей при больших объемах данных.
|
|||
|---|---|---|---|
|
#18+
Обязательно ли иметь разрешение в один день? Если нет, огрубляйте старые данные по неделям, месяцам, годам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 20:41:44 |
|
||
|
Подсчет кол-ва уникальных записей при больших объемах данных.
|
|||
|---|---|---|---|
|
#18+
Или вот еще http://dev.mysql.com/tech-resources/articles/partitioning.html есть. В зависимости от ваших особенностей можно порубить на куски по играм или временным интервалам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 20:45:15 |
|
||
|
Подсчет кол-ва уникальных записей при больших объемах данных.
|
|||
|---|---|---|---|
|
#18+
Модератор: Прошу прекратить бессодержательую рекламу вашего сайта. Еще раз - будет бан. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 22:09:08 |
|
||
|
Подсчет кол-ва уникальных записей при больших объемах данных.
|
|||
|---|---|---|---|
|
#18+
transposeОбязательно ли иметь разрешение в один день? Если нет, огрубляйте старые данные по неделям, месяцам, годам. Обязательно. Старых данных почти и нет. Эти 300 млн. записей результат всего лишь полутора лет работы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2013, 02:21:58 |
|
||
|
Подсчет кол-ва уникальных записей при больших объемах данных.
|
|||
|---|---|---|---|
|
#18+
sp33dmiksoft, Общее кол-во пользоваталей большое, 50+ млн., игр около 500. Группы можно считать фиксированными. можно попробовать заменить Код: plsql 1. на Код: plsql 1. Для этого нужно ввести новые колонки для каждой группы (или вообще новую таблицу) и каждому юзверю ставить туда единичку, когда и если он в этот день первый раз начнет играть в какую-нибудь игру из группы. Во всех остальных случаях нолик. Как вы это будете рассчитывать и насколько это выполнимо с точки зрения размера данных - я заранее сказать не могу. Если вы будете создавать отдельную таблицу - она будет кардинальности [device_id]x[game_group_id]x[date] Ну или даже меньше, если туда нолики не писать. Что по вашем словам в 50-100-200 раз меньше чем (game_id, date, device_id). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2013, 21:51:43 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38456868&tid=1835736]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
34ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
| others: | 219ms |
| total: | 352ms |

| 0 / 0 |
