「MySQL 5.6」GA版が登場、InnoDBでのmemcached APIサポートや性能・セキュリティ強化など改良点多数

 米Oracleは2月5日(米国時間)、オープンソースのデータベースシステムMySQLの最新版「MySQL 5.6」の一般公開版(GA)「MySQL 5.6.10」を発表した。memcached APIのサポートなどを含むInnoDBの強化やセキュリティおよび性能の強化など多数の機能強化が行われている。また、一部機能の削除や置き換えも行われている。

 MySQL 5.6は2010年にGAが公開されたMySQL 5.5以来の大型リリースで、多数の新機能追加や既存機能の強化が図られている。変更点はセキュリティの強化からレプリケーションやログに関連するものまで多岐にわたる。

 MySQL 5.5でデフォルトのデータベースエンジンとなったInnoDBに対しては多数の強化が行われている。大きなものとしては、InnoDBテーブルに対するFULLTEXTインデックスの作成やMATCH()~AGAINST構文を使ったクエリが可能になった点が挙げられる。また、ALTER TABLE処理がテーブルのコピーを行うこと無しに実行可能となり、ブロック無しにテーブルに対し挿入や更新、削除と行った操作が可能となっている。

 file-per-tableモードで作成されるデータベースファイル(.ibdファイル)のより柔軟な配置も可能となった。これにより、たとえば頻繁にアクセスされるテーブルを記録したファイルはSSDに配置し、容量の大きいテーブルを記録したファイルはHDDに配置する、といった構成が可能となる。

 InnoDBテーブルに対しmemcachedのAPUを使ったアクセスも可能となった。これはmemcachedデーモンとの統合により実現されたもので、memcachedのAPIを使ったInnoDBテーブル内へのデータ格納や格納したデータのへアクセスが可能になる。SQLのパースによるオーバーヘッドをなくすことでパフォーマンスの向上が期待できるという。

 InnoDBではまた、ページサイズ指定、バッファプールの書き込み処理やデッドロック検出なども改善されている。

 オプティマイザも強化され、アルゴリズムの改善によってサブクエリの速度を向上させたという。また、EXPLAIN文を使った診断機能も強化され、SELECTだけでなくUPDATEやDELETE、INSERTに関する情報も取得できるようになっている。

 レプリケーションやロギングでは、トランザクションにIDを付けて管理するGlobal Transaction Identifiers(GTIDs)が導入された。これによりトランザクションのより詳細な特定や追跡が可能になる。また、バイナリログでは完了したイベントやトランザクションのみをログに出力したり読み出すようになり、これにより不意のクラッシュが発生した場合でもログが不正な状態になることが無くなるという(クラッシュセーフ)。ログにチェックサムを含めることも可能になっている。そのほか、遅延レプリケーションや複数スレッドを使ったトランザクションの並行処理のサポートなども追加されている。

 セキュリティ強化のための新機能や仕様変更も行われた。新たに認証情報を暗号化して保存するための方法が提供されるようになったほか、SHA-256によるユーザーアカウントのパスワード暗号化サポートやmysql.userテーブルでのpassword_expiredカラムサポートによるパスワードの有効期限設定、パスワードポリシに反するパスワードの自動リジェクト機能なども追加されている。

 このほかにも、パーティション数上限の緩和やGET DIAGNOSTICS文による診断情報の取得機能、TIMEやDATETIME、TIMESTAMPデータ型の仕様変更などさまざまな改善が加わっている。

 いっぽう、いくつかの機能やコマンドラインオプション、システム変数は廃止されている。廃止されたコマンドラインオプションやシステム変数のうち多くは別のもので代替可能となっているが、–safe-modeオプションや–skip-thread-priorityオプションなど単純に廃止されたものもあるので注意が必要だ。

 MySQL 5.6のオープンソース版である「Community Edition」は、MySQLのWebサイトからダウンロードでき、WindowsやMac OS X、各種Linux、FreeBSD、Solarisといったプラットフォームに向けたバイナリおよびソースコードが提供されている。ライセンスはGPLv2。

MySQL
http://dev.mysql.com/

米Oracle
http://www.oracle.com/