Как реализовать базу данных с 100 000 000 (100 млн.) записей?

Нужно организовать базу данных с 100 000 000 записей, использовал php mysql, уже второй день пишет туда. Но это не вариант. Нужен максимально быстрый срок.

Есть идеи? Возможно использовать другую бд? (например какую)

Создать цикл подходит, но отнимает очень долго времени. Нужно максимально быстро.
Такой цикл за два дня с учетом траблов, заполнил около 1 млн. А нужно еще 79.

Все это делается, просто чтобы протестить поиск по записям.
в бд 2 поля. code, isActivated
  • Вопрос задан
  • 5966 просмотров
Решения вопроса 1
mgyk
@mgyk
1) Покажите схему таблицы
2) Покажите данные которые загружаете

Самый быстрый способ это загружать напрямую из фаила чарез LOAD DATA INFILE 'mydata.csv' INTO TABLE 'xxx';
Ответ написан
Пригласить эксперта
Ответы на вопрос 6
AxisPod
@AxisPod
Индексы отключите и вставлять не по одному, а большими пачками. У меня 45 миллионов на днях забилась примерно за пару минут. Конечно всё зависит от размеров данных, но всё же вырубите индексы. А то после каждой вставки пересобирается индекс, чем дальше, тем медленее будет вставка.
Ответ написан
begemot_sun
@begemot_sun
Программист в душе.
Тут правильно говорят про LOAD DATA INFILE 'xxx' INTO TABLE 'xxx', только одна оговорка -- файл должен быть локальным по отношению к mysql-серверу.
У меня была задача сгенерировать 80 млн записей 4кб текста (вырезанного из 100 Кб шаблонного текста).

Я в своё время сделал так (т.к. php и mysql работал на одной машине):
1. Сделал RAM-диск, и примонтировал его к ФС.
2. На этот рам диск я писал нужные мне данные в CSV объемом где то 1 гб
3. Загружал в mysql с помощью LOAD DATA ...

Как показывали расчеты, если бы я это делал с помощью INSERT INTO то это продолжалось бы в районе 11 часов. Используя LOAD DATA я уложился в 40 мин. Причем сам по себе экспорт данных 1 Гб в mysql занимал порядка 10 сек, время генерации 1Гб файлика на php составляло порядка 3 минут, отсюда выводы --- берите LOAD DATA ... и готовьте с помощью него, вещь годная.
Ответ написан
Ну вставляйте не одним запросом а пачкой

INSERT INTO a VALUES (1,2),(2,3),(3,4)....

где каждая скобка - новая строка, будет гораздо быстрее
Ответ написан
@inkvizitor68sl
Linux-сисадмин с 8 летним стажем.
Вам здесь монга больше подошла бы.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы