2016-09-23 2 views
-4

У меня есть две таблицы, и в обеих таблицах я получаю 1 миллион записей. И каждую ночь я использую работу cron для вставки записей. В первой таблице я сначала обрезаю таблицу, а затем вставляю записи и во второй таблице я обновляю и вставляю запись в соответствии с первичным ключом. Я использую mysql в качестве моей базы данных. Моя проблема заключается в том, что мне нужно выполнять эту задачу каждый день, но я не могу вставить все данные. Что может быть возможным решением этой проблемы?Вставка 1 миллиона записей в mysql

+0

Вы можете дюйм к решению с некоторыми деталями. Такого не видно выше. – Drew

+4

", но я не могу вставить все данные" Почему? – ytbryan

ответ

0

Важно, чтобы все виды действия и проверки MySQL хочет выполнить при отправке данных, как AUTOCOMMIT, индексирование и т.д.

https://dev.mysql.com/doc/refman/5.7/en/optimizing-innodb-bulk-data-loading.html

Потому что, если вы не сделаете этого, MySQL делает много работы после того, как каждая запись добавляется, и это добавляет , когда процесс продолжается, что приводит к очень медленной обработке и импорту в конце и может не завершиться за один день.

-2

Если вы должны использовать MySql: для первой таблицы отключите индексы, внесите вставки, чем включите индексы. Это будет работать быстрее.

В качестве альтернативы MongoDb будет быстрее, а Redis - очень быстро.

+0

Если пользователь Rails собирался переключать базы данных из MySQL, их первая мысль должна быть PostgreSQL. Но это кажется скорее преждевременным советом. –

+0

Моим главным советом было отключение индексов. Это было хорошо, и я проголосовал за меня, потому что это было не круто. PostgreSQL не так быстрее MySql, Redis. В зависимости от ваших потребностей это может быть отличным решением. Особенно для временных данных (например, этот случай). –

+0

Я не знаю, почему вы проголосовали или кто проголосовал за вас. Я думаю, что неясно, в чем проблема OP ... может быть, это производительность, но на данный момент это очень некачественный вопрос (который у меня есть * проголосовавший) –

Смежные вопросы