タグ

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

  • やってはいけない!!MySQLに悲鳴をあげさせる10の方法

    いつも「MySQLを使うときはこうするべき」という観点から記事を書いているが、今日は逆に犯してはいけない過ちをリストアップしようと思う。 1. 全てのカラムにインデックスをつけるデータベース初心者がもっともやってしまいがちな間違いはコレではないだろうか。インデックスはいい。検索がとても速くなるから。しかし、それと引き替えにインデックスは更新するときにコストがかかるし、その分多くのディスクスペースを消費する。特に更新にかかるコストは時に甚大で、該当するインデックスのページがキャッシュ上にない場合はディスクからいったんそのページを読み込まなければいけない。ディスクアクセスは動作にとても時間がかかるので、インデックスが多数、例えば全てのカラムに付いていたりすると「あれ?固まったか?」というような状態になってしまうことがあるだろう。インデックスは必要なカラムにだけつけるようにテーブルを設計しよう。

    やってはいけない!!MySQLに悲鳴をあげさせる10の方法
  • 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
  • インデックスの基礎知識

    ■ インデックスとは データベースの世界で、インデックス(索引)とはテーブルに格納されているデータを 高速に取り出す為の仕組みを意味します。 インデックスを適切に使用することによってSQL文の応答時間が劇的に改善 される可能性があります。 インデックスにはB-Treeインデックスをはじめ、ビットマップインデックス、 関数インデックスなどの種類がありますが、ここでは最も一般的に使われ、かつ ほとんどのDBMSでサポートされているB-Treeインデックスについて解説します。 ※ CREATE INDEX文でオプションを指定しない場合は通常B-Treeインデックスが 作成されます。 ■ B-Treeインデックスのしくみ B-Tree(Balanced Tree)インデックスは次のようなツリー状の構造になっています。 ツリーの先頭はヘッダブロックと呼ばれています。ヘッダブロックでは、キー値の 範囲

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

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

    hedachi
    hedachi 2010/01/25
    index貼る場合はnot nullにしないといけないのかー。勉強になった。あと全文インデックスのことも参考になった
  • MySQL 複合インデックスだそうです : にぽたん研究所

    livedoor Blog の商売仇かと思われる Seesaa BLOG の中の人「しーさーのパパ」さんが書いている Seesaa開発日記に、「MySQL - 複合インデックスのすすめ」という興味深いエントリがあった。 ちなみに、おいらは今の会社に入社するまでの間、MySQL 自体は自宅で遊ぶ程度にしか使ったことなかったのです。 まともに使って速さにビクーリしたりしていましたが、それでもロクにパフォーマンスチューニングとかしたことがないので、もっと速くしようとする努力を怠ってました。 特にインデックスなんつーものは WHERE 節で使うものに個別に張ればいいんじゃないかと思ってましたし。 でも、WHERE 節と違う ORDER BY が入ると filesort が入ってきて遅くなるんですねぇ。 目からウロコでした。 ということで自宅サーバで実験してみた。 嫌なテーブル名だけど。。。 ちな

    MySQL 複合インデックスだそうです : にぽたん研究所
  • 漢(オトコ)のコンピュータ道: MySQLを高速化する10の方法

    ちょっとキャッチ−なタイトルをつけてしまったが、今日は独断と偏見でMySQLを高速化する方法を10個紹介しよう。MySQLサーバをチューニングするときや初期導入する場合などに参考にしてもらいたい。 1. バッファを増やす、または減らす チューニングの基中の基であるが、適切なバッファサイズを設定することはパフォーマンスチューニングの要である。主なバッファは次の通り。 innodb_buffer_pool_size・・・InnoDBだけを利用する場合は空きメモリの7〜8割程度を割り当てる最も重要なバッファである。余談だが、実際にはここで割り当てた値の5〜10%ぐらいを多めにメモリを使うので注意が必要だ。 key_buffer_size・・・MyISAMだけを利用する場合は、空きメモリの3割程度を割り当てるといい。残りはファイルシステムのキャッシュ用に残しておこう。 sort_buffer_

    漢(オトコ)のコンピュータ道: MySQLを高速化する10の方法
  • Passenger のリソース最適化オプション | Carpe Diem

    Passenger を使うとき、リソース最適化オプションによって大きくパフォーマンスが変わる。英文だと理解できるのが遅いので、勝手に翻訳してみる。 – PassengerMaxPoolSize <整数値> 同時に使用できる ROR あるいは Rack アプリケーションの最大数です。より大きな値を指定すると多くのメモリを消費しますが、HTTP クライアントが同時に処理できる能力を増やすことができます。 この最適な値は、あなたのシステムハードウェアやサーバの平均値ロードに依存します。異なる値を指定して実験する必要があるでしょう。しかし一般的にはこの値は少なくてもあなたのシステムの CPU 数に等しい値にするべきです。もしあなたのシステムが 2G のメモリ容量なら 30 を指定することをおすすめします。もしあなたのシステムが VPS 、256MB のメモリ容量で、MySQL のようなサービスが動

  • ヽ( ・∀・)ノくまくまー(2005-07-13) 優しいRailsの育て方 キャッシュ機能(caching)

    ● キャッシュ機能(caching) Railsには Page, Action, Fragment という3段階のキャッシュ機能が備わっている。tDiaryを使っていても思うが、修正よりも参照の方が圧倒的に多いコンテンツで毎回cgiで同じコンテンツを吐くのは無駄だなぁ。でもキャッシュを自分で用意するのは面倒だし、フレームワークかWebサーバがやってくれたらなぁ。Railsはそんなかゆい所にも手が届く、Web開発界の万能戦艦ノーチラス号なんです。 Page: アクション(CGI)の出力を丸ごとHTMLファイルとして保存し、静的コンテンツとして利用 Action: Pageと同じく全体を保存するが、コンテンツを表示する前に ActionController で filter 操作可能 Fragment: アクション全体の出力でなく、テンプレート描画の一部分のみをキャッシュ可能 caching

  • 1