Я создал API, используя Ruby on Rails. когда я вызываю конечную точку API для вставки более 1000 записей, она разбивается. В настоящее время я использую базу данных Mysql2
мой код
quantity.times do
User.create(first_name: "John")
end
где quantity
- это количество записей, которые нужно вставить, и это может быть любое число, например, 10000, 4000000.
может кто-нибудь предложить мне, как я могу сделать это очень эффективно, не нарушая работу моего сервера
items = []
quantity.times.each do |row|
items << User.new(name: "john")
end
User.import(items)
Просто взгляните на эти тесты, чтобы понять, насколько быстрее этот вариант. Вместо отдельных транзакций, Model.create
и вставок, которые Model.create
генерирует SQL, это обрабатывает его в одном запросе.
Рекомендации
попробуйте этот камень "activerecord-insert_many". В исходном коде найдите тесты, и вы можете увидеть, как их использовать.
Спасибо, Ajith
Я предлагаю вам использовать find_each и указать batch_size для его цикла.
Я думаю, что это предотвратит крах, если вы зациклируете огромное количество таких же, как ваш пример
Production
она не показывает никакого конкретного сообщения об ошибке. но сбой сервера, мой бэкэнд n Ruby on Rails и для внешнего интерфейса, я использую AngularJS