Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Большая таблица, вставка и выборка (Евгений) 01/09/2005 - 08:14:20
      Re: Большая таблица, вставка и выборка (Валентин) 01/09/2005 - 14:05:30
      Re: Большая таблица, вставка и выборка (Dinky) 01/09/2005 - 19:19:28
      Re: Конкретизирую проблему (Евгений) 02/09/2005 - 09:07:52
      Re: Конкретизирую проблему (Dinky) 02/09/2005 - 19:47:26

> Original message text:
> From: Евгений - 01/09/2005 - 08:14:20
> Subject:Большая таблица, вставка и выборка
> -----------------
> Господа, существует таблица (7 полей, 4 индекса) объемом 128 млн. строк, 8 Гб.
> В последнее время комп(P4 3ГГц, RAM 512Mb) плохо справляется с вставкой строк. Возможно я где-то ошибся в проектировании. Поэтому прошу помощи у специалистов в разработке структуры таблиц, запросов на вставку и выборку.
> Т.З.: Необходимо хранить данные о звонках абонентов за год (датавремя, номер1, номер2, длительность, имеи, сота1, сота2). Примерное кол-во в месяц - 20млн.
> Данные добавляются каждый час примерно по 40тыс. записей.
> Выборка нужна по полям датавремя и (номер1 или номер2 или имеи). Размер выборки может достигать 5тыс. записей. Время выборки желательно до 5мин.
> Помогите кто чем может.
>


From: Евгений - 02/09/2005 - 09:07:52
Subject:Конкретизирую проблему
-----------------
Моя текущая реализация:
CREATE TABLE `tbl` (
`date` datetime NOT NULL default '0000-00-00 00:00:00',
`numa` char(18) NOT NULL default '',
`numb` char(18) NOT NULL default '',
`drtn` smallint(4) unsigned NOT NULL default '0',
`imei` char(16) NOT NULL default '',
`fcell` char(5) NOT NULL default '',
`lcell` char(5) NOT NULL default '',
KEY `date` (`date`),
KEY `numa` (`numa`),
KEY `numb` (`numb`),
KEY `imei` (`imei`)
) ENGINE=MRG_MyISAM
UNION=(`t1`,`t2`,...,`tn`)
t1,t2,tn - данные по месяцам.
Вставка:
INSERT INTO tn (date,numa,numb,drtn,imei,fcell,lcell)
SELECT date,numa,numb,drtn,imei,fcell,lcell
FROM tmp
WHERE date BETWEEN 'date_start' AND 'date_finish'
Когда размер tn превышает 10млн. записей, вставка 100тыс. или более записей растягивается на часы, или приводит к ошибке "Lost connection to MySQL server during query".
Отключение индекса - вставка - включение индекса к выигрышу времени не приводят.
Проблема имхо в следующем: размер файла данных tn зашкаливает за 1Гб, индекса - за 500Мб, индексация(да и просто чтение с диска) занимает существенное время.
Выборка:
SELECT date,numa,numb,drtn,imei,fcell,lcell
FROM tbl
WHERE (date BETWEEN 'startdate' AND 'enddate') AND numa='numer'
или
WHERE (date BETWEEN 'startdate' AND 'enddate') AND numb='numer'
или
WHERE (date BETWEEN 'startdate' AND 'enddate') AND imei='numer'
Отсюда вопрос: поможет ли замена
datetime -> bigint(12) "yymmddhhssii"
char(18) -> bigint(18).
Валентин: что имеется в виду под сложными индексами.


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
23844



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |