LINUX.ORG.RU

История изменений

Исправление sigurd, (текущая версия) :

У тебя 5 полей с индексами. Каждый раз, когда ты вставляешь запись в бд, индексы перестраиваются. И ты своими единичными инсертами 300 миллионов раз перестраиваешь индексы на 70 гигабайт.

Прочти внимательно условие задачи - из это БД только читают, в нее ничего не пишут. Никакие индексы не перестраиваются! Пишут в другую БД 20 полей. И вот там индексов быть не должно.

А вообще, как тебе уже сказали ранее - нужно использовать транзакции и записывать результаты пачками. Размер пачек нужно подобрать экспериментально, но начать хотя бы с сотни строк за раз.

START TRANSACTION
for(i=0; i<100; i++)
{
  SELECT from bd1...
  calculate();
  INSERT into bd2... 
}
COMMIT

Исправление sigurd, :

У тебя 5 полей с индексами. Каждый раз, когда ты вставляешь запись в бд, индексы перестраиваются. И ты своими единичными инсертами 300 миллионов раз перестраиваешь индексы на 70 гигабайт.

Прочти внимательно условие задачи - из это БД только читают, в нее ничего не пишут. Никакие индексы не перестраиваются! Пишут в другую БД 20 полей. И вот там индексов быть не должно.

А вообще, как тебе уже сказали ранее - нужно использовать транзакции и записывать результаты пачками. Размер пачек нужно подобрать экспериментально, но начать хотя бы с сотни строк за раз.

START TRANSACTION
for(i=0; i<100; i++)
{
  SELECT from bd1...
  calculate();
  INSERT to bd2... 
}
COMMIT

Исправление sigurd, :

У тебя 5 полей с индексами. Каждый раз, когда ты вставляешь запись в бд, индексы перестраиваются. И ты своими единичными инсертами 300 миллионов раз перестраиваешь индексы на 70 гигабайт.

Прочти внимательно условие задачи - из это БД только читают, в нее ничего не пишут. Никакие индексы не перестраиваются! Пишут в другую БД 20 полей. И вот там индексов быть не должно.

А вообще, как тебе уже сказали ранее - нужно использовать транзакции и записывать результаты пачками. Размер пачек нужно подобрать экспериментально, но начать хотя бы с сотни строк за раз.

START TRANSACTION
INSERT 
...
INSERT
COMMIT

Исходная версия sigurd, :

У тебя 5 полей с индексами. Каждый раз, когда ты вставляешь запись в бд, индексы перестраиваются. И ты своими единичными инсертами 300 миллионов раз перестраиваешь индексы на 70 гигабайт.

Прочти внимательно условие задачи - из это БД только читают, в нее ничего не пишут. Никакие индексы не перестраиваются! Пишут в другую БД 20 полей. И вот там индексов быть не должно.