はじめに
皆さん読書はしていますか?「読書離れ」が叫ばれる昨今ですが、日々の業務に追われる皆さんの中には十分な時間が取れていないという方も多いのではないでしょうか。
しかし、業務に関連するドキュメントであればお仕事をしながらでも、無理なく「読書」を続けることができると私は考えています。そこでオススメしたいのが『MySQL公式リファレンスマニュアル』です!
まずはマニュアルを読もう
エンジニアであれば、「まずはマニュアルを読むべし」という言葉を聞いた経験があるのではないでしょうか。
その言葉の真意は、どんなソフトウェアでもマニュアルに必要最低限の情報は記載されており、何より信頼性が高いからだと思います(もちろん例外もありますが…)。
MySQLも例にもれず、公式リファレンスマニュアルの内容が非常に充実しています。何より特筆すべきは、開発元のOracle社が日本語版のマニュアルを用意されていることです。こちらは MySQL5.6 向けのリファレンスのみとなりますが、根本的なアーキテクチャや機能は基本的に同じなので、5.6のGAから4年近く経つ現在でも通用します。
また、マニュアルの誤記等に対する修正依頼は MySQLのバグ管理サイト で受け付けており、随時マニュアルの内容は推敲されているようです。
※ MySQL5.7で追加された新機能などについては 最新マニュアル(英語版)を読む必要があります
ただし、マニュアルはかなりボリュームがあり、一度に全ページを読むのは一苦労です。
そこで、私がよく参照し、かつ「有益だ!」と思ったページをいくつか紹介していきたいと思います。
5.1.4 サーバーシステム変数
まずは、MySQLのサーバシステム変数(パラメータ)の一覧ページです。
MySQLのパラメータ変数は、バージョンが上がるごとに数が増えていき、MySQL5.6時点で “500” 以上の変数が存在します(商用版のみのパラメータ含む)。
その一つ一つの意味を覚える必要はありませんが、頻繁に目にする変数については、
上記マニュアルを読んで、どのような効果を持つのか理解しておくと良いでしょう。
※ 特に既存MySQL環境の運用・保守などを引き継いだ場合は、まず最初に設定ファイル(/etc/my.cnf)を確認し、現状のパラメータ設定をチェックしましょう!
MySQLはパラメータを変更しないデフォルトの状態でもある程度動きますが、
パフォーマンスを最大限に引き出すためにはパラメータチューニングが必須となります。
「パフォーマンス」や「最適化」と言ったキーワードにヒットする変数については、
一度参照しておくことを推奨します。
第 8 章 最適化
上の項目でも触れましたが、本番環境でMySQLを利用する上でパフォーマンスチューニングは必須事項となります。
しかし、これまでMySQL触れてこなかった方にとっては、何から手をつければ良いのか分からない、というのが正直なところでしょう。
そこで、MySQL初心者の方には上記の「最適化」のページを読むことをオススメします。「SQL」、「インデックス」、「InnoDB」など様々な視点からMySQLで最適なパフォーマンスを出すために必要な設定や考え方などが惜しみなく記載されています。
例えば、8.3 最適化とインデックスのページは以下のような記述があります。
この内容はMySQLインデックスの原則であり、全ての開発者が意識すべきことだと思います。
クエリーで使用されている可能なすべてのカラムにインデックスを作成しようとしがちですが、不要なインデックスは領域を無駄にし、MySQL が使用するインデックスを判断するための時間を無駄にします。各インデックスを更新する必要があるため、インデックスは挿入、更新、削除のコストも追加します。最適なインデックスのセットを使用して、高速のクエリーを実現するために、適切なバランスを見つける必要があります。
MySQLのパフォーマンスに関するWebサイトや書籍は多く存在していますが、情報が多すぎて混乱しそうな方は、まずこのマニュアルの内容を確認するのが良いかと思います。
ちなみに私は以下のページもよく閲覧・活用します。
第 22 章 MySQL パフォーマンススキーマ
MySQL5.5から導入された Performance_schema は、新バージョンがリリースされるごとに機能が充実しています。Performance_schema を使うと、従来取得できなかったようなMySQLの統計情報、ステータス情報が容易に取得できるようになります。
そのため、今後のMySQL運用の現場においてはデファクトスタンダードになっていくでしょう。
もし、まだ Performance_schema を使っていない、もしくは使っていても十分に理解できていないという方は、上記のマニュアルを読みましょう。
各テーブルの構造から、保持しているデータの意味、そして使い方などを実際のSQLなども交えて解説してあります。
また、パフォーマンススキーマ関連のパラメータ変数の説明もあります。
Performance_schemaを使って、ワンランク上の運用・監視を目指しましょう!
おわりに
この他にもオススメしたいページは沢山ありますが、長くなってしまいますので一旦はここまでとします。次の機会があれば、もっと実際の内容に踏み込んで紹介できればと思います。
貴方も今日からリファレンスマニュアルを読んで、MySQLマスターになりましょう!