Пакетная вставка MySQL - PullRequest
0 голосов
/ 08 декабря 2011

Я делаю пакетную вставку для вставки 80 тыс. Записей и 1200 записей для партии. Запрос выполняется нормально. Проблема в том, что я получаю данные с сервера mssql и создаю из него пакетный массив. Таким образом, изменения происходят по какой-то причине, из-за сбоя одной из пакетных вставок.

Но при неудачной вставке пакета это происходит для всех 1200 записей этой конкретной партии.

Итак, есть ли способ узнать, как получить точные записи из партии из 1200 записей, которые не смогли вставить партию.

И еще один вопрос.

При выполнении этой вставки веб-сайт отключается на время обновления.

Есть ли способ, чтобы в течение этого времени сайт также не работал.

Любая помощь будет оценена.

Спасибо

1 Ответ

2 голосов
/ 08 декабря 2011

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

Транзакция:[http://dev.mysql.com/doc/refman/4.1/...-commands.html] Если ваш db поддерживает его (для поддержки mysql может потребоваться определенный бэкэнд, в зависимости от версии mysql), вы начинаете транзакцию, отправляя «start tansaction», а затем отправляете все свои вставки одну за другой.и завершите транзакцию "коммитом" или "откатом".Этот метод имеет большое преимущество в том, что БД знает, что ему не нужно пересчитывать индексы перед тем, как выполнить коммит.

вставка отложена: [http://dev.mysql.com/doc/refman/4.1/...t-delayed.html] Это специальный mysqlкоманда, которая позволяет вам дать подсказку на БД о важности вставки.Отложенная вставка всегда будет обрабатываться, когда БД не будет занята чем-то другим, у нее низкий приоритет по сравнению со стандартной вставкой / обновлением.

...