Почему вы закрываете соединение после нескольких вставок? Ваш скрипт должен быть:
- Открыть соединение
- Напишите столько записей, сколько вам нужно
- Закрыть соединение
Транзакции могут усложнить это.
Если вы выполняете нетранзакционные вставки, обязательно используйте одно соединение и записывайте каждую запись по одной за раз.
Если вы используете транзакции и пишете действительно огромный набор данных (т. Е. Миллионы строк), то, возможно, потребуется настроить вашу базу данных, чтобы у нее было достаточно временного хранилища, чтобы справиться с этим.
В основном, если одна вставка занимает секунду, она предлагает мне один или несколько из:
- Ваши внешние ключи не проиндексированы, поэтому проверки ссылочной целостности на вставке крайне неэффективны; или
- Чрезмерное открытие и закрытие соединения.
Теперь, несмотря на все сказанное, наличие нескольких «рабочих», выполняющих вставки, может привести к полезному увеличению общей пропускной способности, но при 1 секунде на вставку - это не ваша проблема. Вам нужно выяснить, в чем ваша проблема.
При действительно огромных пакетных вставках может также стоить отключить проверочные ограничения, внешние ключи и индексы, выполнить все вставки и затем снова включить их.