2016-04-20 3 views
0

У меня есть клиентское приложение Java 7, которое должно вставить большое количество небольших данных (несколько столбцов) в базу данных. База данных (Mysql 5.6) находится на моем сервере. Приложение Java на стороне клиента вызывает хранимую процедуру в цикле для вставки одной строки. Строка проста, выглядит так:Mysql, вставляющий несколько строк с одной вставкой

int | int | varchar | varchar | int | Дата и время

и текущий путь я делаю это так (псевдо-код):

try(DbConnection conn = new DbConnection()) { 
for(RowModel model : rowModel) { 
//inserting row here 
} 
} 
catch(SqlException e) { 
//process exception... 
} 

Как вы можете видеть, я буду открывать соединение один раз и я вставить строку за строкой. «rowModel» может иметь тысячи строк, и мне кажется, что было бы разумнее отправить 1 «LongText» в хранимую процедуру mysql, которая каким-то образом ограничит этот длинный текст подходящим для одного вызова «вставки».

Возможно ли и как? Что вы предлагаете?

Итак, в принципе, чтобы суммировать вещи: 1) есть ли какое-либо преимущество при вызове одной «вставки» с большим количеством значений вместо «для каждого» на стороне клиента? 2) Как я могу написать свою хранимую процедуру, поэтому требуется один большой текст и вставляет его с помощью одной команды «INSERT»?

+0

Вы можете «вставлять в значения t (col1, col2)» (1,2), (3,4), (5,6) »или просматривать подсказки для вставки BULK: http s: //dev.mysql.com/doc/refman/5.5/en/optimizing-innodb-bulk-data-loading.html –

+0

Имеются соответствующие преимущества производительности при вставке с большим количеством значений .. вы выполняете только команду вместо многих команд, подобных вашим строкам .. – scaisEdge

+0

@scaisEdge, который может быть ответом, если вы положите его ниже. Баллы славы и удачи. – Drew

ответ

1

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

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

например: в некоторых эмпирических тестах, вставляющих 1000 в цикл вставки, время выполнения составляло 1 минуту .. с вставкой партии результат времени равен 2 secs

+0

Thx для обмена scaisEdge – Drew

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