EC2에서 insert 700만 건
하고 싶은 일
컨디션
미리 준비하다
docker-compose.내용변경↓
version: '3'
services:
db:
image: mysql:5.7.34
command: --max_allowed_packet=536870912
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
ports:
- "4306:3306"
web:
build: .
command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
environment:
TZ: Asia/Tokyo
volumes:
- .:/test
ports:
- "3000:3000"
depends_on:
- db
docker의setting↓ 변경
local 방식으로 실행
# frozen_string_literal: true
require "csv"
def insert_all_test
array = []
CSV.foreach("db/test1.csv", headers: true) do |row|
array << {
name: row["name"],
created_at: Time.current,
updated_at: Time.current
}
end
User.insert_all array
array = []
CSV.foreach("db/test2.csv", headers: true) do |row|
array << {
name: row["name"],
created_at: Time.current,
updated_at: Time.current
}
end
User.insert_all array
end
insert_all_test
insert_all
DB에 순환 insert_all_test
에서 이 def$ rails db:seed
EC2 사전 준비
DB가 RDS인 경우
max_allowed_packet
(이번에는 512MB)EC2 실행
$ rails db:seed RAILS_ENV=production
계획:t3.smill의 경우
계획:t2.마이크로의 경우
Reference
이 문제에 관하여(EC2에서 insert 700만 건), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sdk-quadra/items/2680f899290c07bacc60텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)