MySQLチューニング(その2)

By | 2013年3月25日

nigaraです。MySQLチューニングの続き。

・LVMをやめる
CentOSではデフォルトインストールで、パーティションにLVMが導入されてしまいます。このLVMですが、ディスクI/Oにオーバーヘッドが生じますのでパフォーマンスはかなり落ちます。自分が過去に管理していたDBサーバーのパフォーマンスだと、LVMの有り無しでおよそ1.3倍以上は差がありました。

ですので、「スナップショットの作成」や「後日パーティション領域増やす」といった予定が無い場合はLVMの導入はやめましょう。LVMを切る方法はCentsOS6だとインストール時にパーティションの選択時で「カスタムレイアウトを作成する」を選び、HDDのレイアウトを一旦全部削除してext3なりext4を選べばLVMは導入されません。

*(訂正)
別件で調査したところext3とLVMの組み合わせで遅くなる事が判明。ext4とLVMならほとんど変わらないので特にLVMを外さなくてもパフォーマンスに影響なし。

・ファイルシステムにext4またはxfsを使用する
ext3はファイルシステムの中でもかなり遅い部類に属します。ext4でだいぶ改善していますので、ext4もしくはxfsを使いましょう。ただしxfsには注意点があり、ext3やext4よりも堅牢性が落ちます。xfsはファイルの更新中に不意の電源断でファイルが損失する可能性が他に比べて高いので、レプリケーションを導入して必ずフォロー出来る体制を用意する必要があります(どちらのファイルシステムもジャーナリングを実装していますが、ext3は実データの保護も行っているがxfsはメタデータまでしか保護していない ※訂正 遅延アロケーションでメモリ上のデータが失われて飛んでしまいデータが壊れるそうです)。

・RAID10もしくはSSD
RAID0だとHDD単機に比べ最大で2倍ほどのパフォーマンスが出ます。ただしRAID0だとHDDが故障した場合に全てのデータが消失しますので、そこにRAID1を加えたRAID10構成がベストとなります。冗長化と速度アップという万能なRAIDですが、唯一のネックがHDDを最低4台必要としてしまうコストでしょうか。ただソフトウェアで頑張っても限界が来た場合、お金の力で2倍の速度が手に入るのですから、機会損失が発生するような状況では有力な候補といえるでしょう。

ただ最近はベンダーからSSDもオプションで発売されているので、こちらの方が速度も速く経済的です。SSDの特徴はrandomアクセスに非常に強いのでパフォーマンスは状況によって一気に100倍以上もアップします。RDBMSはほぼrandomアクセスとの戦いになるので、お手上げの状況だったシステムがSSDの導入で一気に解決することもあります。長所の目立つSSDですが、ハードウェア的にはまだ枯れていないので不安な部分も存在します。例えばHDDだと故障時に最悪サルベージが可能ですが、SSDはまず現在では不可能。他には、HDDだと故障予知が出来ますが、これもSSDでは不可能となっています。(それらの短所を回避するSSDとHDDのハイブリッドシステムも存在しますが、値段が高い上にまだメジャーではないので割愛)

ちなみにSSDで突然の電源断に対して以下のような懸念がありますが

http://nippondanji.blogspot.jp/2009/03/ssd.html

この記事が2009年ですので現在では状況が変わっています。

http://ascii.jp/elem/000/000/753/753156/

キャパシタに電気を蓄えておき、電源断時はその蓄電でメモリからNANDに書き込みを行い、データの消失を防ぐ機構の付いたSSDが発売されています。よってライトキャッシュについては(エンタープライズ向けSSDなら)気にしなくても大丈夫となっております。

 

ソフトウェアチューニングで頑張っても限界の場合や、仕様上で負荷を回避できない場合、またはとにかく急いで負荷を軽減したい場合にはハードウェアで速度を上げることもかなり効果的になります。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です