【レビュー】
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スケーラビリティも大幅に改善されている。
| 理研、脳・脊髄形成に必要な神経板湾曲の仕組みを解明 [20:16 5/25] |
| 京大、「慢性閉塞性肺疾患」患者の労作時呼吸困難は鍼治療が有効と実証 [20:08 5/25] |
| 120Hz SHVカメラ用イメージセンサーを使った撮像装置 - SHVフルスペック化へ [18:10 5/25] |
| 京大、視覚による物体認知は前頭前野からのトップダウン信号が重要と確認 [17:45 5/25] |
| 製品数の拡大だけでなくBCPの展開なども含めた総合力で事業の強化を図るTI [17:25 5/25] |
|
【レポート】秋葉原アイテム巡り - 『ドラゴンズ ドグマ』『マリオテニス オープン』が発売! 『ニャル子さん』テーマソングも人気を呼ぶ [05:00 5/26] ホビー |
|
【レポート】人気の無料/有料アプリを毎週紹介 - 5月15日~23日のAndroidアプリランキング [04:14 5/26] 携帯 |
|
【レポート】モバイルからサポート可能なヘルプデスクソリューション「Zendesk」が日本市場に参入 [04:01 5/26] 携帯 |
|
[赤ずきんチャチャ]12年ぶり連載復活 舞台は東京 [00:00 5/26] ホビー |
|
【レポート】TVアニメ『ゆるゆり』、七森中☆ごらく部の世界戦略第2弾! 「ごらく部な地球の歩き方 ~香港編~」 [00:00 5/26] ホビー |
4つの診断で、自分の適性を見つめなおそう!
働くこと・挑戦し続けることへの思いを綴ったインタビュー
あなたにピッタリのアドバイスを読むことができます。
転職に必要な情報が収集できます
企業からアプローチのメッセージが届きます。