Большая таблица MySql создает слишком большую нагрузку на сервер

У меня есть таблица MySql, которая состоит из:

  1. ~ 25 миллионов строк (НА ТЕКУЩЕЕ)
  2. 3 индекса
  3. Ежедневно,поисковый робот добавляет ~ 3 миллиона строк
  4. Я в настоящее время не смотрю слишком далеко, но окончательная оценка базы данных может быть ~ CONST * e9 строк
  5. В настоящее время 9,5 гига
  6. innodb, и он считывается при вставке

Сами данные состоят из текста из ~ 100 символов + нескольких полей с метаданными о нем. Индексы - это уникальный идентификатор, имя писателя и идентификатор писателя.

До сих пор все шло гладко, но теперь сервер испытывает трудности с обработкой вставок новых данных (~ 10 секунд на каждую вставку, которая добавляет ~ 3k строк). Я пытаюсь найти способы решить эту проблему. На мой взгляд, следующее:

  1. Создание индекса при вставке требует усилий. Возможно, не во время вставки, а только после того, как X вставит добавление индексов.
  2. Разделение данных на разные таблицы.
  3. Сканирование в малую базу данных и каждые X минут / дней, перемещение данных в большую базу данных.
  4. Переход в другую базу данных. Я недостаточно знаком с NoSql, поможет ли это мне решить эти проблемы? Требуются ли большие усилия для его использования?

Каждый вариант имеет свои подварианты и дилеммы, но я думаю, что в первую очередь мне следует сосредоточиться на определении направления. Какой маршрут мне выбрать и почему? Есть ли другой путь, о котором я должен подумать?

Кстати - Есть также возможность не хранить все данные, а только те части, которые я действительно отображаю, но это сделает невозможным внесение некоторых функциональных изменений в процесс, который данные проходят перед отображением.

7
задан Noam 20 June 2011 в 19:17
поделиться