skillup

技術ブログ

Database

slow-query-logについて

投稿日:2017年3月6日 更新日:

データベースを伴う部分でののチューニングですが、大きく分けると

  1. SQLを書き直す
  2. インデックスを張りなおす
  3. プログラム内部でキャッシュを有効化する
  4. 設定ファイルの修正

上記のようなかんじになるのではないかと思います。

SQLの書き直しですが、SQL自体が遅い場合とSQLの発行回数を抑えるなどの方法があげられるでしょう。

そこで大切になってくるのが遅いSQLを特定することですね。

データがあまりない場合、遅さがわからなかったりするのでそもそも遅いものを特定することが大切になってきます。

MySQLにはslow_query_logという遅いクエリを出力する機能があります。どれくらい遅いかも自分で設定できるので、

この場合設定ファイル( /etc/my.cnf )に下記のように書いてあげればOKです。

※ただログを吐くと当然その分遅くなるので、できれば開発でやったほうが良いようです。

MySQLのslow-query-logの出力場所を確認する
MySQL初級者を脱するために勉強してること -調査編-

-Database
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

データベースのインデックスについて

今回はデータベースのインデックスに関して。 検索条件を早くする場合、何よりも速度が速くなるのはインデックスを張ることでしょう。 インデックスを張ることは単語を索引順に並べることですので、劇的に速度が向 …

no image

JPAでのリレーションに関して

JPAではテーブルをクラスで定義します。もちろん例外とかはいろいろあるのですが、1テーブル1クラスというつくりで、これをエンティティと呼びます。 もともとクラスを作ってからDBを作成したり、JTAの規 …

no image

MySQLでの日付関数

MySQLでSUMやCOUNTなんかはよく使うと思うのですが、日付の関数なんかもかなり使います。 今回は、日付の日数をとりたいときの関数を紹介。 例えばあるカラムにある日付が入力されており、現在との日 …

no image

MySQLのマイグレーション(workbench使用)

以前cakePHPにてマイグレーションの手法を紹介したのですが、当然PHP以外をつかっていたり、PHPでもcakeを使っていなければこの方法は通用しません。 何か、汎用的にデータベースの構造の差分がチ …

no image

EXISTSと集合

前回に引き続きEXISTSの問題です。 下記のようなテーブル(projects)があり、 project_id | step_nbr | status ———&#8 …

アーカイブ