Ruby on Rails

パフォーマンス最適化

Database indexing、クエリ最適化、Bullet gem、rack-mini-profiler、並行処理/Puma、thread-safety、connection pool

26 面接問題·
Senior
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 を使用して関連を 1~2 件のクエリで読み込むことです。

4

関連を事前に読み込むことで N+1 問題を解決するには、どの ActiveRecord メソッドを使用しますか?

5

Rails のパフォーマンス最適化における Bullet gem の役割は何ですか?

+23 面接問題

次の面接に向けてRuby on Railsをマスター

すべての問題、flashcards、技術テスト、コードレビュー演習、面接シミュレーターにアクセス。

無料で始める