Upgrade to Pro — share decks privately, control downloads, hide ads and more …

O/Rマッパーの光と闇

kazuhira
January 19, 2024

 O/Rマッパーの光と闇

若手・学生サーバーサイドエンジニアLT会で発表した内容です

kazuhira

January 19, 2024
Tweet

More Decks by kazuhira

Other Decks in Technology

Transcript

  1. ボトルネックを探せ(掘り下げる)
 ➔ クエリいっぱいある?
 ◆ テーブルごとに1回だけ取得していてN+1問題ではない
 • が、後述のフルスキャンの一因である
 ➔ 実行計画は?
 ◆

    インデックスが使われておらずフルスキャン
 ➔ 引っ張りたいデータが大きくて、オブジェクト化してる?
 ◆ フェッチしたデータで使わないデータがたくさん
 • 本来出力するデータは100MB未満と試算
 @kazuhira_0001

  2. SQLをしゃべる ❏ 結果(全件指定)
 ❏ 【Before】
 ❏ タイムアウト
 ❏ 31クエリ(内、28クエリがフルスキャン)
 ❏

    【After】
 ❏ 10秒以内
 ❏ 1クエリ(急造のためフルスキャン一部あり)
 @kazuhira_0001

  3. 【SQL】 1. クエリを書く 2. クエリを投げる a. 必要なら値のバインドも 3. 返ってきたデータを オブジェクトにマッピングする

    4. 完了 【ActiveRecord】 1. モデルのメソッド呼ぶ 2. 完了 O/Rマッパーは友達
 単純なデータをオブジェクト化する実装が早い(例:Rails)
 @kazuhira_0001