【Rails】 bullet을 사용하여 N+1 문제 해결
N+1 문제란?
N + 1 문제는 데이터베이스에서 데이터를 검색 할 때 많은 양의 SQL이 발행되어 성능이 저하되는 문제입니다. 이전에 N + 1 문제에 대해 전달하고 있으므로 신경이 쓰이는 분은 참조하십시오.
bullet이란?
N + 1 문제가 어디에 발생하고 있는지 알려주는 gem입니다.
공식 문서
도입 방법
아래 코드를 Gemfile에 추가합니다.
Gemfilegroup :development do
gem 'bullet'
end
$ bundle install
기본 설정
config/environments/development.rbRails.application.configure do
# ここから
config.after_initialize do
Bullet.enable = true
Bullet.alert = true
Bullet.bullet_logger = true
Bullet.console = true
# Bullet.growl = true デフォルトでコメントアウト
Bullet.rails_logger = true
Bullet.add_footer = true
end
# ここまでが追加。
end
(해설)
* Bullet.enable...Bullet gem 사용 가능
* Bullet.alert... 브라우저에 JS 경고 표시
* Bullet.bullet_logger...bullet 로그 파일 표시
* Bullet.console...console.log에 경고
* Bullet.growl...Growl이 설치되면 팝업 경고 표시
* Bullet.rails_logger...rails 로그에 경고 표시
* Bullet.add_footer... 화면 왼쪽 하단에 메시지 표시
N+1 문제 감지
실제로 사용하면 아래와 같은 느낌으로 경고가 표시.
정중하게 수정 방법까지 기재
표시된 대로 컨트롤러에 includes[:user])로 수정
#before
@chats = Chat.all
#after
@chats = Chat.includes(:user)
[Before]
[After]
includes를 지정하여 관련을 함께 검색하여 최소 쿼리 횟수를 줄였습니다.
마지막으로
N+1 문제를 스스로 눈치채지 못하는 사람을 위해서 편리하다고 생각합니다만, 역시 설계, 개발로 N+1 문제가 생기지 않기 위해서도 SQL에 강해질 필요가 있다고 느꼈습니다. 이번에는 SQL 쿼리의 이미지를 남겨야하는 곳을 실망하고 죄송합니다
Reference
이 문제에 관하여(【Rails】 bullet을 사용하여 N+1 문제 해결), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kinoshitaken123/items/16c9e1e4b06a87d6be69
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
N + 1 문제가 어디에 발생하고 있는지 알려주는 gem입니다.
공식 문서
도입 방법
아래 코드를 Gemfile에 추가합니다.
Gemfilegroup :development do
gem 'bullet'
end
$ bundle install
기본 설정
config/environments/development.rbRails.application.configure do
# ここから
config.after_initialize do
Bullet.enable = true
Bullet.alert = true
Bullet.bullet_logger = true
Bullet.console = true
# Bullet.growl = true デフォルトでコメントアウト
Bullet.rails_logger = true
Bullet.add_footer = true
end
# ここまでが追加。
end
(해설)
* Bullet.enable...Bullet gem 사용 가능
* Bullet.alert... 브라우저에 JS 경고 표시
* Bullet.bullet_logger...bullet 로그 파일 표시
* Bullet.console...console.log에 경고
* Bullet.growl...Growl이 설치되면 팝업 경고 표시
* Bullet.rails_logger...rails 로그에 경고 표시
* Bullet.add_footer... 화면 왼쪽 하단에 메시지 표시
N+1 문제 감지
실제로 사용하면 아래와 같은 느낌으로 경고가 표시.
정중하게 수정 방법까지 기재
표시된 대로 컨트롤러에 includes[:user])로 수정
#before
@chats = Chat.all
#after
@chats = Chat.includes(:user)
[Before]
[After]
includes를 지정하여 관련을 함께 검색하여 최소 쿼리 횟수를 줄였습니다.
마지막으로
N+1 문제를 스스로 눈치채지 못하는 사람을 위해서 편리하다고 생각합니다만, 역시 설계, 개발로 N+1 문제가 생기지 않기 위해서도 SQL에 강해질 필요가 있다고 느꼈습니다. 이번에는 SQL 쿼리의 이미지를 남겨야하는 곳을 실망하고 죄송합니다
Reference
이 문제에 관하여(【Rails】 bullet을 사용하여 N+1 문제 해결), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kinoshitaken123/items/16c9e1e4b06a87d6be69
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
group :development do
gem 'bullet'
end
$ bundle install
config/environments/development.rb
Rails.application.configure do
# ここから
config.after_initialize do
Bullet.enable = true
Bullet.alert = true
Bullet.bullet_logger = true
Bullet.console = true
# Bullet.growl = true デフォルトでコメントアウト
Bullet.rails_logger = true
Bullet.add_footer = true
end
# ここまでが追加。
end
(해설)
* Bullet.enable...Bullet gem 사용 가능
* Bullet.alert... 브라우저에 JS 경고 표시
* Bullet.bullet_logger...bullet 로그 파일 표시
* Bullet.console...console.log에 경고
* Bullet.growl...Growl이 설치되면 팝업 경고 표시
* Bullet.rails_logger...rails 로그에 경고 표시
* Bullet.add_footer... 화면 왼쪽 하단에 메시지 표시
N+1 문제 감지
실제로 사용하면 아래와 같은 느낌으로 경고가 표시.
정중하게 수정 방법까지 기재
표시된 대로 컨트롤러에 includes[:user])로 수정
#before
@chats = Chat.all
#after
@chats = Chat.includes(:user)
[Before]
[After]
includes를 지정하여 관련을 함께 검색하여 최소 쿼리 횟수를 줄였습니다.
마지막으로
N+1 문제를 스스로 눈치채지 못하는 사람을 위해서 편리하다고 생각합니다만, 역시 설계, 개발로 N+1 문제가 생기지 않기 위해서도 SQL에 강해질 필요가 있다고 느꼈습니다. 이번에는 SQL 쿼리의 이미지를 남겨야하는 곳을 실망하고 죄송합니다
Reference
이 문제에 관하여(【Rails】 bullet을 사용하여 N+1 문제 해결), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kinoshitaken123/items/16c9e1e4b06a87d6be69
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
#before
@chats = Chat.all
#after
@chats = Chat.includes(:user)
N+1 문제를 스스로 눈치채지 못하는 사람을 위해서 편리하다고 생각합니다만, 역시 설계, 개발로 N+1 문제가 생기지 않기 위해서도 SQL에 강해질 필요가 있다고 느꼈습니다. 이번에는 SQL 쿼리의 이미지를 남겨야하는 곳을 실망하고 죄송합니다
Reference
이 문제에 관하여(【Rails】 bullet을 사용하여 N+1 문제 해결), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kinoshitaken123/items/16c9e1e4b06a87d6be69텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)