タグ

クエリに関するtajima_tasoのブックマーク (9)

  • プロファイリングで快適MySQLチューニング生活

    MySQL 5.1からデフォルトで有効になっている便利な機能としてプロファイリングというものがある。MySQL 5.0でも利用出来たのだが、実験的な機能という位置づけであり、搭載されていたのはGPL版のMySQL Community Server限定だった。MySQL 5.1からは全てのエディションでプロファイリングを利用することができる。 プロファイリング機能を利用すると、クエリの状態(特に状態遷移やリソースの消費状況)を詳細に分析できるのでとても便利だ。MySQLエンジニア必携の機能といって良いだろう。というわけでプロファイリング機能の使い方を説明しよう。 MySQLサーバにログインしたら、まずは次のようにしてプロファイリングを有効にする。 mysql> SET profiling=1; すると、クエリの情報が記録されるようになる。次に、分析したいクエリを実行する。クエリはなんでもいい

    プロファイリングで快適MySQLチューニング生活
  • naoyaのはてなダイアリー - MyISAM vs InnoDB

    あくまで憶測で仮説でしかないんですが。 MySQL のストレージエンジンのうち代表的な二つ、MyISAM と InnoDB はよく MyISAM: Read は速いけどテーブルロックのため並行性が低い。運用が簡単。 InnoDB: MyISAM より Read は遅いけど並行性が高い 。行レベルロックなので。あとトランザクションや外部キー制約。運用が MyISAM よりちょっとめんどくさい。 という区別がされます。ここから転じて、 MyISAM は参照系クエリが大部分を占める場合に適用すると良い。例えば blog アプリケーションとか。 InnoDB は更新系クエリが多い場合に適用すると良い。 と言わたりします。実践ハイパフォーマンスMySQL でも第2章 ストレージエンジン(テーブル型) P.30 に アプリケーションでトランザクションを使用する必要がなく、主に SELECT または I

    naoyaのはてなダイアリー - MyISAM vs InnoDB
  • MySQL Cache メモ - Qiita

    メモと言う名のコピペ ちょっと古い、5.1 だけど日語ドキュメントがそこしか無かったのと、英語読む気力ないけど、とりあえずめも 動作とかごにょごにょ クエリ キャッシュは、SELECT SQL_CALC_FOUND_ROWS ... のクエリで動作し、後続する SELECT FOUND_ROWS() クエリで返る値を格納します。FOUND_ROWS() は前のクエリがキャッシュからフェッチしていても、正確な値を返します。これは、検索したレコードの数をキャッシュで保管しているためです。SELECT FOUND_ROWS() クエリ自体はキャッシュの対象ではありません。 クエリをキャッシュする設定である場合、その結果 (クライアントに送信したデータ) を、結果の読み出し中に、クエリ キャッシュに格納します。そのため、データの扱いは、ひとまとめではありません。つまり、クエリ キャッシュで、デー

    MySQL Cache メモ - Qiita
  • MySQL 5.1のスロークエリログ

    MySQL 5.1で追加されたメジャーな機能の影に隠れた、地味だが便利な改善がある。それがスロークエリログに関する仕様である。MySQL 5.0まではスロークエリログは1秒未満のクエリを捕捉することが出来なかった。が、MySQL 5.1では1マイクロ秒までのクエリを記録できるようになっている。従って、0.5秒かかるけど大量に実行されてパフォーマンスに大きな影響を与えている!というようなクエリの発見が出来るようになった。1秒未満のクエリを追跡したい場合、例えば以下のような設定をする。 [mysqld] slow_query_log=ON slow_query_log_file=mysql-slow.log long_query_time=0.1 MySQL 5.0まではlog_slow_queryというオプションだったのが、MySQL 5.1ではslow_query_logというオプション名

    MySQL 5.1のスロークエリログ
  • MySQLでクエリチューニングことはじめ

    最近、寒暖の差が激しいですがみなさん体調は崩されていないでしょうか? こんにちわ。モニプラ for Facebookを担当しています高橋です。 サービス開始当初は問題なかったものの稼働が高くなりデータ量が多くなって クエリのパフォーマンスが悪化すること…よくありますよね? 今回はクエリチューニングの基的な手順とケース別に解決方法を解説したいと思います。 クエリチューニングの手順 1.スロークエリログで問題のクエリをあぶり出す まずはどのクエリが問題なのか特定する必要があります。 アプリケーション側でクエリの実行時間を測定し自前でログを出力しておくというのも手ですが、 お手軽にMySQLの設定で一定時間以上掛かったクエリをログに出力しておくことができます。 スロー クエリ ログ(MySQL 5.1 リファレンスマニュアル) mysqldを–log-slow-queriesオプションつきで起

  • http://www.mysqlpracticewiki.com/index.php/Select_type

  • EXISTSとSQLの高速化について - 猫好きモバイルアプリケーション開発者記録

    SQL高速化についてはいろんなサイトで取り上げられているので 今更取り上げる必要はないかと思っていましたが、 ふと最近仕事をしている中でハマっている人が多いポイントであると感じたため 改めて書いてみることにしました。 EXISTSが速いという誤解 EXISTSについて書かれたサイトを見ると、 「速い」というような記述を見かけることが多いかと思います。 しかし、これはあくまでサブクエリを組んだ場合に、INやイコールを使って比較するときと比べて速い場合が多いというだけであり、 EXISTSが速いというわけでは決してありません。 ハッキリ言ってしまうと、EXISTSを使うクエリは基的に遅いです。 これは正確に言うと、EXISTSを利用するケースにおいて相関サブクエリが使われていることが原因で遅くなっています。 相関サブクエリとはどういうものか、以下にメンバー情報を格納した MEMBER テーブ

  • Muses Factory » mod_rewriteでのクエリの扱い

    mod_rewriteでクエリ(URIの?マーク以降の部分)を参照するにはRewriteCondで%{QUERY_STRING}を調べればよい。 rNote時代のクエリ付きのリクエストをリダイレクトさせようと思い、たとえば http://reva.s28.xrea.com/?d=2008-11-16 へのアクセスを http://reva.s28.xrea.com/archives/date/2008/11/16/ へ書き換えるべく、.htaccessに次のような記述を加えました。 RewriteEngine on RewriteCond %{QUERY_STRING} d=([0-9]+)-([0-9]+)-([0-9]+) RewriteRule . /archives/date/%1/%2/%3/ [R=301,L] しかし実際にURIが正しく変換されるか試して

  • WordPress のURLクエリストリングにカスタムフィールドを指定して絞り込み検索する

    例として、スタッフ紹介ページに[部署][性別]のカスタムフィールドがある場合、で話をしますね。 投稿タイプ:staff カスタムフィールド:division, gender な感じの記事にカスタムフィールドの条件をつけて検索してみましょう。 PHP での絞り込みなら 詳しくは Codex を参照してくださいですが、query_posts() や get_posts() など、PHP コードでなら以下のように書けますね。 query_posts( array( 'post_type' => 'staff', 'meta_key' => 'division', 'meta_value' => 'sales', /* 他のパラメータは省略 */ ) ); メタクエリーを使えば、複数の条件を組み合わせることができます。 query_posts( array( 'meta_query' => arr

    WordPress のURLクエリストリングにカスタムフィールドを指定して絞り込み検索する
  • 1