# 성능 최적화 (Ruby on Rails) > Database indexing, 쿼리 최적화, Bullet gem, rack-mini-profiler, 동시성/Puma, thread-safety, connection pool - 26 면접 질문 - Senior - [면접 질문: Ruby on Rails](https://sharpskill.dev/ko/technologies/ruby-on-rails/interview-questions.md) ## 1. 데이터베이스 컬럼에 index를 추가하는 주된 목적은 무엇인가요? **답변** index는 최적화된 데이터 구조(보통 B-tree)를 생성하여 테이블의 모든 행을 스캔하지 않도록 함으로써 검색 쿼리를 빠르게 합니다. index가 없으면 데이터베이스는 sequential scan을 수행하는데, 이는 큰 테이블에서 매우 느릴 수 있습니다. WHERE 절, ORDER BY 또는 조인에서 자주 사용되는 컬럼이 인덱싱의 이상적인 후보입니다. ## 2. Rails migration에서 user_id와 created_at 컬럼에 복합 index를 어떻게 생성하나요? **답변** add_index 메서드는 복합 index를 생성하기 위해 컬럼 배열을 받습니다. 컬럼 순서가 중요합니다. index는 먼저 user_id로, 그다음 created_at으로 필터링하는 쿼리에는 효율적이지만, created_at만으로 필터링하는 쿼리에는 효과가 없습니다. 복합 index는 컬럼을 왼쪽에서 오른쪽 순서로 사용하는 쿼리에 최적입니다. ## 3. ActiveRecord 맥락에서 N+1 문제란 무엇인가요? **답변** N+1 문제는 초기 쿼리가 N개의 레코드를 가져온 후, 각 레코드의 연관 데이터를 로드하기 위해 N개의 추가 쿼리가 실행될 때 발생합니다. 예를 들어, 100개의 posts를 로드한 후 작성자를 위해 100개의 개별 쿼리를 실행하는 경우입니다. 이 패턴은 쿼리 수를 배가시키고 성능을 심각하게 저하시킵니다. 해결책은 includes, preload 또는 eager_load를 사용하여 연관 데이터를 한두 개의 쿼리로 로드하는 것입니다. ## 23개 추가 질문 이용 가능 - 연관 데이터를 미리 로드하여 N+1 문제를 해결하려면 어떤 ActiveRecord 메서드를 사용하나요? - Rails 성능 최적화에서 Bullet gem의 역할은 무엇인가요? 무료로 가입하기: https://sharpskill.dev/ko/login ## 기타 Ruby on Rails 면접 주제 - [Ruby 기초](https://sharpskill.dev/ko/technologies/ruby-on-rails/interview-questions/ruby-basics.md): 25개 질문, Junior - [Ruby 객체 지향 프로그래밍](https://sharpskill.dev/ko/technologies/ruby-on-rails/interview-questions/ruby-oop.md): 20개 질문, Junior - [Rails 기초](https://sharpskill.dev/ko/technologies/ruby-on-rails/interview-questions/rails-fundamentals.md): 18개 질문, Junior - [Routing & Controllers](https://sharpskill.dev/ko/technologies/ruby-on-rails/interview-questions/routing-controllers.md): 22개 질문, Junior - [ActiveRecord 기초](https://sharpskill.dev/ko/technologies/ruby-on-rails/interview-questions/active-record-basics.md): 25개 질문, Junior - [Views와 ERB 템플릿](https://sharpskill.dev/ko/technologies/ruby-on-rails/interview-questions/views-erb-templates.md): 20개 질문, Junior - [ActiveRecord 연관 관계](https://sharpskill.dev/ko/technologies/ruby-on-rails/interview-questions/active-record-associations.md): 24개 질문, Mid-Level - [고급 ActiveRecord 쿼리](https://sharpskill.dev/ko/technologies/ruby-on-rails/interview-questions/active-record-queries.md): 28개 질문, Mid-Level - [Rails 폼](https://sharpskill.dev/ko/technologies/ruby-on-rails/interview-questions/rails-forms.md): 20개 질문, Mid-Level - [인증과 인가](https://sharpskill.dev/ko/technologies/ruby-on-rails/interview-questions/authentication-authorization.md): 22개 질문, Mid-Level - [최신 Asset Pipeline 및 프런트엔드](https://sharpskill.dev/ko/technologies/ruby-on-rails/interview-questions/rails-asset-pipeline.md): 18개 질문, Mid-Level - [Rails API 모드](https://sharpskill.dev/ko/technologies/ruby-on-rails/interview-questions/rails-api-mode.md): 20개 질문, Mid-Level - [RSpec를 사용한 테스트](https://sharpskill.dev/ko/technologies/ruby-on-rails/interview-questions/rails-testing-rspec.md): 24개 질문, Mid-Level - [ActiveJob & Background Jobs](https://sharpskill.dev/ko/technologies/ruby-on-rails/interview-questions/active-job-background-jobs.md): 20개 질문, Mid-Level - [ActionCable & WebSockets](https://sharpskill.dev/ko/technologies/ruby-on-rails/interview-questions/action-cable-websockets.md): 18개 질문, Mid-Level - [ActionMailer](https://sharpskill.dev/ko/technologies/ruby-on-rails/interview-questions/action-mailer.md): 18개 질문, Mid-Level - [ActiveStorage](https://sharpskill.dev/ko/technologies/ruby-on-rails/interview-questions/active-storage.md): 20개 질문, Mid-Level - [캐싱 전략](https://sharpskill.dev/ko/technologies/ruby-on-rails/interview-questions/caching-strategies.md): 20개 질문, Mid-Level - [고급 마이그레이션](https://sharpskill.dev/ko/technologies/ruby-on-rails/interview-questions/database-migrations-advanced.md): 20개 질문, Mid-Level - [Rails Engines 및 모듈식 앱](https://sharpskill.dev/ko/technologies/ruby-on-rails/interview-questions/rails-engines-modular-apps.md): 18개 질문, Senior - [Rails 디자인 패턴](https://sharpskill.dev/ko/technologies/ruby-on-rails/interview-questions/rails-design-patterns.md): 22개 질문, Senior - [Ruby 메타프로그래밍](https://sharpskill.dev/ko/technologies/ruby-on-rails/interview-questions/ruby-metaprogramming.md): 20개 질문, Senior - [Rails 보안](https://sharpskill.dev/ko/technologies/ruby-on-rails/interview-questions/rails-security.md): 22개 질문, Senior - [Rails에서의 GraphQL](https://sharpskill.dev/ko/technologies/ruby-on-rails/interview-questions/graphql-rails.md): 20개 질문, Senior - [배포 및 프로덕션](https://sharpskill.dev/ko/technologies/ruby-on-rails/interview-questions/rails-deployment-production.md): 20개 질문, Senior - [Monitoring & Logging](https://sharpskill.dev/ko/technologies/ruby-on-rails/interview-questions/monitoring-logging.md): 20개 질문, Senior - [Rails 업그레이드 전략](https://sharpskill.dev/ko/technologies/ruby-on-rails/interview-questions/rails-upgrade-strategies.md): 18개 질문, Senior --- Source: SharpSkill (https://sharpskill.dev), tech interview preparation for your real stack. HTML version of this page: https://sharpskill.dev/ko/technologies/ruby-on-rails/interview-questions/performance-optimization