
弊社のプロジェクトで、利用頻度の多いデータベースはOracleなのだが、
最近、実際のプロジェクトでOracleを使用した際に、あまりいいサーバ構成
でないケースにおいて、Oracle本来の性能が発揮されないことがあった。
そこで、同様なケースのとき、MySQL Clusterではどのようなパフォーマンス
になるのか調べてみることにした。
興味があった特徴は以下の通り。
- クラスタリングソフトが不要
- 負荷分散装置・共有ストレージが不要
- 動的なスケールアウト
- 分散型インメモリデータベース
- 1秒以内のフェイルオーバー
仕様上は、高速に動作しそうだったため、実際どうなるのか試してみることにした。
まず、
・VMWareで、仮想マシンを用意。
・CentOSをインストール。
次に、
・MySQL Clusterをインストール。
・管理ノードを1つ、データノード/SQLノードを2つ作成。
・2つのMySQLが同時に動作している状態。
そして、
・1つのMySQLで、テーブルを作成し、データを登録してみる。
すると、
・もう1つのMySQLにもテーブルが作成され、同じデータが登録されている。
うまくインストール出来たようだ。
よし、
とりあえず、1セッション、1レコード、1トランザクションで、
大量にデータを登録してみた。
10万件のデータを登録。133秒
普通のMySQLでも同じ処理を試す。
10万件のデータを登録。48秒
# insert処理で、約2.8倍の性能差があった。
これは2つのSQLノードへの負荷分散をしていなかったり、
チューニングしていないので、メモリをちゃんと使えていなかったり、
ネットワークの状況に影響されたりと、MySQL Clusterの性能が出る
ようにしてあげれば、実プロジェクトで利用可能な状態に持っていく
ことが可能だろう。
今日のところは、簡単な動作確認をした程度だが、
引き続き、実プロジェクトで適用可能かどうか調査を
進めたいと思う。