タグ

2011年2月18日のブックマーク (3件)

  • MySQLのインデックスを学ぶ (1) - 刺身☆ブーメランのはてなダイアリー

    実践ハイパフォーマンスMySQL 第2版とLinux-DBシステム構築運用入門を読んで、 MySQL のインデックスについて勉強しなおしている。理解が曖昧だった部分の知識を深められたり、自分の間違いに気づけたりして、とても収穫が多い。 フルテーブルスキャンとフルインデックススキャン Linux-DBシステム構築運用入門 P185 に書いてあるケース。インデックスを利用してても対象レコード数が多いとランダムI/Oが大量に発生して遅くなる。読むべきレコード数が多いのならばフルテーブルスキャンのほうがI/O一回で多くのブロックを読み込めるので速い。 IGNORE INDEX ヒントを与えてパフォーマンスを改善するという例があった。 マルチカラムインデックスと範囲検索 SELECT * FROM users WHERE a = ? AND b >= ? and (c IS NULL OR c >=

    MySQLのインデックスを学ぶ (1) - 刺身☆ブーメランのはてなダイアリー
    japanrock
    japanrock 2011/02/18
    カバリングインデックス
  • MyISAMからInnoDBへ切り替えるときの注意点

    MySQLを使い始めて間もない人がよく陥る罠の中に、気づくと使ってるストレージエンジンがMyISAMだった!ということがある。デフォルトのストレージエンジンはMyISAMなので、MySQLに詳しくない人たちが比較的陥りやすい罠なのだ。そもそもストレージエンジンという概念自体がMySQL独自のものなので仕方のない話である。MyISAMは素晴らしいストレージエンジン(たとえばこのYahoo!の中の人による投稿で言われているように)であるが、長所もあれば短所もある。例えば、 トランザクション対応ではない。 クラッシュセーフではない。 更新と参照が入り乱れた場合の同時実行性能がよくない。 テーブルが大きく(数億行とか)なるとINSERTの性能が劣化する。 などなど。特に前者の2つが問題で、アトミックな操作が必要なところでロジックを実装出来なかったり、サーバがクラッシュした時にデータがお亡くなりにな

    MyISAMからInnoDBへ切り替えるときの注意点
    japanrock
    japanrock 2011/02/18
  • クリーンなコードはプログラマを豊かにする - 基本へ帰ろう

    これは、「理解することが書き直すことを意味するとき」から引用したグラフ。 プログラマは何に一番時間を使っていると思う?「コードを新規に書くこと?」「コードを修正すること?」いやいや「コードを理解すること」。グラフでは「コードを理解すること」に70%使う。私も感覚値ではこのくらいかな。実際は設計を考えたりする時間もあるけど、今回はコードを読み書きするところに焦点をあてる。 新規のコードを書いて、少しコーヒー飲んで一服してくると、すぐに古いコードになる。自分で書いたコードを再度読んで理解して、コードを追加したり、修正したりする。このサイクルが続くとコードが増えて読み理解する量がどんどん増える。 既存のコードを書き換えるのは言うまでもなく、まず、コードを理解しないと修正できない。過去自分が書いたコードならまだしも、他人が書いたコードを理解するのは当に時間がかかる。 「理解する」とは、つまり「コ

    クリーンなコードはプログラマを豊かにする - 基本へ帰ろう
    japanrock
    japanrock 2011/02/18