タグ

関連タグで絞り込む (0)

  • 関連タグはありません

タグの絞り込みを解除

SQLとMySQLとperformanceに関するraimon49のブックマーク (25)

  • おさかなラボ - PHPデベロッパがおかしがちな10のMySQL間違いがおかした間違い

    【レポート】PHPデベロッパがおかしがちな10のMySQL間違い | エンタープライズ | マイコミジャーナル という記事があったのですが、おや?と思う所があったのでツッコミを入れる。 ブラウザ側で動作するJavaScriptを使ったチェックに頼るのではなく、 サーバサイドのPHPでちゃんと検証すること。 PHPでの検証はあてにならない。Perlも然り。PHPには「サニタイズする」関数が沢山あるが、そういうものは安易に使わないようにしたほうがよい。「サニタイズ」ではなく「ヴァリデート」して、意図しない値はエラー、「来るはずがない」値はwarn()(だっけ?)でerror_logにログを吐いて死ぬように。ハカー以外ありえない人に普通の画面遷移見せるのはお人好しもいいところである。当然であるが、エラーログを画面に吐いて死ぬのは論外。 以上をちゃんとした上で、「必ず」プレースホルダを使う。鉄則。

    raimon49
    raimon49 2010/12/05
    >実は「*」はCOUNT()の中で展開されない。その代わりに全てのレコード数を最も早い方法でカウントする。*の代わりにPKを入れると「より早く」なるというのは都市伝説である(少なくともMySQL5.*以降)。 なお、もしもここにNU
  • ソーシャルゲームのためのMySQL入門 | BLOG - DeNA Engineering

    こんにちはこんにちは。最近お腹痛いばっかり言ってることで有名なiwanagaです。 DeNAは外部的にはプラットフォーム的な部分の方がフィーチャーされることが多いですが、実はソーシャルゲームの提供も行っています。怪盗ロワイヤルとか、どこかで聞いたことがあるのではないでしょうか。 僕はDeNAでソーシャルゲームが誕生した辺りからずっとサーバサイドを見てきましたが、そんな運用の中で自分が貯めてきた知見とかTIPSをご紹介したいと思います。 かれこれ10タイトル近くはレビューしたり運用したりしてるため結構言いたいことはいっぱいあるので、小出しにしつつ評判よければ次も書きます。 ソーシャルゲームのためのMySQL入門一覧 ソーシャルゲームのためのMySQL入門 - Technology of DeNA ソーシャルゲームのためのMySQL入門2 - Technology of DeNA 「MySQL

    ソーシャルゲームのためのMySQL入門 | BLOG - DeNA Engineering
    raimon49
    raimon49 2010/11/16
    InnoDBで大規模データをストアする際のコツ、パーティショニングの利点紹介など。ログ系のテーブル設計の勘所や採番テーブルによるid払い出しは、ソーシャルゲームに限らず普遍的に役立つDB設計の基礎知識。軽妙な語り
  • なぜMySQLのサブクエリは遅いのか。

    よくMySQLはサブクエリが弱いと言われるが、これは当だろうか?半分は当で半分は嘘である。MySQLのサブクエリだってなんでもかんでも遅いわけではない。落とし穴をしっかり避け、使いどころを間違えなければサブクエリも高速に実行できるのである。今日はMySQLがどんな風にサブクエリを実行し、どのような場合に遅いのかということについて説明しよう。 EXPLAINで実行計画を調べた際に、select_typeにはクエリの種類が表示されるのだが、代表的なサブクエリには次の3つのパターンがある。 SUBQUERY DEPENDENT SUBQUERY DERIVED 結論から言おう。遅いのは2番目、DEPENDENT SUBQUERYである。DEPENDENT SUBQUERYとはいわゆる相関サブクエリに相当するもので、サブクエリにおいて外部クエリのカラムを参照しているサブクエリのことである。そし

    なぜMySQLのサブクエリは遅いのか。
    raimon49
    raimon49 2010/02/09
    相関サブクエリとして評価されている時はサブクエリが返すカラムに対してインデックスを付けてやる。
  • MySQLのEXPLAINを徹底解説!!

    以前、MySQLを高速化する10の方法という投稿で「EXPLAINの見方についてはいずれ解説しようと思う」と書いてしまったので、今日はその公約?を果たそうと思う。 MySQLのチューニングで最も大切なのは、クエリとスキーマの最適化である。スキーマの設計は一度決めてしまうとそのテーブルを利用する全てのクエリに影響してしまうためなかなか変更することは出来ないが、クエリはそのクエリだけを書き直せば良いので変更の敷居は低い。そして遅いクエリをなくすことは、性能を大幅に向上させるための最も有効な手段である。従って、アプリケーションの性能を向上させたいなら、まず最初にクエリのチューニングを検討するべきなのである。 最適化するべきクエリはスロークエリログやクエリアナライザで見付けられるが、ではそのようなクエリが見つかった場合にはどのように最適化すればいいのか?そのためにはまず現在どのようにクエリが実行さ

    MySQLのEXPLAINを徹底解説!!
    raimon49
    raimon49 2009/03/31
    クエリ最適化。サブクエリの場合はselect_typeがSUBQUERYだと結果がキャッシュされ, DEPENDENT SUBQUERYでは外部クエリの結果に対して毎回評価される。サブクエリの最適化を見ると良い。typeのカラムにindexとALLを見たら要注意。
  • MySQLの最適化

    限りなく眠気を誘うPHP Internalsのセッションから逃げる。こっちの 講師はMySQL.comの人。講演慣れしていて、ずっとまともでプロフェッショナルな 感じ。午前中を逃したのが惜しいが、詳しいプレゼン資料は後日公開される らしい。 DELETEのコストはかなり高い 読みだしがすごく多い場合は無効化を示すフィールドを作りUPDATEすべき、 index更新のコストが馬鹿にならないSHOW STATUSの表示結果の解析方法 起動ごとに初期化、全データベースに共通rnd と rnd_next の割合Key_reads : Key_read_requests 、ディスクから読まれた回数:総回数 この割合が1:100より悪くなったら要注意Key_write_requests:Key_writes 総書き込み要求回数:ディスクに書き込ま れた回数 キャッシュの効果などMax_used_con

    raimon49
    raimon49 2008/04/15
    インデックスを使ってもらう為のSQL最適化など、他のRDBMSでも有用なノウハウが沢山。2001年の記事らしい。DBは絶対に時間を投資しておくべき知識だなぁ。長く財産になる。