タグ

チューニングに関するchanpon0のブックマーク (6)

  • ネステッド・ループ結合 - オラクル・Oracleをマスターするための基本と仕組み

    ネステッド・ループ結合 (NESTED LOOP JOIN) ネステッドループ結合とは、もっとも基的な結合である。例えば2つの表におけるネステッドループ結合を2重ループした繰り返し処理のプログラムを想像するとシンプルに理解できる。 SELECT t1.colA, t2.colB FROM t1, t2 WHERE t1.key1 = t2.key2 and t1.colA = 'A' and t2.colB = 'B' という SQL について考えてみる。 テーブル t1 は配列 a1、テーブル t2 を配列 a2 と置き換えると 探索する アルゴリズム (A) は 準備 変数 conditionA に条件 'A' を代入する 変数 conditionBに条件 'B' を代入する 変数 conditionA、conditionB を引数に以下の処理を呼び出す 処理の内容 配列 a1 を

    chanpon0
    chanpon0 2014/10/16
    NLJ(Nested loop join)
  • 2008-06-29

    mysqlを利用していて、indexをちゃんと張っているのにパフォーマンスが出ない。 explain でも type = ref / key = INDEX 等が表示されているのにすごくクエリーが遅かったりする。 思い切って index を消したら逆にパフォーマンスが改善した! why? データ件数が数万件を越えたあたりからパフォーマンスが劇的に下がった。 と、悩んでいたりしませんか? そんな悩みのひとつの解決策になってくれるかもしれません。 テストは vmplayer 上の debian etch で行います。 ホスト環境 intel Q6600 メモリ2Gの WindowsXPです。 クエリーをキャッシュされないように、クエリキャッシュを 0 にします。 /etc/mysql/my.cnf query_cache_size = 0 #no cahce debug swapで遅くなると困

    2008-06-29
  • MySQLについて 伍 - インデックスについて

    通常、MySQLでは、selectコマンドを実行した場合、1レコード目から最終レコードまで、シーケンシャルに検索を行っていきます。 しかしながら、レコード数が大量になってくると、検索速度の問題が生じます。 そこで、より高速な検索を行うために、インデックスを作成するのが一般的です。 インデックスを作成することによって、検索速度は劇的に改善されます。 但し、MySQLでは、1,000件以下であればシーケンシャルに検索した方が速いとされています。 さて、インデックスとはどのようなものであるかというと、直感的には、図書の巻末に付されている索引(インデックス)と同じです。 索引語はアイウエオ順、あるいは、アルファベット順に並べられていて、各々の索引語には、その索引語が登場するページ数(位置情報)が示されています。 読者はその位置情報を頼りに、ページを捲って、目的のキーワードのある部分を読

  • 基礎から理解するデータベースのしくみ(5):ITpro

    SQL文を実行する際のパフォーマンスに大きな影響を及ぼすものとして,もう一つ,インデックスがあります。インデックスについては,どう定義すべきかというデータベース設計上の問題と,インデックスを有効に使うためのSQL文をどう書くべきかというコーディング上の問題があります。 ここではテーブル設計上の問題を主に取り上げます。SQL文のコーディングについては囲み記事「SQL文を最速にする11のポイント」を参照してください。 インデックスは,テーブルの検索速度を向上させるためのものです。それぞれのSQL文に対して最適なインデックスを定義するのが理想的ですが,実際にはある程度限られたインデックスで,必要なパフォーマンス要件を満たすようにインデックスを定義する必要があります。加えて,どんなSQL文が実際に発行されるのかがあらかじめわかっていない場合は,適当な想定に基づいてインデックスを定義しておかなくては

    基礎から理解するデータベースのしくみ(5):ITpro
  • MySQLの高速化のメモ - LukeSilvia’s diary

    最近Railsアプリを作成している中で、初めて高速化をやったので、その際のことをメモしておく。 高速化の手順 ベンチマークをとる まずはベンチマークをとっておく。これによって、どのくらい早くなったか見極める。Railsなら、script/performance/benchmarkerを使って出来る。 テストコードとして、大量のフィクスチャを用意し、それに対して処理したベンチをとる方法もあるが、フィクスチャのデータがかなり現実味を帯びている必要があるため、番環境でベンチをとった方がいい。 また、プロファイルして、当にDBアクセスがボトルネックになっているのかを見ておく。 スロークエリログを見る MySQLには、結果を得るのに一定時間以上かかったクエリを記録しておく、「スロークエリログ」という機能があるので、どのクエリがボトルネックになっているかをこのログを見て調べる。 ログファイルの場所

    MySQLの高速化のメモ - LukeSilvia’s diary
    chanpon0
    chanpon0 2011/03/30
    遅いクエリを調べる
  • サービス終了のお知らせ

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

    chanpon0
    chanpon0 2010/12/02
    速度 速さ
  • 1