連載
» 2004年04月13日 00時00分 公開

エンタープライズ市場に向かうMySQL 5.0(前編):MySQL 5.0の新機能をアルファ版でチェック (2/3)

[鶴長鎮一,MySQLユーザ会]

MySQL 5.0の新機能

 それでは、エンタープライズ市場への布石となる5.0にはどのような機能が追加されているのでしょうか。快速MySQLでデータベースアプリ!で3.23を紹介してから、3年のブランクがあるため、その間に発表された4.0や4.1に追加された機能も併せて見ていきましょう。

MySQLの系譜

 MySQLはすでにバージョン3.23/4.0/4.1がリリースされており、5.0を加えると合計4つの開発ブランチが同時進行することになります。

3.23 旧製品リリース すでに開発が完了しているバージョンだが、セキュリティ対応やバグ修正は継続されている
4.0 製品リリース 現在使用が推奨されている安定バージョン
4.1 試用版 機能追加が積極的に行われているバージョン
5.0 テクノロジプレビュー版 4.1とは別の開発ブランチを持つほど、大きな機能改修が行われているバージョン
表1 MySQLの現行開発ブランチ
注:上記のバージョンとは別に、MySQL社にはMaxDBと呼ばれるRDBMSがあります。これはSAP社のSAP DBを起源としたものです。先に行われたSAP社とMySQL社の提携により、MySQLへの統合が試みられています。将来的にはMySQLの製品構成に組み込まれます。

 なお、商用ライセンスの形態で、MySQLをClassicコマーシャルライセンスとProコマーシャルライセンスで大別しますが、これは製品バージョンとは無関係です。これらのライセンスはMySQL社や国内代理店で購入可能で、有償サポートを受けることができます。

図1 各バージョンの機能実装状況 図1 各バージョンの機能実装状況

 3.23の後半でトランザクションが可能となりましたが、インストールの際にトランザクションをサポートするテーブルタイプ(コラム参照)を組み込む必要がありました。

コラム MyISAMとInnoDB

 トランザクションをサポートするため、InnoDBという新たなテーブルタイプが3.23の後半のリリースで追加されました。

 当初は、従来のテーブルタイプであるMyISAMに対して性能が低く、あまり利用されていませんでした。最近のリリースではパフォーマンスも改善され、多くの場合デフォルトで使用されています。GISやFULL TEXT検索など、MyISAMにしかない機能もありますが、一方でデータファイルの自動修復機能、外部キー、行レベルロックなど、InnoDBにしかない機能もあります。

 なお、InnoDB/MyISAM以外にも、BDB/MERGE/HEAPといったテーブルタイプがあります。

参考:▼InnoDBテーブルの概要
http://www.mysql.com/doc/ja/InnoDB_overview.html


 4.0ではトランザクションをサポートするInnoDBがデフォルトで使用可能となり、さらにクエリーキャッシュを備えることでパフォーマンスの向上も図られました。ほかにも、SELECT …… UNIONクエリー対応など、メジャーリリースにふさわしい大きな改修が行われています。また、4.0以上では環境変数の動的変更が可能となっています。my.cnfファイルを編集しなくても、SQLクエリーで環境変数を変更できます(コラム参照)。

コラム SQLクエリーによる環境変数の変更

 SQLクエリーによる環境変数の変更は、以下のように行います。

#mysql -u root
mysql> set GLOBAL max_allowed_packet=2999296;
Query OK, 0 rows affected (0.01 sec)
mysql> select @@GLOBAL.max_allowed_packet;
+-----------------------------+
| @@global.max_allowed_packet |
+-----------------------------+
|                     2999296 |
+-----------------------------+
1 row in set (0.00 sec)

 上記の例では、MySQLクライアント/サーバ間で送受信されるパケット最大長を指定する環境変数max_allowed_packetを増やしています。


 4.0の最初のリリースから約1年半後に発表された4.1では、待望の副問い合わせが実現しました。また、OpenSSLを組み込んだセキュアレイヤ上でのクライアント/サーバ通信を実現するなど、セキュリティの強化も行われました。国際化の面では、Unicode対応をはじめ、カラム単位の文字コード指定や文字コードの変更を行うconvert()関数が実装されています。

MySQL 5.0の新機能

 MySQL 5.0では、ストアドプロシージャの採用が目を引きます。MySQLのストアドプロシージャはSQL:2003をベースにしており、標準的な操作方法が提供されています。もちろん、サーバサイドカーソル機能も利用可能です。

 ストアドプロシージャ以外に、以下の改修が行われています。

  • SHOW COLUMNS FROM テーブル名クエリーの高速化
    テーブル定義を知るためのSHOW COLUMNS FROM テーブル名クエリーは、テーブルではなく定義ファイルのみを開くように変更され、従来に比べて格段に速くなっています。
  • HEAPテーブルの改善
    テンポラリテーブルに使用されるHEAPテーブルに関して、vacharのような可変長レコードが扱えるようになりました。ただし、最大長は255文字のまでで、BLOBやTEXT型は依然として未サポートです。
  • アップデートログの廃止
    アップデートログが廃止され、レプリケーションに使用されていたバイナリログに統一されました。バイナリログは、mysqlbinlogコマンドでテキストの状態を表示できます。
# mysqlbinlog /MySQLデータディレクトリPATH/サーバ名-bin.000001

 「MySQLはRDBMSとしての機能が少ない」という評価は、すでに過去のものであることが分かります。

参考:
▼MySQL 5.0で計画されている新機能
http://dev.mysql.com/doc/mysql/ja/TODO_MySQL_5.0.html
▼Changes in release 5.0.0 (22 Dec 2003: Alpha)
http://www.mysql.com/doc/en/News-5.0.0.html

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。