Symfony долго сохраняет в базу

Cтолкнулся с проблемой что symfony долго сохраняет в базу запросы. и каждый последующий запрос занимает больше времени. Задача состояла в том что надо сохранить больше 10 000 элементов в базу.

сначала код был такой

// сохраняем места

foreach ($seatarr['places'] as $seat) {
 Logger::savelog("memory_get_usage до ".memory_get_usage() / 1024 );
 $start = microtime(true);
 $seatrow = $this->getDoctrine()
 ->getRepository('AppBundle:Seats')
 ->findOneBy(
 array('ktvId' => $seat['id'])
 );
 $time = microtime(true) - $start;
 Logger::savelog("Время запроса поиск места по KTVID ".$time." сек");
 if (!$seatrow) {
 $start = microtime(true);
 $seatrow = new Seats();

$tmpzone = $this->getDoctrine()
 ->getRepository("AppBundle:Zones")
 ->findOneBy(
 array("ktvzoneId" => $seat['zone'])
 );

$seatrow->setKtvId($seat['id']);
 $seatrow->setRow(intval($seat['row']));
 $seatrow->setNum(intval($seat['num']));
 $seatrow->setKtvzoneId($seat['zone']);

$seatrow->setXc($seat['x']);
 $seatrow->setYc($seat['y']);
 $seatrow->setText($seat['text']);
 $seatrow->setRotate($seat['rotate']);
 $seatrow->setWidth($seat['width']);
 $seatrow->setHeight($seat['height']);
 $seatrow->setTemplate($seat['template']);
 $seatrow->setCreated($now);
 $seatrow->setHall($hall);
 $em->persist($seatrow);
 $em->flush();

$time = microtime(true) - $start;
 Logger::savelog("Время запроса сохранения данных seat ".$time." сек");

// сохраняем цену

$start = microtime(true);
 $pricerow = new Prices();
 $pricerow->setPrice($seat['price'][0]['value']);
 $pricerow->setCreated($now);
 $pricerow->setEvent($event);
 $pricerow->setSeat($seatrow);
 $pricerow->setKtvpriceId($seat['price'][0]['id']);

$em->persist($pricerow);
 $em->flush();

unset($seatrow);
 unset($pricerow);
 $time = microtime(true) - $start;
 Logger::savelog("Время запроса сохранения данных price ".$time." сек");

} 
 Logger::savelog("memory_get_usage после ".memory_get_usage() / 1024 );
 }

лог показывал что

каждый последующий запрос в базу выполнялся дольше чем предыдущий

2017-02-17 18:46:27 Время запроса поиск места по KTVID 0.0066571235656738 сек
2017-02-17 18:46:27 Время запроса сохранения данных seat 0.046684980392456 сек
2017-02-17 18:46:27 Время запроса сохранения данных price 0.044583082199097 сек
.....

2017-02-17 19:01:05 Время запроса поиск места по KTVID 0.0085780620574951 сек
2017-02-17 19:01:06 Время запроса сохранения данных seat 0.47397089004517 сек
2017-02-17 19:01:06 Время запроса сохранения данных price 0.42373895645142 сек

10000 мест ожидалось что будет идти 50 мин…
Причина такого поведения в том что $em->flush() выполняется очень долго. Так как по мимо сохранения он делает еще много чего. Решение, нужно убрать $em->flush() из цикла и добавить его в конец скрипта!