質問

通常、RDBMSのボトルネック(私はMySQLユーザーです)パフォーマンスはディスクアクセスです。 SSDは、従来のスピンドルドライブと比較して優れたパフォーマンスを提供します。

質問:縮小されたスペースの複数のドライブを接続することでパフォーマンスを改善することは可能ですか?

2TB 7.2K rpmドライブを4 500GB 7.2K rpmドライブに置き換えるように?

役に立ちましたか?

解決

これは、ストレージエンジンに大きく依存する可能性があります。

Myisamにとって、あなたが望むほど隣接するデータを作ることができるので、それは素晴らしいアイデアだと思います。これは、バルク操作と広範な範囲スキャンを含むクエリに役立つでしょう。 Myisamを圧縮および修理してテーブル形式を改善するためのツールセットも、アクセスを少し良くすることができます。 IMHOの同時インサートは、このようなディスク環境で繁栄する可能性があります。

Innodbはまったく異なる話です。

あなたが持っている場合 innodb_file_per_table 無効にすると、データはIBDATA1全体に散乱する可能性があり、したがって複数のディスクに散在します。 InnoDBテーブルに対して最適化テーブルを実行し、データとインデックスページを隣接するものにすることができますが、2つの問題を引き起こす可能性があります。

  1. IBDATA1を成長させます
  2. 時間の経過とともにパフォーマンスが悪化します

IBDATA1に存在する4種類のデータを忘れないでください:

  • テーブルメタデータ
  • テーブルデータページ
  • インデックスデータページ
  • MVCC データ

データの整合性を保護するためのMVCCデータの絶え間ない書き込みがあります。また、ib_logfile0およびib_logfile1(redo logs)との一定の相互作用もあります。 InnoDBバッファープールから10秒ごとに一定のデータが流れます。全体として、IBDATA1内に十分な断片化が得られるまで、複数のディスクとI/Oパフォーマンスに基づくデータの拡散がわずかなパフォーマンスの改善を示すことができると言っても安全です。

現在、Innodb_file_per_tableが有効になっている場合、物事は少し厄介なものになる可能性があります。ここにあります:

IBDATA1をクリーンアップし、すべてのINNODBテーブルをIBDATA1から分離したら, 、IBDATA1が小さくなります。ただし、INNODBテーブルへの各アクセスには、テーブルメタデータを介して常にIBDATA1を介して使用する必要があります。文字通り、テーブルメタデータ(IBDATA1)をテーブル(.IBD)から意味的に分離することはできません。 IBDATA1が住んでいるところはどこでも、ディスクI/Oは常にIBDATA1を通過する必要があります。

全体的な効果:テーブルの断片化は.IBDファイルに限定されており、最適化テーブルで削減および再編成できますが、追加のI/Oパフォーマンスの向上は実際には達成されません。

すべての.ibdファイルをIBDATA1以外のディスクセットに入れてSymlinksを使用するのはどうですか? Perconaによると、それはより多くの騒乱を生み出します.

結論

単一のドライブで複数のドライブを使用することになると、InnodbよりもMyisamを非常に好みます。

他のヒント

はい、複数のドライブは、私たちがRAIDと呼ぶ素晴らしいテクノロジーのおかげで、より良いスループットを提供します。データベースの場合、Raid 10(ストライプミラー)が必要です。

4(n)ドライブを使用すると、書き込み速度と4倍(n)シーケンシャル読み取りスループットを2倍(n/2)します。しかし、シーク時間はほぼ同じままであり、ミラーリングのスペースの半分を失います。

ライセンス: CC-BY-SA帰属
所属していません dba.stackexchange
scroll top