DBのインデックスメモ

それなりに件数の多いデータをRDBで扱うと問い合わせするカラムにはindexをつけると性能が大幅に向上します。

そんなときバッチなどである特定のカラムにwhere句を設定するとき複合インデックスをつけると性能がさらによくなります。
付け方は以下のようなコマンドです。

CREATE INDEX table_name ON index_name (column1,column2...)

このときにカーディナリティの高いカラムから設定すると効率がさらによくなります。

また、RDBを利用するとDISKIOがネックになるケースも多いですがその辺りをLINUXで見るコマンドも備忘録として残しておきます。

iostat -x 10

これで出てきたデバイスごとの一番右の項目がDISK使用率になります。ここが高いとRDBのクエリやらを改善しないといけなくなってきます。

ということで最近LINUX環境でリソースみるときはCPU,メモリ,DISKIO(WEBアプリの場合ネットワークのIOも)を見るようにしてますがdstatで一括して見るには次のコマンドが便利です。

dstat -Tclm --disk-util

OS全体のリソースを把握しつつクエリが遅ければEXPLAINとINDEXを使って高速化していくことが重要だと分かりつつ実践しないとできないなーとも思いました。