SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 30.09.2015 23:58:59

kirill_n
Участник
Зарегистрирован: 30.09.2015
Сообщений: 1

архитектура бд, агрегатные данные, сумма в подрубриках

здравствуйте
вопрос:
на доске объявлений у объявления есть такие параметры
регион
город
раздел
категория
рубрика
тип товара
+
частный/бизнес
новый/бу
покупка/продажа/обмен/бесплатно

при выборе сочетаний которых требуется выводить на странице сумму объявлений в зависимости от их комбинации, актуальные (по возможности) данные
1 по региону (городу)
2 всего, покупка, продажа, обмен, бесплатно
3 разделу (категории/рубрике/типу товаров
+ в зависимости от указанных критериев

пример: мы на странице московской области в разделе транспорт + отмечены "частные, бу, продажа"
требуется
1 показать сумму объявлений по критериям (отмечены) в городах московской области, если они в них есть
2 количество объявлений по всей области в разрезе покупка/продажа/обмен/бесплатно
3 сумму объявлений по области в разрезе подкатегорий выбранного раздела

(если снимем галочку "частные" - то все тоже, только для всех видов объявлений и частных и бизнес)

сейчас работает, только основывается на count самой таблицы объявлений, что уже жутко тормозит...
нужно переделать
склоняюсь к подсчету данных в счетчиках при добавлении объявлений и создании общей таблицы заранее.
перекрестная таблица с возможными комбинациями условий отбора получается в 40 полей и около 100 млн записей в 30 Г.
установлено несколько комбинированных индексов для выборок.
за одну вставку объявления придется выполнить около 25 обновлений в аггрегатной таблице
(проинкрементить сумму в регионе, регионе+частные, регионе+новые, регионе+частные и новые, в рогоде и т.д.)
, в ней идет только обновление и чтение.
основная таблица с объявлениями обновление, чтение + добавление, удаление около 2000 строк в сутки, активное чтение 4-10тыс хостов, всего 500 тыс-1 млн строк.

предварительны тесты в одного пользователя показывают что на выборку тратится 3*0,05сек

какие проблемы могут вылезти при таком обновлении/чтении, на таком размере?
объем растет самих объявлений и пользователей.
как это можно организовать на базе этого?
по другому?


может кто сталкивался?
спасибо.

Неактивен

 

#2 08.10.2015 12:48:00

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5239

Re: архитектура бд, агрегатные данные, сумма в подрубриках

kirill_n написал:

сейчас работает, только основывается на count самой таблицы объявлений, что уже жутко тормозит...
нужно переделать

А как вы считаете статистику? Одним навороченным запросом или несколькими запросами на count(*) по покрывающим индексам? Второй вариант должен работать быстро.

Неактивен

 

#3 08.10.2015 19:35:13

Xatter
Участник
Зарегистрирован: 08.05.2012
Сообщений: 7

Re: архитектура бд, агрегатные данные, сумма в подрубриках

Самый оптимальный вариант написать скрипт статистики и считать всё в отдельную таблицу небольшими запросами которые не будут вызывать нагрузку на базу

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson