Sigmond Gatt Ответов: 2

Проблема производительности в запросах вставки


Привет ребята,

Только один короткий вопрос:

Я создаю sqlfile с большим количеством запросов вставки (например, 8000 различных запросов вставки)
.

Я запускаю этот файл через cmd

из ЦМД:
я подключусь к базе данных, запущу файл с запросами insert, чем зафиксирую его.

Могу ли я сделать что-то, чтобы сделать его более быстрым ?

Что я уже пробовал:

Я не знаю, что я могу сделать, вот почему я спрашиваю вас .

Mike V Baker

Можно ли создать sql-файл с 8 вставками по 1000 записей каждая, а не с 8000 вставками? То, что я обычно делаю, - это устанавливаю порог, например, 1000 записей. Когда я обрабатываю элементы, я веду подсчет количества вставок в списке, и когда он достигает порогового значения, он запускает эту вставку.

Sigmond Gatt

это может быть хорошей идеей , но когда дело доходит до cmd , cmd вставляет каждый запрос один за другим, и это требует времени. я попробую bcp может быть это сработает

Mike V Baker

Я имею в виду, что cmd нужно будет выполнить только 8 запросов вместо 8000. Несмотря на то, что каждый qry имеет 1000 записей, он все равно работает быстрее, чем 8000 одиночных вставок записей. Возможно, если вы разместили SQL, который будет выполняться cmd, я могу показать вам, что я имею в виду

Sigmond Gatt

если у меня есть вставка в таблицу 1 значений ("привет", "пока");

для 8000 раз, но значения все разные .. как я могу разделить их на 8 запросов ?

Спасибо Вам за вашу помощь.

Mike V Baker

Вставка в значения ComicCharacters (FirstName, LastName)
("Жучки", "Зайка"),
("Йосемити", "Сэм"),
("Элмер", "Фадд"),
("Виноград", "Обезьяна");

Начните с вставки в строку, а затем просто продолжайте перечислять значения в скобках. Когда он достигает размера пакета, вы запускаете cmd, очищаете его и начинаете все сначала. Используйте запятую между записями, точку с запятой в конце. 1000-это произвольное число, которое я выбрал, чтобы показать прогресс в программе.

Sigmond Gatt

это синтаксис SQL ? как я пробовал этот метод, но он не работает, может быть, потому, что я использую oracle ?

2 Ответов

Рейтинг:
2

Member 13853105

Не могли бы вы проверить, есть ли какие-либо триггеры/индексы, созданные на той таблице, в которую вы собираетесь вставить данные.Если вы обнаружите, что тогда, пожалуйста, отключите триггеры/индексы, тогда вы можете попробовать вставить.


Mike V Baker

Имейте в виду, что если вы отключите триггеры и/или индексы во время операции, то вам нужно будет перестроить индексы и выполнить операции в триггерах, чтобы убедиться в правильности данных.

Рейтинг:
2

Giridhari Mishra

когда вы выполняете вставку 8000 записей, это определенно убивает производительность. В этом случае также учитываются память и скорость процессора. Вместо этого разделите их на 8 запросов, каждый из которых содержит 1000 записей. Это повысит производительность.


Sigmond Gatt

так как же я могу разделить их, не могли бы вы мне помочь ?

если у меня есть :

вставить в таблицу 1 значения ("hello1");

в течение 8000 раз .. как я могу разделить его на 8 запросов ?

Mike V Baker

Вставка в значения ComicCharacters (FirstName, LastName)
("Жучки", "Зайка"),
("Йосемити", "Сэм"),
("Элмер", "Фадд"),
("Виноград", "Обезьяна");

Начните с вставки в строку, а затем просто продолжайте перечислять значения в скобках. Когда он достигает размера пакета, вы запускаете cmd, очищаете его и начинаете все сначала. Используйте запятую между записями, точку с запятой в конце. 1000-это произвольное число, которое я выбрал, чтобы показать прогресс в программе.