MySQL5.5 - 性能改善と可用性向上

2011年11月25日(金)
梶山 隆輔

InnoDBとMySQLサーバ全体での各種性能向上

MySQL 5.5では、MySQLサーバ全体とInnoDB固有の課題の両方で多数の改善を行った結果、性能が大幅に向上しています。特にCPUコア数の増加に対するスケーラビリティ向上のため、MySQLサーバプログラム内でボトルネックとなっている排他制御を可能な限り削減しました。

アプリケーションからの多数の接続に対応するため、データやインデックスをキャッシュするInnoDBのバッファプールやコミット前のトランザクションを蓄積するロールバックセグメントを、内部的に複数に分割して処理の並列性を高めています。

図2:SysbenchでのMySQL 5.5と5.1の性能比較テスト(クリックで拡大)

上の図はオープンソースのベンチマークテストSysbenchを使用したMySQL 5.5と5.1の性能比較テストの結果です。SQL文は参照と更新を混ぜたテストで、グラフの横軸はSQL文の同時実行数、縦軸が秒間のトランザクション数です。テスト環境は以下の通りです。

  • CPU : Intel Xeon X7460 x86_64 4 CPU x 6 Cores, CPU 2.66 GHz
  • RAM : 32GB
  • OS : Fedora 10

なお、InnoDBを使用しているもののメジャーバージョンをMySQL 5.1から変更できない場合、MySQL 5.5の一部機能をバックポートとしたInnoDB Plug-inストレージエンジンが、2009年4月にリリースされたバージョンから利用可能となっています。

性能向上はSQL文の処理性能だけではなく、InnoDBのクラッシュリカバリ性能も向上しています。これは他のRDBMSのREDOログに該当するInnoDBログのスキャン方法やログの適用方法を変更したことによるもので、処理が10倍以上高速化されたベンチマーク結果も出ています。

MySQLのWindows環境への最適化

MySQLにとってWindowsは非常に重要なOSです。MySQLを使用したアプリケーションの開発環境として、またコミュニティ版の本番運用環境としてはWindowsが最大のシェアとなっています。MySQL 5.1まではあまりWindows環境への最適化に注力していませんでしたが、MySQL 5.5では多くの方がMySQLを利用される環境での性能や利便性の向上、Windows環境で利用されるツールとの連携強化を図っています。

特に性能面では独自実装の処理をWindowsネイティブのAPIに切り替えるなどで大幅に性能向上しているため、Windows上でMySQLをお使いの方には5.5へのバージョンアップを強くおすすめしています。

Windows用インストーラを刷新し、MySQLサーバだけではなくODBCドライバやMySQL Workbenchなど複数の製品を一括でインストールできるようになりました。インストール後にはWindowsサービスへの登録やパスワードなどの初期設定、およびサンプルの登録が可能です。インターネット接続が可能な環境では、自動的に最新のマイナーバージョンの有無を確認します。

図3:MySQL Universal Installer(クリックで拡大)

Visual Studio上でMySQLを利用するアプリケーションやストアドプロシージャの開発も可能です。有償版のMySQL 5.5では、Windowsサーバ環境で多く利用されるWindows Active Directoryでのユーザー認証が可能となりました。

Windows Server 2008 R2に搭載されたWindows Server Failover Clusteringを利用して、iSCSIやFCALベースの共有ディスクを使用した高可用性構成をサポートしています。障害時のフェールオーバーを含むクラスタの管理は、Cluster Managerによって行われ、追加のソフトウェアやスクリプトの作成は不要です。

日本オラクル株式会社

2008年にMySQL社に入社し、アジア各国でのMySQLを活用したシステム構築の導入支援を担当。現在はオラクルのMySQLビジネスユニットでのセールスコンサルティングチームのアジア太平洋地域マネージャー。

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています