MySQLが登場したとき、一番の注目をあびたのが検索処理や更新処理が高速だったことにあります。開発元だったスウェーデンのT.C.X社はこの速さを最重要視して開発を進めていました。過去、速度を重視して一部のSQL命令を削っていましたが、今ではほぼ標準的な機能は備えています。
また、MySQLはソースコードが公開されており、WindowsやLinuxといった多くのプラットフォームで動作します。
MySQL概要
MySQLの歴史
MySQLの創作者Micheal Wideniusは、1979年にスウェーデンのT.C.X社で社内用にUNIREGというデータベース管理ツールを作成しました。その後何度も異なる言語で書き換え、より大規模なデータベースを扱えるようにUNIREGを拡張してきました。
データベース部分にはUNIREGを使用していましたが、UNIREGは動的なWebページを作成するにはオーバーヘッドが大きすぎました。そこで、Devid Hughesが開発を進めていたmSQLに目をつけることになります。mSQLとUNIREGを統合するための交渉が続けられていましたが、最終的にはUNIREGのAPIをmSQLのAPIと同じにすることになりました。
1995年にはMySQL1.0が完成し、インターネットで公開されることになります。
MySQLの主な機能
- 複数のクエリを同時に処理できるマルチスレッド機能
- 言語インターフェイスの組み込みが簡単。C, C++, Ruby,PHP,Java, Perl,
Python ,Tcl,Delphi,Pike,Guile,Eiffelなど様様な言語インターフェイスを提供 - ほとんどのUNIX OSで稼動、WindowsNT/95にも対応
- Windows95用のODBC( Open-DataBase-Connectivity)
ドライバ添付 - 様々なアクセス制御が可能
- メモリリークがない
- 高速なテーブルチェック、最適化、修復ユーティリティの充実
- テーブル内容のバックアップが可能
- データベースレプリケーションが可能
動作確認済みプラットフォーム
下記のOS上でMySQLのコンパイル成功が報告されています。
Solaris/SunOS/BSDI/BSDI/SGI IRIX/AIX/DEC
UNIX/Linux/FreeBSD /FreeBSD/SCO OpenServer/NetBSD/Openbsd/HPUX/Win95
and NT
性能
MySQLの開発元であるT.C.Xで実際に稼動している環境は下記のとおりです。
「7百万以上の行を持つ10,000テーブルを含む40以上のデータベースの環境で使用されています。これは約100ギガバイトのミッション・クリティカルなデータです。」
日本語対応
データベース名やテーブル、項目名などにも日本語が使えるようにしてあります。ただし、BINARY属性のついた文字列や BLOB 項目では、複数バイト処理は行われません。
MySQL 3.23
MySQL 3.23では文字列の関数がマルチバイト文字に対応しました。
mysql> SELECT LEFT('むかしむかしのことじゃった・・・', 6);
むかしむかし
ただし、全ての字列関数が対応しているわけではなく、いかに上げる関数だけが日本語文字コードに対応しています。
LOCATE、POSITION、LOCATE、INSTR、LEFT、RIGHT、SUBSTRING、SUBSTRING、MID、RTRIM、TRIM、REPLACE、REVERSE、INSERT、LCASE、LOWER、UCASE、UPPER
日本語対応の方法
日本語対応を行うには、MySQLをソースから構築します。変更する点は、configureスクリプトを実行する際に、EUCとSJISのどちらかの漢字コードを指定することです。
たとえば、EUCの日本語文字コードに対応させる場合には、以下のようにします。
./configure --with-charset=ujis
SJISの場合にはujisをsjisに変更します。
詳細は「ソース配布でのインストール」を参照。
インターフェイス
MySQLのインターフェイスとして、C、C++、Java、Perl、Ruby、PHP、ODBC、Python、Tclがある。ここではPerlインターフェイスについて説明しましょう。
Perlのモジュール
PerlのモジュールはDBI、DBDを使用した構造となっています。したがって、まずはDBIをPerlにインストールしましょう。
Perlの使用実例としては、MySQLのソースに含まれる「script」ディレクトリの中にあります。
その他の言語インターフェイスは、Tcxの「Contrib」ディレクトリにあります。