Talk in Japanese at PHP Conference Japan 2021
Track Name:
Track2
Short URL: https://joind.in/talk/0b395
(QR-Code (opens in new window))
ORM が高性能になり、SQL (クエリ) を意識の外に置くことも増えてきました
おかげでより開発効率も向上し、スピーディ・高品質なコードが書ける率も上がっています
しかし…アラートは突然やってきます
落ちるページ表示速度、上がる DB サーバー の Load Average
そして大量のスロークエリ
もちろん原因はこれだけではありませんが、僕らの日常では、1つのスロークエリが DB サーバーを停止させることも少なくありません
SQL は書き方次第で簡単に障害に繋がります
また、障害発生時、プログラムがどんな SQL を実行しているのか
実装した SQL は速いのか、遅いのか
それがわからないと、障害解析で困る場面も多いです
障害などの緊急事態を回避する以前に、品質の観点でエンジニアには日常的に以下が求められると考えています。
- スローログ監視
- スロークエリ解消
- スロークエリ予防
本セッションは、実例をベースに上記を説明しつつ「現場で使えるスロークエリの倒し方」を持ち帰っていただき、クエリ (SQL) チューニングへの敷居を低くすることが目的です
SQL 見よう!
障害の完全な予測は難しいです
だからこそ打てる手は多く持ち、できれば早めに打っておきたい
その手の1つとして、実際に行っているスロークエリの見方・倒し方・予防方法をお話しします
SQL はチューニングすることで品質の向上が可能です
PHPer であっても、SQL を日頃からチューニングしていきましょう!
## スロークエリの見える化
開発当初は快適に動いていても、スロークエリは突然やってきます
では見える化はどうしたら良いのか、を
- プログラムレベル
- MySQL サーバーのログ(スローログ)
の 2 パターンで解説します
## SQL の分析
スロークエリが見つかった場合に実行する主な内容を、項目別に解説します
普段の実装時・レビュー時にも実行することでパフォーマンス劣化の予防もできます
- EXPLAIN
- インデックス
- インデックス管理
## 改善対応の流れ
まずいスロークエリを見つけ、解決していくまでの流れを、2つの事例から解説します
- SQL そのものに問題がある場合
- 複合インデックスで解消できる場合
## スロークエリ予防
普段から予防のために実践していることをお話します
- コード・設計・企画レビュー
- 勉強会
- ペアプロ
Comments
Comments are closed.
割と初心者向けの内容だったのかなと感じました。
前半は知ってる内容がほとんどでした。
EXPLAINの話、感覚でしか理解できていない部分を体系的に説明されてより理解が深まりました。
ありがとうございます。
・コード特定自動化
・新規のSQLの事前検知
このへんは確かにほしいなと僕も思いました。
後半はクエリの話からちょっと脱線して「今なんのはなしだっけ」となる瞬間が少しありました。
最高のセッションでした。Get Wild !
> yamamoto.hiroya
コメントありがとうございます!
はい、初心者向けの内容でした。
内容どうするか実はかなり迷ったんですが、普段SQL見ない人を、いやこれなら見れるぞ、の一歩にするために、を目的にしました。
なので今回は、JOIN含めたより掘り下げたチューニング方法とかは盛り込んでなかったんですよね。
盛り込むと1時間半くらいになってしまうなってのもあり、諦めた内容も多かったので、今後アップデートしていきたいです。
> 後半はクエリの話からちょっと脱線して「今なんのはなしだっけ」となる瞬間が少しありました。
確かに…!今どこで、なんの話を、どんな目的でしてるんですよ、はもうちょっと誘導できるよう構成見直してみます!
ありがとうございます!
> 曽我 央
最高の褒め言葉です!
and tough!
EXPLAINを雰囲気で見てしまっていたので、この発表で理解が進みました。
エンジニアとして大切にしていきたい視点が詰まった発表でした。
> Yokoyama Masaki
コメントありがとうございます!僕も以前は雰囲気勢だったのでお気持ちすごくわかります。
今以上にいいスライド、登壇できるようさらに磨いていきます!