
성능 최적화
Database indexing, 쿼리 최적화, Bullet gem, rack-mini-profiler, 동시성/Puma, thread-safety, connection pool
26 면접 질문·
Senior
1데이터베이스 컬럼에 index를 추가하는 주된 목적은 무엇인가요?
1
데이터베이스 컬럼에 index를 추가하는 주된 목적은 무엇인가요?
답변
index는 최적화된 데이터 구조(보통 B-tree)를 생성하여 테이블의 모든 행을 스캔하지 않도록 함으로써 검색 쿼리를 빠르게 합니다. index가 없으면 데이터베이스는 sequential scan을 수행하는데, 이는 큰 테이블에서 매우 느릴 수 있습니다. WHERE 절, ORDER BY 또는 조인에서 자주 사용되는 컬럼이 인덱싱의 이상적인 후보입니다.
2Rails migration에서 user_id와 created_at 컬럼에 복합 index를 어떻게 생성하나요?
2
Rails migration에서 user_id와 created_at 컬럼에 복합 index를 어떻게 생성하나요?
답변
add_index 메서드는 복합 index를 생성하기 위해 컬럼 배열을 받습니다. 컬럼 순서가 중요합니다. index는 먼저 user_id로, 그다음 created_at으로 필터링하는 쿼리에는 효율적이지만, created_at만으로 필터링하는 쿼리에는 효과가 없습니다. 복합 index는 컬럼을 왼쪽에서 오른쪽 순서로 사용하는 쿼리에 최적입니다.
3ActiveRecord 맥락에서 N+1 문제란 무엇인가요?
3
ActiveRecord 맥락에서 N+1 문제란 무엇인가요?
답변
N+1 문제는 초기 쿼리가 N개의 레코드를 가져온 후, 각 레코드의 연관 데이터를 로드하기 위해 N개의 추가 쿼리가 실행될 때 발생합니다. 예를 들어, 100개의 posts를 로드한 후 작성자를 위해 100개의 개별 쿼리를 실행하는 경우입니다. 이 패턴은 쿼리 수를 배가시키고 성능을 심각하게 저하시킵니다. 해결책은 includes, preload 또는 eager_load를 사용하여 연관 데이터를 한두 개의 쿼리로 로드하는 것입니다.
4
연관 데이터를 미리 로드하여 N+1 문제를 해결하려면 어떤 ActiveRecord 메서드를 사용하나요?
5
Rails 성능 최적화에서 Bullet gem의 역할은 무엇인가요?
+23 면접 질문
기타 Ruby on Rails 면접 주제
Ruby 기초
Junior
25개 질문Ruby 객체 지향 프로그래밍
Junior
20개 질문Rails 기초
Junior
18개 질문Routing & Controllers
Junior
22개 질문ActiveRecord 기초
Junior
25개 질문Views와 ERB 템플릿
Junior
20개 질문ActiveRecord 연관 관계
Mid-Level
24개 질문고급 ActiveRecord 쿼리
Mid-Level
28개 질문Rails 폼
Mid-Level
20개 질문인증과 인가
Mid-Level
22개 질문최신 Asset Pipeline 및 프런트엔드
Mid-Level
18개 질문Rails API 모드
Mid-Level
20개 질문RSpec를 사용한 테스트
Mid-Level
24개 질문ActiveJob & Background Jobs
Mid-Level
20개 질문ActionCable & WebSockets
Mid-Level
18개 질문ActionMailer
Mid-Level
18개 질문ActiveStorage
Mid-Level
20개 질문캐싱 전략
Mid-Level
20개 질문고급 마이그레이션
Mid-Level
20개 질문Rails Engines 및 모듈식 앱
Senior
18개 질문Rails 디자인 패턴
Senior
22개 질문Ruby 메타프로그래밍
Senior
20개 질문Rails 보안
Senior
22개 질문Rails에서의 GraphQL
Senior
20개 질문배포 및 프로덕션
Senior
20개 질문Monitoring & Logging
Senior
20개 질문Rails 업그레이드 전략
Senior
18개 질문