【レビュー】

登場! MySQL5.0.54 - 大幅向上のパフォーマンスを検証する

1 InnoDBのCPUスケーラビリティが大幅に改善

松信嘉典
 
  • <<
  • <

1/4

1月2日、MySQL5.0の最新版であるMySQL5.0.54がMySQL ABよりリリースされた。5.0.54は、5.0系列のマイナーバージョンアップという位置づけであるが、「高負荷時にInnoDBが長時間待たされる問題の修正」と「InnoDBのCPUスケーラビリティの向上」という非常に重要な修正が行われている。本稿ではパフォーマンスの改善点を中心に、新バージョンの主な変更点を紹介する。

5.0.54は、5.0系列のマイナーバージョンアップという位置づけであるが、「高負荷時にInnoDBが長時間待たされる問題の修正」と「InnoDBのCPUスケーラビリティの向上」という非常に重要な修正が行われている(Bug 29560)。CPUスケーラビリティについては、MySQL ABとしての公式なベンチマーク結果はまだ明らかにされていないが、コミュニティベースでの検証では、少なくとも8CPUコアまでスケールすることが確認されている。

多くのMySQLユーザにとって周知の事実である通り、InnoDBでは以前からCPUスケーラビリティに関する問題があることが報告されていた。MySQLは接続ごとに専用のスレッドを1つ割り当てて処理を行うという、マルチスレッド型のアーキテクチャを採用している。InnoDBでは、スレッド間の排他制御のためにmutexを用いているのだが、古いバージョンではmutexの粒度が大きく、「全体で1個しかないmutexを複数のスレッドで取り合うために多くのスレッドが待ち状態になり、全体として性能が低下する」という状況に陥っていた。このような粒度の大きい排他制御のことを、一般的にGiant Lockによる排他制御と呼び、CPUスケーラビリティ低下の大きな要因になる。

MySQL5.0.30からは、最も巨大なデータ構造であるInnoDBバッファプールについて、バッファプール全体ではなく、16KB単位のブロックごとにmutexによる排他制御が行うように修正された。これによって、CPUスケーラビリティは大幅に改善されるはずであった。

しかし5.0.30で適用されたパッチにはバグがあり、高負荷時に数百秒クラスの間待ち状態になることがある、という副作用が報告された。mutex lock解放時のイベントハンドリングに問題があり、待っている側がうまく解放通知を受け取れない場合があったためである。そのため、待ち状態を引き起こすだけでなく、結果として競合時のCPUスケーラビリティを阻害するという副作用もあった。

5.0.54でこれらのバグに対する修正が行われた。このバグを修正したことで、ハングアップの発生を防ぐとともに、CPUスケーラビリティも大幅に改善されている。

  • <<
  • <

1/4

インデックス

目次
(1) InnoDBのCPUスケーラビリティが大幅に改善
(2) 5.0.54でのパフォーマンス改善効果
(3) セキュリティ周りの修正点
(4) MySQL ABによるサポート


人気記事

一覧

イチオシ記事

新着記事

B型肝炎ウイルスは、0歳児の感染が最も危険! 予防接種が定期化された背景は
[07:00 9/29] ライフスタイル
『モーツァルト音楽王』前回覇者・浅川真己子に葉加瀬太郎から9人の刺客
[07:00 9/29] エンタメ
アウディやクアルコムなど、自動車・通信業界の大手8社が新団体
[07:00 9/29] テクノロジー
山下洋輔、タモリらとのバカ騒ぎが今の活動に!?『徹子の部屋』23年ぶり登場
[07:00 9/29] エンタメ
柳葉敏郎、さんま&IMALUに土下座!?『ダウンタウンDXDX』1000回突破SP
[06:00 9/29] エンタメ