NoSQL処理も、SQL処理も より高性能、高信頼、スケーラブルに

先頃、オラクル「MySQL」の開発動向を報告するセミナーが都内で催された。ここでは、同セミナーのオープニング・セッション(演題『MySQL開発最新動向』)で語られた内容を基に、MySQLの機能・性能強化のポイントについて簡単にまとめておきたい。

新版「5.7」で何が変わるのか

 世界で最も普及しているオープンソース・データベース「MySQL」――。2010年にオラクルの製品ラインに組み入れられて以降、その機能拡張・性能アップ、そして品質向上の動きに一層の拍車がかかり、適用領域も組み込みシステムから大規模Webサイト、さらにはクラウド・サービスへと着実な広がりを見せている。すでに、Google、Facebook、Twitterといった巨大ネット企業が自社サービスを支える基盤としてMySQLを活用しているほか、アルカテル・ルーセントやシスコ システムズ、さらにはソニーなどが、自社デバイス用の組み込みデータベースとしてMySQLを採用。また、クラウド・サービスの領域でも、アマゾン「Amazon Web Services(AWS)」や「Google App Engine」、「Rackspace」など、有力サービスの多くがMySQLを活用している。ちなみに、Google、Facebook、Twitter、LinkedIn、そしてアリババなどのネット大手5社は、超大規模サイト向けデータベース「WebScaleSQL」の共同開発もMySQLをベースに進めているという。

 今回のセミナーのオープニング・セッションでは、そんなMySQLの「開発最新動向」として、注目すべき強化ポイントのいくつかが示された。講演を担当したのは、日本オラクル MySQLグローバルビジネスユニットのMySQLプリンシパルセールスコンサルタント、杉山 真也氏だ。同氏は、カカクコムのCTOとして長く活躍し、楽天を経て、オラクルに移籍。MySQLのユーザーとして実際に大規模サイトの構築に携わってきた人物でもある。

 その氏がまず示したのは、MySQLの新版の強化ポイントだ。

 ご存じの方も少なくないだろうが、MySQLには、GPLのライセンスの下、無償で利用できるコミュニティ版と、有償の商用版の2タイプがある。このうちコミュニティ版のMySQLは、データベース・サーバの「MySQL Community Server」(以下、単に「MySQL」と呼ぶ)と、姉妹製品でデータベース・クラスタの「MySQL Cluster」の2つに大きく分かれ、前者の新版は「5.7」で、現在開発途中にある。より具体的には、「MySQL 5.7.6 Developer Milestone Release(DMR)」が今年3月10日にリリースされた段階だ。

 ただし、この段階のMySQL 5.7でもすでに、ストレージ・エンジン(「InnoDB」)における「トランザクション性能・可用性・I/O性能」の向上や、レプリケーション・パフォーマンスの改善が実現されているほか、GIS(地理情報システム)系の機能も強化されているという。また、フォーマンス・チューニングの「しやすさ」もアップ。さらに、MySQLサーバ群を管理する統合型のフレームワーク「MySQL Fabric」も強化されているようだ。

NoSQL性能も従来の6倍に、秒間接続数も最大6万7,000件へ

 まず、トランザクション性能に関して言えば、MySQL 5.7は、現行最新版の「5.6」の2倍に高速化され、同時接続数1,024のときでも、60万QPS(クエリ/秒)を超える性能を発揮するという。

 また、MySQL 5.7では、FacebookがNoSQL処理性能の改善に貢献。「Memchached」プラグインの使用によって、NoSQL(キー・バリュー型)データベースに対するクエリ性能を、MySQL 5.6の6倍強(約100万QPS・同時接続数1024)にまで高めることができるという(下図参照)。


※クリックすると拡大画像が見られます

 加えて、MySQL 5.7では秒間接続数も6万7,000接続/秒に引き上げられ、5.6の1.7倍となった。

より進化したパーフォンス・チューニング

 MySQL 5.7では、パフォーマンス・チューニングのための機能も進化している。

 1つは、SQL文の実行性能を上げる「Optimizer(オプティマイザ)」の強化だ。オプティマイザは、SQL クエリの最適な実行プランを自動的に生成する仕組みだが、MySQL 5.7では、この機能において新しいコスト・モデル(SQL実行コストのモデル)がサポートされ、ディスクI/Oやメモリ処理の性能を見ながら、ユーザーが自らコストを設定することが可能になった。

 「例えば、新たなシステム・デバイスを導入し、そちらでMySQL を稼働させたい場合に、SQLの実行プランが自分の思うような作りになっていないケースがあるはずです。MySQL 5.7では、そのような際に、実行プランをカスタマイズすることができるということです」(杉山氏)。

 また、MySQL 5.7では、SQLの実行プランを確認するためのJSON形式の説明文「JSON EXPLAIN」が拡張され、出力可能なコスト情報(SQL文のコスト情報)がすべて表示されるようになっている。結果、細かなコスト値が参照可能になり、効率の良いSQLクエリを記述することが可能になるという(下図参照)。


※クリックすると拡大画像が見られます

 さらに、MySQL 5.7のオプティマイザでは、SQLクエリの書き換えツールとして「クエリ・リライト・プラグイン」が提供されている(下図参照)。


※クリックすると拡大画像が見られます

 このツールを使えば、アプリケーションに変更を加えずに、SQLクエリをリライトし、そのパフォーマンスをチューニングすることができるようになる。そのため、データベース・アドミニストレーター(DBA)チームが自ら――つまりは、アプリケーション開発チームの手を借りることなく――SQLクエリを変更することも可能になる。実際、DBAチームがSQLクエリのパース後に性能上の問題を見つけ、クエリの書き換えをアプリケーション開発チームに要請したとしても、開発サイドは他の開発業務に忙殺され、なかなか対応できない場合があるだろう。そんなときに、クエリ・リライト・プラグインがあれば、「DBAチームが、例えば、自分たちの意図したインデックスを使うようSQLクエリを再定義することが可能になる」(杉山氏)ということだ。

 なお、MySQLでは、パフォーマンス・チューニング用のスキーマ「Performance Schema」が用意されているが、新版5.7では、そのテーブル数がバージョン5.6のおよそ1.6倍に相当する約80テーブルに増えている。そのため、どのテーブルを見てパフォーマンスをチューニングすればよいかが分かりづらくなっているようだ。

 そこで、重宝するのが「MySQL SYS Schema」となる。このSYS Schemaを介することで、サーバやユーザーの状況など、MySQLの主要な稼働指標が確認できるほか、性能問題の発見・分析、さらには改善が可能になるという。

 また、SYS Schemaでは、状況把握のためのビューが複数用意されており、大量のI/O量を発生させているファイルや処理、ロック、コスト髙のSQL文を把握したり、データベースのテーブル/インデクッス/スキーマの統計情報を参照したりすることもできる。

マルチソース・レプリケーションに対応

提供:日本オラクル株式会社
[PR]企画・制作 朝日インタラクティブ株式会社 営業部  掲載内容有効期限:2015年4月17日
このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]