By ZUIFU Blogger 2011年11月22日 Leave a Comment

mysql_clr

MySQLに限らず、DBチューニング時の着眼点を以下に纏めてみた。

1. SQL
2. DB論理設計(インデックス含む)
3. DB物理設計
4. アプリケーションロジック
5. メモリリソース
6. ディスクI/O
7. ネットワーク
8. OS

上記の各項目の確認時のポイントと方法の概要をMySQLの場合を想定し以下に記載。

1. SQL
 ポイント:SQLの書き方によって、パフォーマンスが著しく
      低下することがあるため、実行に一定時間以上
      かかったものや、テーブルフルスキャンを行った
      SQLの有無を確認する。

 方法  :スロークエリログの確認

2. DB論理設計(インデックス含む)
 ポイント:テーブル毎のデータ件数と、取得方法を想定して
      インデックスを定義する。
      膨大なデータを扱う場合は、特にテーブルの
      パーティショニングも検討する等。

 方法  :各テーブル毎のデータ件数と、データサイズの想定、
      テーブル間のリレーション(ER)を確認。
      EXPLAIN文による診断。

3. DB物理設計
 ポイント:サーバ構成とデータファイルを配置するパーティション
      及び、ファイルシステムが適切かどうか。
      無駄にデータの格納サイズを必要とした型定義は無いか。

 方法  :物理的なパーティションの分割やRAIDタイプ、ファイル
      システムの確認。
      EXPLAIN文による診断。
      mytopコマンドによるMySQLの実行状況の確認
      TOPコマンド等でOSの各種リソース使用状況の確認。

4. アプリケーションロジック
 ポイント:DBアクセスを減らす
      クエリキャッシュのヒット率を上げる
      JOIN等で取得する必要情報をSQLで取得するか、
      ロジックで吸収するかのコスト判断
      複数のコアを持ったサーバ上で動かす場合、
      CPUを効率よく使用できるつくりになっているか。

 方法  :SQLのチューニングと関連して、以下を検討する。
      アプリケーションの処理時間をデバックコードで確認
      EXPLAIN文による診断。
      SHOW STATUS コマンドによる、各種情報の確認。

5. メモリリソース
 ポイント:OSのメモリ使用量と合わせて、クエリキャッシュや
      max_connectionsやthread_cache_sizeの適切な
      設定値を検討する。

 方法  :max_used_connectionsを確認し、max_connectionsの
      設定値に達しているか否かを確認。
      達している場合は設定値を上げるかコネクションプールを
      使用する方向で、メモリリソースを検討する。
      SHOW STATUS コマンドによる、各種情報の確認。
      mytopコマンドによるMySQLの実行状況の確認
      TOPコマンド等でOSの各種リソース使用状況の確認。

6. ディスクI/O
 ポイント:ディスクI/Oを確認し、I/O待ちが発生している場合は、
      処理の待ち時間が発生するため、ディスクアクセスを
      減らしたり、アクセスするディスクを物理的に分散させる等
      の検討をする。

 方法  :ディスクI/Oに関する情報を確認。
      (top,vmstat,iostatコマンド等)

7. ネットワーク
 ポイント:大量データの送受信が発生するシステムでは、ネットワークカードの
      性能(スループット)や、他サーバとの通信で経由している
      ネットワーク機器の性能の場合も考えられる。
      ネットワークカードのチーミングや、通信経路の分散、
      ネットワーク機器の性能強化を検討する。

 方法  :ifconfigコマンドや監視サーバによるトラフィック状況を確認。

8. OS
 ポイント:CPU、ディスク、メモリがバランスよく使用されており、
      無駄なハードウェアリソースが無いかを確認する。
       例として、ハイスペックのCPUがあっても、
      Load avarageが低くI/O待ちが発生している場合、
      ディスクI/Oがボトルネックとなり、CPUが有効に活用
      されていない事が想定できる

 方法  :topコマンドによるサーバ稼動状況の確認
      サーバ監視ツールによる、サーバ負荷状況の推移を確認 等

以上、ポイントのみ。




Sorry, the comment form is closed at this time.

Sorry, the comment form is closed at this time.