Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
MySQLで高トラフィックに立ち向かう
Search
takashabe
January 15, 2015
Technology
1.9k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
MySQLで高トラフィックに立ち向かう
社内LT大会#2で話した内容です。
takashabe
January 15, 2015
More Decks by takashabe
See All by takashabe
より良いターミナルでの生活を求めて
takashabe
0
73
OpenCensusでcustom context propagationとexporterを書いた話 / OpenCensus with custom context propagation and exporter
takashabe
0
1.9k
pubsub with concurrent
takashabe
1
970
社内ISUCONを開催した話
takashabe
0
1.8k
ISUCON大反省会
takashabe
0
2k
gitのブランチ戦略
takashabe
8
6.1k
サルでもわかるgit
takashabe
0
1.7k
playで複数DBする
takashabe
0
1.6k
GitHubの良さ
takashabe
2
2.3k
Other Decks in Technology
See All in Technology
AIエージェントの自己改善をどう設計するか / How to Design Self-Improvement for AI Agents
22mi
25
16k
品質と信頼性を地続きにする
grimoh
1
780
積み重なった技術負債への挑戦 〜初手としての全社ゴト化〜
techtekt
PRO
0
1.3k
絵ではじめるKubernetesセキュリティ
aoi1
4
670
10Xに技術的負債をもたらした「2つの境界の歪み」その構造と解消への営み
10xinc
0
2.1k
AIは推し活である。
kurazuuuuuu
1
410
Vibe Coding で作ったプロダクトをどう安全に動かすか / How to Safely Run Products Built with Vibe Coding
glidenote
0
160
「守り」で活用するオンデバイスLLM 〜写ってはいけないを総力戦で防ぐ〜 / iOSDC Japan 2026
nakamuuu
0
170
俺の仕事は AIに奪われないし、たぶんその BIも要らない
hikaruri
0
520
Cloudflare Workers 向けアプリを C# で構築する ~WASM Native AOT への道~
nenonaninu
1
360
TinyGo 開発サイクルを高速化する:Go で作るエミュレータ入門
zozotech
PRO
1
750
The Knowledge Spine: A Machine-Executable Ontology for Governed Marketing Activation
vananth22
0
100
Featured
See All Featured
Automating Front-end Workflow
addyosmani
1369
210k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
320
The Language of Interfaces
destraynor
162
27k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.2k
A designer walks into a library…
pauljervisheath
211
25k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
Thoughts on Productivity
jonyablonski
76
5.4k
Optimizing for Happiness
mojombo
378
71k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
250
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
910
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
730
Transcript
MySQLで高トラフィックに立ち向かう LT大会#2 Takashi Abe Mynet Inc. 01/15 2015
前提 InnoDB MySQL以外の話もちょっとします 特定のサービス特性にフォーカスするものではありま せんが、ソーシャルゲームをベースにして話します
DBサーバへのトラフィック 参照系クエリ select 更新系クエリ insert, update, delete
よくある最小構成
参照系への負荷対策
スケールアップ 金の弾丸 ioDrive
スケールアウト スレーブの追加 MySQLのレプリケーション機能でマスタのデータを複製する キャッシュレイヤの追加 memcached, RedisなどのKVSを利用する 参照性能はRDBに比べて桁違いに良い 参照頻度の高いデータをメインにキャッシュに乗せる カードステータスなどのマスタデータ ユーザのニックネーム
スケールアウトした構成
更新系への負荷対策
スケールアップ 金の弾丸 ioDrive メモリガン積み インメモリならioDriveと同等以上の性能が出る Amazon RDSの場合最大244GBまで拡張可能
スケールアウト マスタの分割 DB、テーブルを複数サーバに分割し、クエリに応じて 動的に問合せ先サーバを選択する 分割方式より垂直分割/水平分割がある アプリケーション側での実装が多い
垂直分割
垂直分割 関係性の薄いデータをそれぞれ異なるDBに分散 接続先DBを変えるだけなので大して実装コストはそれ ほどない、はず (例) ユーザデータ系 ログ系 マスタデータ系
垂直分割イメージ
水平分割
水平分割 複数サーバで同じDBを用意し、キーとなるデータによっ て格納先を分割する DB名から一意に格納先のテーブルを特定出来ないの でサーバ振り分けの実装が重くなりがち キーの余剰、ハッシュ値などによって分割を行う
水平分割 分割例 userテーブル、user_idをキーにして分割する user_idを100で割った余剰をテーブル名のサフィック スにする user_00 ~ user_99のテーブルに分割可能 サーバA: user_00
~ user_49 サーバB: user_50 ~ user_99
水平分割イメージ
スケールアウトした構成
分割するタイミング 設計、制約がきついため途中から分割しようとするのは つらい スモールスタートする場合、最初から分割しておいて分 割された各DBを1台に格納しておく戦略もアリ 分割されてさえいれば、後から別サーバに乗せること も容易になる
注意点 異なるDBに格納されるのでjoinが使えなくなる 水平分割の場合 分割すればするほどパフォーマンス低下 串刺しで検索したい時など トランザクションが煩雑になる
まとめ
参照系 マスタスレーブ+KVSの鉄板構成 後からでもスケールアウトは比較的容易 更新系 垂直、水平分割でマスタへのトラフィックを分散させる 後からスケールアウトするのがつらいのでプロジェク トの始めに方針を検討する