Новости
Документация
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: Dinky - 02/09/2005 - 19:47:26
Subject:Конкретизирую проблему
-----------------
DATETIME это плохо, я так понимаю, что данные потом не обновляются? знаит надо использовать TIMESTAMP, это в два раза меньше ;) Плюс, нельзя ли выкинуть время? Это очень помогло бы индексу (на порядок ;) - если нельзя, то стОит подумать вынести время в отдельное неиндексируемое поле.
Далее, если можно номера-строки преобразовать в номера-числа, то лучше это сделать ;) Если там есть постоянные префиксы - лучше их выкинуть!
Индексы: до версии 5.x mysql использует только ОДИН индекс на запрос на таблицу, посмотри explain-ом, какой именно индекс он берет - по номеру или по дате? может статься, что по дате индекс ему вообще не нужен ;)
Сложный индекс - в данном случае можно было бы сделать, чтоб выборка полностью шла по индексу:
KEY `search_a` (numa, date),
KEY `search_b` (numb, date),
KEY `search_c` (imei, date)
но только если удасться сделать поля маленькими ;)
Вставка - select .. insert не самый быстрые вариант, откуда данные попадают в tmp? попробуй для экперимента выкинуть их в текстовый файл: SELECT INTO OUTFILE и потом за-импортить в tn: LOAD DATA INFILE, должно быть быстрее во много раз.

ну и конечно диски побыстрее всегда полезно иметь ;)
--
Dmitry



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

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

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



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