N+1 문제의 실험
include?N+1 문제 실험을 해보도록 하겠습니다.
이번 사용자 모델 투고 이벤트
그 투고의 일람표를 얻은 시간은include?측정 방법의 유무가 얼마나 다른가
이번 목표야.
필요한 물건
1) seed를 사용하여 1000개의 이벤트 발표
db/seed1000.times do |index|
Event.create(:eventname =>'実験サンプル', :when => '10/14 9:00',:where => 'ゴンザのパソコン',:user_id => '1',:text => 'N+1問題解決しよう!')
end
2) Gemfile rack-mini-profiler를 사용하여 처리 속도 측정
Gemfilegem 'rack-mini-profiler', require: false
config/initializers/rack_mini_profiler.rb 파일 만들기
config/initializers/rack_mini_profiler.rbif Rails.env.development?
require 'rack-mini-profiler'
# initialization is skipped so trigger it
Rack::MiniProfilerRails.initialize!(Rails.application)
end
지금 저희가 준비가 됐습니다.
include?방법이 없을 때
app/controller/event_controller.rbclass EventsController < ApplicationController
#何もしない場合
def index
#投稿された全イベントを最新順に取得
@events = Event.all.order("id DESC")
end
렌더링: 이벤트 / index 3744.9에서 알 수 있어요. 3744.9 정말 좋아요.
@events = Event.all.order("id DESC").includes(:user)
include?방법이 있습니까?
app/controller/event_controller.rbclass EventsController < ApplicationController
#include?メソッドありの場合
def index
#投稿された全イベントを最新順に取得
@events = Event.all.order("id DESC").includes(:user)
end
Rendering: 이벤트 / index 1164.4라고 쓰여 있는데 대략 처리가 3배 이상 됐어요!
투고 수가 10000건을 넘었습니다, include?만약 네가 없는 상황에서 모든 데이터를 얻고 싶다면, 너는 매우 놀랄 것이다.
다른 개선해야 할 점이 있지만 이번 실험은 나로 하여금 N+1문제를 확실하게 느끼게 했다!
그렇다면
Reference
이 문제에 관하여(N+1 문제의 실험), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/gonza_kato_atsushi/items/4c497480ca3845299be4
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
1000.times do |index|
Event.create(:eventname =>'実験サンプル', :when => '10/14 9:00',:where => 'ゴンザのパソコン',:user_id => '1',:text => 'N+1問題解決しよう!')
end
gem 'rack-mini-profiler', require: false
if Rails.env.development?
require 'rack-mini-profiler'
# initialization is skipped so trigger it
Rack::MiniProfilerRails.initialize!(Rails.application)
end
app/controller/event_controller.rb
class EventsController < ApplicationController
#何もしない場合
def index
#投稿された全イベントを最新順に取得
@events = Event.all.order("id DESC")
end
렌더링: 이벤트 / index 3744.9에서 알 수 있어요. 3744.9 정말 좋아요.
@events = Event.all.order("id DESC").includes(:user)
include?방법이 있습니까?
app/controller/event_controller.rbclass EventsController < ApplicationController
#include?メソッドありの場合
def index
#投稿された全イベントを最新順に取得
@events = Event.all.order("id DESC").includes(:user)
end
Rendering: 이벤트 / index 1164.4라고 쓰여 있는데 대략 처리가 3배 이상 됐어요!
투고 수가 10000건을 넘었습니다, include?만약 네가 없는 상황에서 모든 데이터를 얻고 싶다면, 너는 매우 놀랄 것이다.
다른 개선해야 할 점이 있지만 이번 실험은 나로 하여금 N+1문제를 확실하게 느끼게 했다!
그렇다면
Reference
이 문제에 관하여(N+1 문제의 실험), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/gonza_kato_atsushi/items/4c497480ca3845299be4
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
class EventsController < ApplicationController
#include?メソッドありの場合
def index
#投稿された全イベントを最新順に取得
@events = Event.all.order("id DESC").includes(:user)
end
Reference
이 문제에 관하여(N+1 문제의 실험), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/gonza_kato_atsushi/items/4c497480ca3845299be4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)