MySQL5.6 - さらなる機能追加とNoSQL

2011年11月29日(火)
梶山 隆輔

InnoDBとレプリケーションのさらなる進化

InnoDBは引き続き数々の機能改善を行っています。InnoDBのスレッドスケジューリングの改善やUNDOログ専用の表領域の追加などでさらなる性能向上を図っています。デッドロックの検出やバッファプールのフラッシュも高速化されています。サーバ停止時にバッファプールの内容を保存することも可能となったため、起動時に読み込むことであらかじめデータをキャッシュしておくこともできます。

INFORMATION_SCHEMAにはInnoDBに関する内部統計情報や利用状況を表示するテーブルが追加されています。例えばバッファプールの利用状況を表示するINNODB_BUFFER_POOL_STATSテーブルでは、未使用のバッファサイズだけではなく、バッファ内の各ページの利用状況も確認できます。他にもInnoDBのトランザクションやロックの状況、テーブルの詳細な統計情報を表示するテーブルなど、数多くのテーブルが利用可能となっています。

MySQL 5.5で準同期の方式が加わったレプリケーションでは、より信頼性と性能を高めるための改善を加えています。スレーブの障害発生時にも復旧を迅速にするためにリレーログの自動復旧やログのディスクへのフラッシュを実装したほか、レプリケーション・チェックサムやサーバUUID(Universally Unique Identifier)により、運用ツールから管理を簡素化します。さらに指定した時間分を遅延させてレプリケーションするオプションも加わり、より柔軟性が高くなります。

スレーブのSQLスレッドがマルチスレッド化が可能になり、リレーログからデータへの適用を並列化できます。MySQL 5.6.3の時点では別のデータベースへの変更を並列で適用してコミット可能になっています。今後テーブルごとに並列処理ができるように開発を行っています。

図2:マルチスレッドスレーブ(クリックで拡大)

2011年10月リリースのMySQL 5.6.3ではまだ実装されていない開発中の機能としては、例えばサブクエリ性能の向上、EXPLAIN文の出力の整形、およびオンラインでのインデックスの追加や再構成があります。最新ハードウェアへの対応という点では、CPUコアのより多い環境でのスケーラビリティ向上のための開発、またハードディスクとは異なる特性を持ったSSD向けの最適化やチューニングガイドの提供準備を行っています。

チューニングを支援するパフォーマンススキーマ

MySQL 5.5で実装されたパフォーマンススキーマは、MySQLサーバ内部での稼働統計を蓄積するスキーマで、どちらかというとMySQLサーバのプログラムそのものを最適化するときに役立つものでした。MySQL 5.6では、よりSQL文やサーバーパラメータなどのチューニングや性能監視に役立つことを目指しています。

例えば最もリソースを消費するSQL文を実行しているユーザーやアプリケーションの特定、テーブルアクセスやテーブルのロックを最も頻繁に行っているアプリケーションの特定も可能になります。ユーザーおよびセッションごとの負荷の確認も可能です。個別の情報だけではなく集計したテーブルも用意されています。

コミュニティからソースコードの提供をうけて開発されたのがホストキャッシュ内容の表示で、接続に関するエラーを原因を含めて表示をします。数多くのMySQLサーバを運用し、ユーザー数や接続数も多くなる大規模Webで要望の多かった機能を実装しました。

パフォーマンススキーマは内部の稼働統計をテーブルに記録していくため、性能に10%強の無視できないオーバーヘッドが発生するため、負荷の高い本番運用環境での利用は慎重に行ってください。可能であればテスト環境などでの動作確認時や性能テスト時に利用することを検討してください。

日本オラクル株式会社

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

連載バックナンバー

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

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

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

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