Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
コネクションをピン留めさせずに SELECTクエリのタイムアウトを設定した話
Search
コドモン開発チーム
August 09, 2026
Technology
14
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
コネクションをピン留めさせずに SELECTクエリのタイムアウトを設定した話
コドモン開発チーム
August 09, 2026
More Decks by コドモン開発チーム
See All by コドモン開発チーム
AI時代のPHP開発にASTクエリツール で コードベースの地図を作る / ast-query-tool-php-codebase-map
codmoninc
0
9
コドモンに入社してAI活用により、 設計がより重要だと感じた背景
codmoninc
0
35
実装・設計だけでなく、運用・保守にもAIを広げてみた / We Took AI Beyond Coding and Into Operations and Maintenance
codmoninc
0
24
AIが無かった頃の素敵な出会いの話
codmoninc
1
390
5分で問診!Composer セキュリティ健康診断
codmoninc
0
890
アラート疲れからの脱却 - リソースタグで仕分けるSlack通知戦略 / Breaking Free from Alert Fatigue – A Slack Notification Strategy Using Resource Tags for Routing
codmoninc
0
45
SREに優しいTerraform構成 modulesとstateの組み方 / terraform-modules-state-for-sre
codmoninc
0
400
モノリスなプロダクトの「ほどよい」リプレイス戦略 / A "Just Right" Replacement Strategy for Monolithic Products
codmoninc
0
290
Don't Just Patch — MOTTAINAI! Learn Security from Laravel CVE Diffs
codmoninc
0
270
Other Decks in Technology
See All in Technology
モバイルアプリ開発概論2026
recruitengineers
PRO
3
480
認知負荷をGemini で溶かす — GKE 基盤「Orbit」における AI エージェントの実践
sansantech
PRO
1
260
初めてのGitHub Actions / GitHub Actions at First
tooppoo
0
150
20260807_第6回_関東kaggler会LT_claw系bot xangiと始める、"寂しくない" kaggle
sugupoko
0
180
20260804_Q4AzureUpdateBite_FabricDataAgentの精度を高める設計.pdf
matayuuu
1
110
Software Supply Chain Attackからクラウド環境を守るためにできること
lhazy
2
210
【CEDEC2026】専門性の高いデフォルメチームが挑んだ人材育成戦略 〜Cygames Academiaの企画から実施まで〜
cygames
PRO
0
520
Eight Engineering Unit 紹介資料
sansan33
PRO
3
8.1k
修正PRを食べてレビュースキルが賢くなる:Claude Codeによる自己改善サイクル
yuyaumetsu
5
1.3k
toio・myCobotでフィジカルAIっぽいことを行うための検討(とりあえず調査) / フィジカルAI LT(IoTLTによる開催)
you
PRO
0
300
もう一度考える SRE チームの作り方・育て方 / Rethinking SRE #1: Building and Growing SRE Teams
rrreeeyyy
6
1k
今こそ聞きたいソフトウェア設計 ドメイン駆動設計再入門
masuda220
PRO
17
6.5k
Featured
See All Featured
Raft: Consensus for Rubyists
vanstee
141
7.6k
Are puppies a ranking factor?
jonoalderson
1
3.8k
Six Lessons from altMBA
skipperchong
29
4.4k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.3k
Statistics for Hackers
jakevdp
799
230k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.5k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
420
Context Engineering - Making Every Token Count
addyosmani
9
1k
ラッコキーワード サービス紹介資料
rakko
1
4.3M
Faster Mobile Websites
deanohume
310
32k
Into the Great Unknown - MozCon
thekraken
41
2.7k
Transcript
PHPカンファレンス2026 リジェクトコン&アフターイベント コネクションをピン留めさせずに SELECTクエリのタイムアウトを設定した話 株式会社コドモン プロダクト開発部 村松 遼 2026年08月06日
自己紹介 村松 遼 むらまつ りょう 経歴 2023年に新卒でコドモンにジョインしました。 請求関連機能チームを経て、現在はDBの負荷対策に取り組んでいます。 最近はりゅうじのバズレシピをもとに自炊にチャレンジしてます! 2023.04
コドモンに新卒エンジニアとして入社 2024.06 テーブル解体チームにJOIN 2
こんなプロダクトを開発しています すべての先生に 子どもと向き合う 時間と心のゆとりを メインプロダクトは、保育・教育施設向けWebアプリケーション。 保護者と施設のやり取りを支えるモバイルアプリケーションや、施設職員向けモバイル版 アプリケーション、外部サービスと連携するAPIなども開発しています。 3
4
いきなりですが 5
スロークエリありますか...? 6
弊社はあります💪 7
たまに急に発生するスロークエリも... 8
最悪の場合、DB負荷でサービス停止に😱 9
そんな未来は避けたい 10
そんなときの救世主👼 11
max_execution_time (クエリタイムアウト) 12
クエリタイムアウトを設定して DB負荷を未然に防ぐお話 (MySQL) 13
今日話すこと 1 クエリタイムアウトについて 2 設定する際の落とし穴 3 コドモンでどうしてる? 14
今日話すこと 1 クエリタイムアウトについて 2 設定する際の落とし穴 3 コドモンでどうしてる? 15
1. クエリタイムアウトについて • max_execution_timeって?? CONFIDENTIAL - © 2022 CoDMON Inc.
16 16
1. クエリタイムアウトについて • max_execution_timeって?? →設定値を越える長時間のクエリは3024エラーで中断される CONFIDENTIAL - © 2022 CoDMON
Inc. 17 17
1. クエリタイムアウトについて • max_execution_timeって?? →設定値を越える長時間のクエリは3024エラーで中断される →読み取り専用の SELECT 文にだけ適用される CONFIDENTIAL -
© 2022 CoDMON Inc. 18 18
1. クエリタイムアウトについて • max_execution_timeって?? →設定値を越える長時間のクエリは3024エラーで中断される →読み取り専用の SELECT 文にだけ適用される →MySQL 5.7
から利用できる設定項目 CONFIDENTIAL - © 2022 CoDMON Inc. 19 19
1. クエリタイムアウトについて • max_execution_timeの設定方法 CONFIDENTIAL - © 2022 CoDMON Inc.
20 20
1. クエリタイムアウトについて • max_execution_timeの設定方法 → SET SESSION max_execution_time = 5000;
CONFIDENTIAL - © 2022 CoDMON Inc. 21 21
1. クエリタイムアウトについて • max_execution_timeの設定方法 → SET SESSION max_execution_time = 5000;
→ SELECT /*+ MAX_EXECUTION_TIME(5000) */ * FROM table_name ~~; CONFIDENTIAL - © 2022 CoDMON Inc. 22 22
1. クエリタイムアウトについて これで長時間実行される クエリは撲滅!! CONFIDENTIAL - © 2022 CoDMON Inc.
23 23
1. クエリタイムアウトについて しかし実は落とし穴が😱 CONFIDENTIAL - © 2022 CoDMON Inc. 24
24
今日話すこと 1 クエリタイムアウトについて 2 設定する際の落とし穴 3 コドモンでどうしてる? 25
2. 設定する際の落とし穴 • max_execution_timeの設定方法 → SET SESSION max_execution_time = 5000;
→ SELECT /*+ MAX_EXECUTION_TIME(5000) */ * FROM table_name ~~; CONFIDENTIAL - © 2022 CoDMON Inc. 26 26
2. 設定する際の落とし穴 • max_execution_timeの設定方法 → SET SESSION max_execution_time = 5000;
→ SELECT /*+ MAX_EXECUTION_TIME(5000) */ * FROM table_name ~~; CONFIDENTIAL - © 2022 CoDMON Inc. 27 27
2. 設定する際の落とし穴 • max_execution_timeの設定方法 → SET SESSION max_execution_time = 5000;
→ SELECT /*+ MAX_EXECUTION_TIME(5000) */ * FROM table_name ~~; かつ、RDS Proxyを使っている場合 CONFIDENTIAL - © 2022 CoDMON Inc. 28 28
2. 設定する際の落とし穴 RDS Proxyでコネクションの ピン留めが発生します😱 CONFIDENTIAL - © 2022 CoDMON
Inc. 29 29
2. 設定する際の落とし穴 ピン留めされるとどうなる? CONFIDENTIAL - © 2022 CoDMON Inc. 30
30
2. 設定する際の落とし穴 • 設定する前 CONFIDENTIAL - © 2022 CoDMON Inc.
31 31
2. 設定する際の落とし穴 • 設定する前 CONFIDENTIAL - © 2022 CoDMON Inc.
32 32
2. 設定する際の落とし穴 • 設定する前 CONFIDENTIAL - © 2022 CoDMON Inc.
33 33
2. 設定する際の落とし穴 • 設定する前 3接続を1コネクションで捌く 🙌 CONFIDENTIAL - © 2022
CoDMON Inc. 34 34
2. 設定する際の落とし穴 しかし、SET SESSIONで タイムアウトを設定すると😱 CONFIDENTIAL - © 2022 CoDMON
Inc. 35 35
2. 設定する際の落とし穴 • 設定した後 CONFIDENTIAL - © 2022 CoDMON Inc.
この接続は タイムアウトが設 定されている ...! 36 36
2. 設定する際の落とし穴 • 設定した後 CONFIDENTIAL - © 2022 CoDMON Inc.
コネクション 使い回せない!! 37 37
2. 設定する際の落とし穴 • 設定した後 3接続で3コネクション使われる 😭 CONFIDENTIAL - © 2022
CoDMON Inc. 38 38
2. 設定する際の落とし穴 最悪の場合、コネクションが 足りなくなる危険性⚠ CONFIDENTIAL - © 2022 CoDMON Inc.
39 39
今日話すこと 1 クエリタイムアウトについて 2 設定する際の落とし穴 3 コドモンでどうしてる? 40
3. コドモンでどうしてる?? • max_execution_timeの設定方法 → SET SESSION max_execution_time = 5000;
→ SELECT /*+ MAX_EXECUTION_TIME(5000) */ * FROM table_name ~~; CONFIDENTIAL - © 2022 CoDMON Inc. 41 41
3. コドモンでどうしてる?? • max_execution_timeの設定方法 → SET SESSION max_execution_time = 5000;
→ SELECT /*+ MAX_EXECUTION_TIME(5000) */ * FROM table_name ~~; CONFIDENTIAL - © 2022 CoDMON Inc. 42 42
3. コドモンでどうしてる?? • max_execution_timeの設定方法 → SET SESSION max_execution_time = 5000;
→ SELECT /*+ MAX_EXECUTION_TIME(5000) */ * FROM table_name ~~; RDS Proxyでピン留めされない 🙌 CONFIDENTIAL - © 2022 CoDMON Inc. 43 43
3. コドモンでどうしてる?? • Laravel12 では👇のように書けます 参考: https://laravel-news.com/laravel-12-51-0 CONFIDENTIAL - ©
2022 CoDMON Inc. 44 44
3. コドモンでどうしてる?? • グローバルスコープを介してデフォルトとしても適用可 参考: https://laravel-news.com/laravel-12-51-0 CONFIDENTIAL - © 2022
CoDMON Inc. 45 45
3. コドモンでどうしてる?? Laravel10→12にVerUP中💪 CONFIDENTIAL - © 2022 CoDMON Inc. 46
46
さいごに CONFIDENTIAL - © 2022 CoDMON Inc. 47 47
教訓 SET SESSION は気をつけよう🚨 (RDS Proxyでピン留めされるかも) 参考: https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/rds-proxy-pinning.html#rds-proxy-pinning.mysql-tracked-vars CONFIDENTIAL -
© 2022 CoDMON Inc. 48 48
ご清聴ありがとうございました! 49
None