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

ランダム処理を修正し、DBの負荷を下げた話

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for Keisuke Yamauchi Keisuke Yamauchi
April 12, 2024
33

 ランダム処理を修正し、DBの負荷を下げた話

Avatar for Keisuke Yamauchi

Keisuke Yamauchi

April 12, 2024
Tweet

Transcript

  1. 2 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 自己紹介 山内 啓輔

    やまうち  けいすけ 担当業務 カテゴリーページ、検索機能など 🍰おすすめスイーツ 元祖かぼちゃプリン 約1.2kg かぼちゃ感が強く、甘さが控えめで美味し い! 付属のカラメルをかけることで甘さもアップ カテゴリページ 検索機能
  2. 3 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 今日話す内容 1.  何が起きたのか

    2.  どういった処理なのか 3.  どういった対応をしたのか 4.  その対応でどうなったのか 5.  まとめ
  3. 4 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 今日話す内容 1.  何が起きたのか

    2.  どういった処理なのか 3.  どういった対応をしたのか 4.  その対応でどうなったのか 5.  まとめ
  4. 8 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 今日話す内容 1.  何が起きたのか

    2.  どういった処理なのか 3.  どういった対応をしたのか 4.  その対応でどうなったのか 5.  まとめ
  5. 9 © Cake.jp Co.Ltd. All Right Reserved.|Confidential どういった処理なのか ざっくり判断基準 ブックマークを元に、その商品とのおすすめ度を判断している

    ちょっと詳しく 対象の商品をブックマーク・購入している人がブックマークしている商品をおすすめの商品としている それを公開中の全商品分、夜間に行っている ※全商品 = 約8000商品、ブックマーク数 = 約130万件
  6. 12 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 今日話す内容 1.  何が起きたのか

    2.  どういった処理なのか 3.  どういった対応をしたのか 4.  その対応でどうなったのか 5.  まとめ
  7. 13 © Cake.jp Co.Ltd. All Right Reserved.|Confidential どういった対応をしたのか 対象を減らした ・過去のすべてデータを取るのではなく、過去

    1年に減らす ・10件以上ブックマークされているもののみ取得 5000件程度まで対象が減る
  8. 16 © Cake.jp Co.Ltd. All Right Reserved.|Confidential どういった対応をしたのか 対応まとめ ・検索対象を減らした

      ・過去のすべてデータを取るのではなく、過去 1年に減らす   ・10件以上ブックマークされているもののみ取得 ・ループ内での処理をやめる   ・ループ前にやっておける重い処理を事前に行った ・SQLでのランダム処理をやめた   ・負荷の高いORDER BY RAND()をやめ、アプリで行うようにした
  9. 17 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 今日話す内容 1.  何が起きたのか

    2.  どういった処理なのか 3.  どういった対応をしたのか 4.  その対応でどうなったのか 5.  まとめ
  10. 20 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 今日話す内容 1.  何が起きたのか

    2.  どういった処理なのか 3.  どういった対応をしたのか 4.  その対応でどうなったのか 5.  まとめ
  11. 21 © Cake.jp Co.Ltd. All Right Reserved.|Confidential まとめ 得られた知見 ・この機能が作られた当初(2020/06)は問題にはなっていなかったが、データ量が増えたことでパ

    フォーマンスの問題が露見した。 データの増加を見越して、負荷の高いクエリになっていないかどうかを意識してコードを書く必要があ る。 ・ループ内で行っている処理は、事前にまとめて行うことが可能かどうかを常に考える必要がある