サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
パリ五輪
d.hatena.ne.jp/bco
“InnoDBはクラスタインデックスを用いてデータが格納されている。そのため、PRIMARY KEYを用いた検索はとっても高速であるが、セカンダリインデックスを利用した検索はそれほど速くない。また、セカンダリインデックスのリーフノードにはPRIMARY KEYの値が格納される。そのため、サイズが大きなカラム(VARCHARなど)をPRIMARY KEYにしてしまうと、無駄なディスク領域を消費してしまうので注意が必要だ。VARCHARなどの文字列は数値よりも比較にかかる計算コストが高いので、文字列をPRIMARY KEYにするのは避けるべきである。 また、明示的にPRIMARY KEYを作成しない場合には、内部的に6バイトのROWIDがPRIMARY KEYとして作成されるが、これは無駄な領域であるので極力PRIMARY KEYを明示的につけるようにしよう。” — 漢(オトコ)のコンピュータ
“ 複数ファイルの展開 tar コマンドは複数のアーカイブファイルを指定して展開することはできないようです. 次のように複数ファイルを展開時に指定しても, 二番目以降のファイルは, 上記のように一番目のアーカイブファイルの中の特定のファイルと認識されてしまいエラーになります. % tar -zxvf foo.tar.gz bar.tar.gz tar: bar.tar.gz: Not found in archive tar: Error exit delayed from previous errors. 複数ファイルを展開したい場合は, 面倒ですがシェルの for 文や find コマンドと組み合わせる必要があります. # bash の for で for f in *.tar.gz; do tar -zxvf ${f}; done # find と -exec で find . -n
“ webアプリケーションのバックエンドにMySQLを使っている場合、 クエリ(SQL)のチューニングをする必要がありますよね。 皆さんはチューニングの計画をどのように立てていますか。 もちろん、既に明らかに重いことが想定されているページがあれば、 その処理で使われているクエリを中心にEXPLAINなどを使って解析していけばいいと思います。 でもそうではなく、全体的にクエリの見直しやチューニングを行いたい場合は 実際に実行されているクエリを確認していくという作業が必要です。 そこで使うことができる3つの方法について書きたいと思います。 遅いクエリを記録する MySQLにはスロークエリログといって、 実行に時間がかかったクエリを記録する機能が最初から付いています。 /etc/my.cnfに次のように設定を書けば実行時間が1秒を超えたクエリが出力されるようになります。 slow_query_l
“降順(DESC)の インデックス だけどfilesortを出したくないとき 上記の SQL 、実際に数万件以上のデータで試してみればわかりますが、EXPLAINで分析すると、using filesortがでます。 これは実は簡単な話で、実際には インデックス にDESCを指定しても、無視して ASC で インデックス を作成しているからです。本来であれば、並べ替えにも インデックス が使われるはずが、 インデックス の並び順が ASC なので、各 レコード のデータを読み込んで ソート します。この時に、一時ファイルを使って ソート を行っているのですが、これがusing filesortの正体です。 つまり、using filesortが出ているということは ソート に インデックス が使われていないことを意味します。 しかし、 SNS における日記や伝言板、ミニメールなど、扱うデータ
“ LinuxでPHPをインストールすると、後からDBをmysqlからpostgresに変更(または追加)することになって困ったことはりませんか? ※Linuxのみで、Windowsでは関係ありません。 その場合のモジュール追加方法をPostgreを例に説明いたします。 1.PHPソースファイルにあるextensionフォルダに移動します。 # cd /usr/local/src/php/php-5.2.1/ext/pgsql 2.phpizeを実行し、configureファイルを作成します。 # phpize 3.configureを実行 # ./configure —with-pgsql 4.makeを実行 # make 5.インストール # su # make install これで pgsql.soファイルが作成されました。 作成された場所は /usr/local/lib/php/
“ MySQLのデータベースをバックアップする際にmysqldumpを使用しますが、個人的に「これはつけたらよさそう」と思っているオプションを紹介します。 –opt –quick –add-drop-table –add-locks –extended-insert –lock-tables を指定するのと同じです。ダンプしたデータをMySQL サーバに読み込むための最速ダンプを提供します。(マニュアルそのまんま) –single-transaction ダンプする際に先頭にBEGINをつけるため、ダンプ時のデータのトランザクションの一貫性を保つことができます。ただしInnoDBなどのトランザクションが有効なストレージエンジンではないと意味がないです。 –flush-logs ダンプを開始する前に、MySQL サーバ内のログファイルをフラッシュします。バイナリログを保存するような設定になっ
このページを最初にブックマークしてみませんか?
『d.hatena.ne.jp』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く