Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
約10年続く
スマホゲームアプリの
DB負荷と向き合う話
2021/10/18 【excite × iXIT】Tech Talk #1 Jun Ebina
自己紹介
• 蝦名 淳(えびな じゅん)
• iXIT株式会社
• サーバーサイドエンジニア
• PHP,Go
• 今のサービスに携わってそろそろ1年?
本題のDB負荷
状況
• PHP + MySQL
• 今年の年始から特にDB負荷が高まっている
• 毎日のイベントの開始時間にアクセスが集中
ユーザーがアプリで遊びにくい状況になっている
アプローチ
負荷の原因を探ろうとした
• アクセス集中?
• 最近リリースした機能が重い?
負荷が高まる前後のアクセス数とアクセス先URLを確認
(2021/12/23 負荷上昇前) (2021/01/20 負荷上昇前)
• アクセス数は増えているように見える
• しかし原因とまでは言い切れない
• イベントの設定等にもこれと言った変更がない
方向性を変えて調査を進めることに…
重いクエリを探ろうとした
• 0.1s以上かかっているSQLをSlowQueryLogに出している
• イベント時に特に重くなっているSQLを調査
SlowQueryLogを重い順にソート
上から対応する
対策
SQLをチューニングする
• 対応が難しいSQLは置いといて、まずはすぐ出来るものから…
• インデックスを見直す
• WHERE条件を追加することによって、取得件数を減らす
• OR → UNIONにする
• COUNT(*) → COUNT...
古いレコードを削除する
• 一部のテーブルの2ヶ月以上前のレコードは削除することに
• バッチを作成して数週間かけて削除
• 現在は1日に一回古いレコードを削除している
 …依然として負荷は高い
このSQLが重い
• 同処理内で3回も実行されている
• NOT IN句で除外するデータが500個ほどある上に、ユーザごと
に内容が異なる
• 数万件もありうる取得結果に対してORDER BY rand() LIMIT
問題のSQLについて
対応
• 該当のデータ取得専用テーブルを用意することにした
• あらかじめ条件を絞ったものを格納し、毎度のWHEREを簡素に
• JOINをなくした
• 専用テーブルには外部キーを格納、詳細情報は別途取得
… … …まだ負荷が高い
続、SQLチューニング
• INDEXが使用されていないSQL
• たくさん参照されているので塵積になっている?
INDEXを作成
するとやっと負荷に改善が見られた!
!!
現時点での所感
• AccessLog,SlowQueryLogを取得できることが大前提
• 一度負荷が高まってしまうと対応は大変
• 多角的な調査が必要となり、対応には時間が必要
• 「負荷の原因」自体を特定するのは難しい
• サービスが続く限り対策は続く
ありがとうございました!
Upcoming SlideShare
Loading in …5
×

of

約10年続くスマホゲームアプリのDB負荷と向き合う話 Slide 1 約10年続くスマホゲームアプリのDB負荷と向き合う話 Slide 2 約10年続くスマホゲームアプリのDB負荷と向き合う話 Slide 3 約10年続くスマホゲームアプリのDB負荷と向き合う話 Slide 4 約10年続くスマホゲームアプリのDB負荷と向き合う話 Slide 5 約10年続くスマホゲームアプリのDB負荷と向き合う話 Slide 6 約10年続くスマホゲームアプリのDB負荷と向き合う話 Slide 7 約10年続くスマホゲームアプリのDB負荷と向き合う話 Slide 8 約10年続くスマホゲームアプリのDB負荷と向き合う話 Slide 9 約10年続くスマホゲームアプリのDB負荷と向き合う話 Slide 10 約10年続くスマホゲームアプリのDB負荷と向き合う話 Slide 11 約10年続くスマホゲームアプリのDB負荷と向き合う話 Slide 12 約10年続くスマホゲームアプリのDB負荷と向き合う話 Slide 13 約10年続くスマホゲームアプリのDB負荷と向き合う話 Slide 14 約10年続くスマホゲームアプリのDB負荷と向き合う話 Slide 15 約10年続くスマホゲームアプリのDB負荷と向き合う話 Slide 16 約10年続くスマホゲームアプリのDB負荷と向き合う話 Slide 17 約10年続くスマホゲームアプリのDB負荷と向き合う話 Slide 18 約10年続くスマホゲームアプリのDB負荷と向き合う話 Slide 19 約10年続くスマホゲームアプリのDB負荷と向き合う話 Slide 20
Upcoming SlideShare
What to Upload to SlideShare
Next
Download to read offline and view in fullscreen.

0 Likes

Share

Download to read offline

約10年続くスマホゲームアプリのDB負荷と向き合う話

Download to read offline

約10年続くスマホゲームアプリのDB負荷改善を行なったので、その対応の流れをお話しました。
具体的な対応内容と言うよりは、「何をやったか」を時系列に沿って発表しました。

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all
  • Be the first to like this

約10年続くスマホゲームアプリのDB負荷と向き合う話

  1. 1. 約10年続く スマホゲームアプリの DB負荷と向き合う話 2021/10/18 【excite × iXIT】Tech Talk #1 Jun Ebina
  2. 2. 自己紹介 • 蝦名 淳(えびな じゅん) • iXIT株式会社 • サーバーサイドエンジニア • PHP,Go • 今のサービスに携わってそろそろ1年?
  3. 3. 本題のDB負荷
  4. 4. 状況 • PHP + MySQL • 今年の年始から特にDB負荷が高まっている • 毎日のイベントの開始時間にアクセスが集中 ユーザーがアプリで遊びにくい状況になっている
  5. 5. アプローチ
  6. 6. 負荷の原因を探ろうとした • アクセス集中? • 最近リリースした機能が重い? 負荷が高まる前後のアクセス数とアクセス先URLを確認 (2021/12/23 負荷上昇前) (2021/01/20 負荷上昇前)
  7. 7. • アクセス数は増えているように見える • しかし原因とまでは言い切れない • イベントの設定等にもこれと言った変更がない 方向性を変えて調査を進めることに…
  8. 8. 重いクエリを探ろうとした • 0.1s以上かかっているSQLをSlowQueryLogに出している • イベント時に特に重くなっているSQLを調査
  9. 9. SlowQueryLogを重い順にソート 上から対応する
  10. 10. 対策
  11. 11. SQLをチューニングする • 対応が難しいSQLは置いといて、まずはすぐ出来るものから… • インデックスを見直す • WHERE条件を追加することによって、取得件数を減らす • OR → UNIONにする • COUNT(*) → COUNT(id) • 使われないカラム、使われない条件を見直す 依然として負荷は高い
  12. 12. 古いレコードを削除する • 一部のテーブルの2ヶ月以上前のレコードは削除することに • バッチを作成して数週間かけて削除 • 現在は1日に一回古いレコードを削除している  …依然として負荷は高い
  13. 13. このSQLが重い
  14. 14. • 同処理内で3回も実行されている • NOT IN句で除外するデータが500個ほどある上に、ユーザごと に内容が異なる • 数万件もありうる取得結果に対してORDER BY rand() LIMIT 問題のSQLについて
  15. 15. 対応 • 該当のデータ取得専用テーブルを用意することにした • あらかじめ条件を絞ったものを格納し、毎度のWHEREを簡素に • JOINをなくした • 専用テーブルには外部キーを格納、詳細情報は別途取得 … … …まだ負荷が高い
  16. 16. 続、SQLチューニング • INDEXが使用されていないSQL • たくさん参照されているので塵積になっている? INDEXを作成 するとやっと負荷に改善が見られた!
  17. 17. !!
  18. 18. 現時点での所感
  19. 19. • AccessLog,SlowQueryLogを取得できることが大前提 • 一度負荷が高まってしまうと対応は大変 • 多角的な調査が必要となり、対応には時間が必要 • 「負荷の原因」自体を特定するのは難しい • サービスが続く限り対策は続く
  20. 20. ありがとうございました!

約10年続くスマホゲームアプリのDB負荷改善を行なったので、その対応の流れをお話しました。 具体的な対応内容と言うよりは、「何をやったか」を時系列に沿って発表しました。

Views

Total views

139

On Slideshare

0

From embeds

0

Number of embeds

114

Actions

Downloads

0

Shares

0

Comments

0

Likes

0

×