Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Тип таблицы для хранения статистики / 4 сообщений из 4, страница 1 из 1
05.02.2014, 10:53:07
    #38549798
Sergey Solozhentsev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тип таблицы для хранения статистики
Есть база, в которой нужно хранить много статистики получаемой от пользователя. То есть очень много записей. Пару раз в сутки эта таблица будет обрабатываться для получения агрегированный данных. Периодически также по этой таблице происходят селекты. Весь вопрос, какой движок использовать для хранения таких данных. Сейчас на InnoDB, и селекты работают ну очень медленно. Да и insert'ы тоже в принципе не сильно быстро, но терпимо. А вот с селектами очень плохо.
...
Рейтинг: 0 / 0
05.02.2014, 11:09:31
    #38549832
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тип таблицы для хранения статистики
А нужна ли вообще эта таблица? Иногда имеет смысл сразу писать данные в таблицы-агрегаторы.

Если точно нужна, то показывайте структуру таблицы и пример долго работающего запроса.
...
Рейтинг: 0 / 0
05.02.2014, 15:35:27
    #38550472
Sergey Solozhentsev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тип таблицы для хранения статистики
miksoft,

Таблица (одна из)

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
CREATE TABLE IF NOT EXISTS `battleSessionInfo` (
  `deviceId` varchar(52) NOT NULL,
  `id` varchar(32) NOT NULL DEFAULT '',
  `monster` varchar(32) DEFAULT NULL,
  `mapPoint` varchar(32) NOT NULL,
  `stars` smallint(4) NOT NULL,
  `result` varchar(16) NOT NULL,
  `resultCoins` smallint(4) NOT NULL,
  `spentCoins` int(11) NOT NULL,
  `spentCrystals` smallint(4) NOT NULL,
  `spentRealCoins` int(11) NOT NULL DEFAULT '0',
  `spentRealCrystals` smallint(4) NOT NULL DEFAULT '0',
  `freeBoostersUed` tinyint(2) NOT NULL,
  `coinsBoosterUsed` tinyint(2) NOT NULL,
  `crystalBooseterUsed` tinyint(2) NOT NULL,
  `skipCount` tinyint(4) NOT NULL,
  `sessionLength` int(11) NOT NULL,
  `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `grade` smallint(4) NOT NULL,
  `enemyGrade` double NOT NULL,
  `speed` int(11) NOT NULL,
  `hits` tinyint(4) NOT NULL DEFAULT '0',
  `turns` smallint(6) NOT NULL DEFAULT '0',
  `helper` smallint(6) NOT NULL DEFAULT '0',
  `healCount` tinyint(2) NOT NULL,
  `healCrystals` smallint(4) NOT NULL,
  `healRealCrystals` smallint(4) NOT NULL,
  `winnerLife` int(11) NOT NULL,
  `misc` int(11) NOT NULL DEFAULT '0',
  `version` varchar(32) DEFAULT NULL,
  `stupid` tinyint(4) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `timestamp` (`timestamp`),
  KEY `deviceId` (`deviceId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPRESSED;



запросы
Код: sql
1.
select sum(spentCoins), mapPoint from battleSessionInfo where timestamp between '2014-02-03' and '2014-02-04'


есть еще такой же но плюс deviceId конкретный указывается. и вместо spentCoins много разных параметров. В общем много аналитики.
Таблицы-агрегаторы создаются по мере необходимости, поэтому и нужна сырая статистика.
...
Рейтинг: 0 / 0
05.02.2014, 17:49:23
    #38550821
javajdbc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тип таблицы для хранения статистики
Запрос страный, или вы забыли груп бы указать
Уточните запрос и приведите ЕХПЛАИН (план) запроса.
И его скорость. И какую скорость хотите.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Тип таблицы для хранения статистики / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]