読者です 読者をやめる 読者になる 読者になる

株式会社一燈 エンジニアブログ

九段下のPHPエンジニア集団、株式会社 一燈のブログです。PHPやjavascriptに関するTipsや活動報告を掲載しています。

日本オラクル主催のSQLチューニング勉強会に行ってきました

Tickです。お久しぶりです。
気が向いたときしか書かないので、半年間くらい出てこないのはデフォです。

今回は日本オラクル主催のSQLチューニングに関する勉強会に行ってきたので、それの感想を書きたいと思います。
勉強会はだいたいぼっち参戦が多い私ですが、今回は知り合いのエンジニアの方と一緒に行ってきました。

(余談ですが、セミナールーム広くて綺麗でしたねえ。コーヒーなどフリードリンクもありました。)

勉強会はだいたい2部構成になっていて、前半が実際にSQLチューニングをやっていくときのポイント解説、
後半がSQLの実行計画を立てるオプティマイズに関する説明となっていました(有償ツールの紹介もあったがそちらは割愛)。

3時間みっちりで密度が高く、とてもこちらで全部は取り上げられないので、詳細はOracleが公開しているスライドを参照ください。
また、SQLチューニングに関しては、Yahoo!のエンジニアの方がノウハウを公開してくれていますので、こちらも併せてご参照ください。

SQLチューニングの基本

話の内容的には、EXPLAINで実行計画を出してチューニングをしていく際に、「こういうところを見るのがポイントですよ」といった話であったり、「こういうツールを使うと視覚的に実行計画を分析できますよ」という内容でした。

EXPLAINで出てくる各項目についても、typeは「この状態まで持っていくのが望ましいですよ」といった、ポイントとなる項目の詳しい見方まで解説されていました。

中でも目から鱗だったのはMySQL WorkbenchというGUIツールが無償配布されていることでした。
実行計画の視覚的分析も、Workbenchで提供されている機能なので、自分も後で触ってみようと思います。

オプティマイザ解説

オプティマイザ解説の部分では、普段ユーザーから投げられたSQL文を、オプティマイザがこうやって最適化して、実行計画を立て投げていますよという内容でした。単純なSQL文の最適化から、インデックス検索のアクセス方法、JOINの最適化など普段あまり意識しない部分が聞けて興味深かったです。
特に、Cake3からJOINによるEager Loadingが使えるようになったこともあり、JOIN部分の話が興味深かったです。

全体的に、バージョンアップによるオプティマイザの性能改善をアピールしており、5.7での全体的なリファクタリングによってパフォーマンスが向上したので、新しいバージョンを是非使ってほしいというようなことを仰っていました。

普段はあまり何も考えずCentOSのepelからインストールして使っているのですが、開発用のDockerイメージに最新版のMySQLを入れて使ってみようかなと思いました。