У меня есть текстовый файл ~6 ГБ, который мне нужно проанализировать, а затем сохранить. При «разборе» я читаю строку из файла (обычно 2000 символов ), создаю объект Car -из строки и позже сохраняю его.
Я использую шаблон производителя-потребителя для синтаксического анализа и сохранения и задаюсь вопросом, имеет ли какое-то значение (по соображениям производительности )сохранять один объект за раз или 1000 (или любое другое количество )в один коммит?
На данный момент мне требуется >2 часа, чтобы сохранить все (3 миллиона строк )и мне кажется, что это слишком много времени (или я могу ошибаться ).
В настоящее время я занимаюсь этим:
public void persistCar(Car car) throws Exception
{
try
{
carDAO.beginTransaction(); //get hibernate session...
//do all save here.
carDAO.commitTransaction(); // commit the session
}catch(Exception e)
{
carDAO.rollback();
e.printStackTrace();
}
finally
{
carDAO.close();
}
}
Прежде чем вносить какие-либо изменения в дизайн, мне было интересно, есть ли причина, по которой этот дизайн лучше (или нет ), и если да, то какой должен быть размер автомобиля ()? Кроме того, считается ли открытие/закрытие сеанса дорогим?
public void persistCars(List<Car> cars) throws Exception
{
try
{
carDAO.beginTransaction(); //get hibernate session...
for (Car car : cars)
//do all save here.
carDAO.commitTransaction(); // commit the session
}catch(Exception e)
{
carDAO.rollback();
e.printStackTrace();
}
finally
{
carDAO.close();
}
}