Самый эффективный способ вставить данные в БД? Подготовленные операторы, массовая загрузка или несколько операторов вставки? - PullRequest
1 голос
/ 22 марта 2012

Я пытаюсь вставить огромное количество данных в базу данных, и я хочу, чтобы это было наиболее эффективным способом.Теперь я храню свои объекты в массиве списков, и когда размер этого списка становится равным 5000, я перебираю все элементы и создаю одну вставку mysql с несколькими значениями, а затем вызываю функцию executeUpdate ().Мне интересно, есть ли более быстрый способ сделать это, например, вместо того, чтобы хранить данные в массиве, я могу создать локальный файл CSV и использовать LOAD DATA LOCAL INFILE один раз, или я могу сделать подготовленный оператор, все еще используяArrayList.Можете ли вы посоветовать мне, какой из них лучше или есть другие способы сделать это?

Спасибо.

1 Ответ

0 голосов
/ 17 апреля 2012
  • Для innodb: используйте транзакцию, чтобы сделать все / многие из ваших вставок в качестве первой оптимизации. Это может привести к огромному приросту производительности и уже может быть достаточным
  • LOAD DATA ... тоже очень хороший вариант. Это также будет делать все в рамках транзакции и разумно использовать вашу пропускную способность.
  • Вы можете вставить несколько значений в одну команду sql, например:

    INSERT INTO talbe_blubb (col_a,col_b) VALUES (1,3), (2,2);
    

Я не уверен, но не думаю, что подготовленные операторы могут получить какое-либо преимущество в случае простых вставок в таблицу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...