MySQL 5.1 リファレンスマニュアル :: 6 最適化 :: 6.6 ディスク関連の問題
« 6.5.6 MySQLの DNS の使用

6.6.1 シンボリックリンクの使用 »
Section Navigation      [Toggle]
  • 6 最適化
  • 6.1 最適化の概要
  • 6.2 SELECTステートメントおよびその他のクエリの最適化
  • 6.3 ロック関連の問題
  • 6.4 データベース構造の最適化
  • 6.5 MySQL サーバの最適化
  • 6.6 ディスク関連の問題
    • 6.6.1 シンボリックリンクの使用

6.6. ディスク関連の問題

[+/-]

6.6.1. シンボリックリンクの使用
  • ディスクシークはパフォーマンスに対する大きなボトルネックである。この問題は、データが拡大し、効率的なキャッシュが実行不能になるほど大きくなるにつれて明白になる。大規模データベースで、事実上ランダムにデータにアクセスする場合、読み取りでは最低 1 回、書き込みでは最低 2 回のディスクシークが必要になることがわかる。この問題を最小にするには、シーク回数を減らすようにディスクを使用する。

  • 複数のディスクに対してファイルをシンボリックリンクするか、ストライピングを行って、利用可能なディスクスピンドル数を増加する(およびそれによるシークのオーバヘッドを軽減する)。

    • シンボリックリンクの使用

      MyISAMテーブルの場合、通常のデータディレクトリ内の位置から別のディスクへのインデックスファイルやデータファイルのシンボリックリンクを行う(ストライピングも可能)。これによって、ディスクが他の用途に使用されていなければ、シークと読み取り時間がいずれも改善される。 項6.6.1. 「シンボリックリンクの使用」を参照してください。

    • ストライピング

      ストライピングは、ディスクが多数ある場合に、第 1 ブロックを第 1 ディスクに、第 2 ブロックは第 2 ディスクに、第 Nブロックは(N MOD number_of_disks)ディスクにといった配置を意味する。これにより、通常のデータサイズがストライプサイズより小さい(または完全に一致している)場合にパフォーマンスが大幅に改善する。ストライピングはオペレーティングシステムとストライプサイズへの依存性が非常に高いため、ストライプサイズをさまざまに変えながらアプリケーションのベンチマークを行う。項6.1.5. 「独自のベンチマークの使用」を参照してください。

      ストライピングの速度はパラメータによって大きく異なることに注意する。ストライピングパラメータの設定方法とディスク数によって桁ちがいの差異が発生する。ランダムアクセスか順次アクセスのいずれの最適化を行うかの選択が必要なことに注意する。

  • 信頼性を高めるため、RAID 0+1(ストライピング + ミラーリング)の使用が必要な場合、N個のドライブのデータの保持に2× N個のドライブが必要になる。財務上の余裕がある場合はこれが最適な選択肢になる。しかし、処理の効率化にボリューム管理ソフトウェアへの投資が必要なこともある。

  • データの種類の重大性に応じて RAID レベルを変える選択も推奨される。たとえば、ホスト情報やログなどの重要度の高いデータは、RAID 0+1 または RAID Nディスクに格納し、再生成が可能で重要性が中程度のデータは RAID 0 ディスクに格納することなどができる。RAID Nは、パリティビットの更新に時間がかかるため、書き込みが多いと問題になる場合がある。

  • Linux の場合、hdparmを使用してディスクのインタフェースを構成することでパフォーマンスを大幅に改善できる(負荷時に 100% 改善できることも珍しくない)。次の例は、MySQL(およびその他の多数のアプリケーション)に非常に適した hdparmオプションである。

    hdparm -m 16 -d 1
    

    上記を使用した場合のパフォーマンスと信頼性は使用ハードウェアに依存するため、hdparmの使用後はシステムを総合的にテストするように強く推奨する。詳細については、hdparmのページを参照。hdparmの使用が適切でない場合は、ファイルシステムの損傷が発生することがあるため、テストの際はあらかじめすべてのバックアップを取っておく必要がある。

  • データベースが使用するファイルシステムのパラメータを設定することもできる。

    If ファイルへの最終アクセス時を認識する必要がない(データベースサーバでは重要度が低い)場合、-o noatimeオプションを使用してファイルシステムをマウントできる。これで、ファイルシステムの i ノードへの最終アクセス時間の更新がスキップされ、一部のディスクシークを回避できる。

    多数のオペレーティングシステムで、-o asyncオプションを使用してディスクをマウントし、ファイルシステムが非同期で更新されるように設定できる。使用しているコンピュータが適度に安定している場合は、信頼性を損なわずにさらにパフォーマンスを改善できる(Linux ではこのフラグがデフォルトでオンになっている)。

Copyright © 1997, 2010, Oracle and/or its affiliates. All rights reserved. Legal Notices
Top / Previous / Next / Up / Table of Contents
© 2010, Oracle Corporation and/or its affiliates