MySQL 5.0の新機能をアルファ版でチェック:エンタープライズ市場に向かうMySQL 5.0(前編)(2/3 ページ)
いま、最も勢いのあるオープンソースRDBMSといえばMySQLだ。2004年1月に公開された5.0アルファ版は、従来の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をClassicコマーシャルライセンスとProコマーシャルライセンスで大別しますが、これは製品バージョンとは無関係です。これらのライセンスはMySQL社や国内代理店で購入可能で、有償サポートを受けることができます。
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.