ORM が高性能になり、SQL (クエリ) を意識の外に置くことも増えてきました
おかげでより開発効率も向上し、スピーディ・高品質なコードが書ける率も上がっています
しかし…アラートは突然やってきます
落ちるページ表示速度、上がる DB サーバー の Load Average
そして大量のスロークエリ
もちろん原因はこれだけではありませんが、僕らの日常では、1つのスロークエリが DB サーバーを停止させることも少なくありません
SQL は書き方次第で簡単に障害に繋がります
また、障害発生時、プログラムがどんな SQL を実行しているのか
実装した SQL は速いのか、遅いのか
それがわからないと、障害解析で困る場面も多いです
障害などの緊急事態を回避する以前に、品質の観点でエンジニアには日常的に以下が求められると考えています。
本セッションは、実例をベースに上記を説明しつつ「現場で使えるスロークエリの倒し方」を持ち帰っていただき、クエリ (SQL) チューニングへの敷居を低くすることが目的です
SQL 見よう!
障害の完全な予測は難しいです
だからこそ打てる手は多く持ち、できれば早めに打っておきたい
その手の1つとして、実際に行っているスロークエリの見方・倒し方・予防方法をお話しします
SQL はチューニングすることで品質の向上が可能です
PHPer であっても、SQL を日頃からチューニングしていきましょう!
開発当初は快適に動いていても、スロークエリは突然やってきます
では見える化はどうしたら良いのか、を
の 2 パターンで解説します
スロークエリが見つかった場合に実行する主な内容を、項目別に解説します
普段の実装時・レビュー時にも実行することでパフォーマンス劣化の予防もできます
要求仕様、設計から立ち帰り、そもそもこれ必要なんだっけ?を徹底的に疑ってみることも重要です
では何を追求すれば良いのか?を実例をもとにお話します
まずいスロークエリを見つけ、解決していくまでの流れを、2つの事例から解説します
普段から予防のために実践していることをお話します
Discord Channel: #track2-2-mysql-tune