このセクションでは MySQL データベース ソフトウェアの重要な特徴の一部を説明します。現行版と最新情報を 項1.5. 「MySQL の開発ロードマップ」 で参照してください。おおむね、MySQL 全てのバージョンに対応しています。シリーズごとに新しく紹介される MySQL の機能については、対応するマニュアルの 「一言」 セクションを参照してください。
MySQL 4.0 と 4.1: MySQL 4.0 in a Nutshell, and MySQL 4.1 in a Nutshell.
MySQL 5.0: MySQL 5.0 in a Nutshell.
MySQL 5.1: MySQL 5.1 in a Nutshell.
内部および移植性:
C および C++ で記述されています。
さまざまなコンパイラでテストされています。
さまざまなプラットフォームで動作します。 項2.1.1. 「MySQL Community Server がサポートしているオペレーティング システム」 を参照してください。
GNU 移植性のために GNU Automake、Autoconf、および Libtool を使用しています。
MySQL サーバは多層で、独立モジュールでデザインされています。
カーネルスレッドを使用した完全なマルチスレッド。そのため、使用可能な場合、複数の CPU を簡単に使用することができます。
トランザクションストレージエンジンと非トランザクションストレージエンジンを備えています。
インデックス圧縮を備えた非常に高速な B-tree
ディスクテーブル(MyISAM)
を使用しています。
別のストレージエンジンの追加が比較的容易です。これは、社内データベースへの SQL インタフェースを追加する場合に便利です。
スレッドベースの非常に高速なメモリ割り当てシステム。
最適化された one-sweep multi-join を使用した非常に迅速な結合。
テンポラリ テーブルとして使用されるメモリ内ハッシュテーブル。
高度に最適化されたクラス ライブラリから SQL 関数が実装されるため、最大限の速度が確保されます。通常は、クエリの初期化後にメモリ割り当てが行われることはありません。
MySQL コードは Purify(市販のメモリリーク検出システム)と Valgrind と呼ばれる GPL ツール(http://developer.kde.org/~sewardj/)を使用してテストされています。
クライアント/サーバまたは組み込み(リンク)バージョンとして使用可能です。単独のアプリケーションに組み込み(リンク)できるライブラリとしても提供されています。このようなアプリケーションは単一で、あるいはネットワーク環境の整っていない場所でも使用することができます。
データ タイプ:
多数のデータ タイプ:1、2、3、4、および 8
バイト長の符号付き/符号なし整数、FLOAT、DOUBLE、CHAR、VARCHAR、TEXT、BLOB、DATE、TIME、DATETIME、TIMESTAMP、YEAR、SET、ENUM、および
OpenGIS 空間型。章 10. データタイプ
を参照してください。
固定長および可変長のレコード。
コマンドと関数:
クエリの SELECT 節および
WHERE
節での演算子と関数の完全なサポート。たとえば、次のように使用することができます。例
:
mysql>SELECT CONCAT(first_name, ' ', last_name)->FROM citizen->WHERE income/dependents > 10000 AND age > 30;
SQL の GROUP BY 節および
ORDER BY
節の完全なサポート。グループ関数(COUNT()、COUNT(DISTINCT
...)、AVG()、STD()、SUM()、MAX()、MIN()、そして
GROUP_CONCAT())のサポート。
標準の SQL 構文および ODBC 構文での LEFT
OUTER JOIN および RIGHT OUTER
JOIN のサポート。
標準 SQL で必要な、テーブルおよびカラムにおけるエイリアスのサポート。
DELETE、INSERT、REPLACE、および
UPDATE
変更された(影響を受けた)レコードの数を返す。
サーバに接続する際にフラグを設定することで、代わりに一致したレコードの数を返すことも可能です。
MySQL 固有の SHOW
コマンドを使用すると、データベース、テーブル、およびインデックスに関する情報を取得することができます。MySQL
5.0 では、INFORMATION_SCHEMA
データベースのサポートも、標準SQLに基づき追加されています。
EXPLAIN
コマンドを使用すると、オプティマイザによるクエリの解決方法を決定することができます。
関数名は、テーブル名やカラム名と衝突しません。例、ABS
は有効なカラム名である。関数呼び出しで、関数名とその後に続く
‘(’
との間にスペースを使用できない点が唯一の制限事項です。項8.3. 「MySQLでの予約語の扱い」
を参照してください。
同ステートメント内のさまざまなデータベースのテーブルを参照することができます。
セキュリティ:
非常に柔軟で安全な権限およびパスワード システム。ホストベースの検証が可能です。
サーバに接続する際にすべてのパスワード トラフィックが暗号化されるので、パスワードは安全です。
拡張性と範囲:
大規模なデータベースを処理します。当社は、MySQL サーバを使用して 50,000,000 レコードが格納されたデータベースを処理しています。また、MySQL サーバを使用して 60,000 テーブル、約 5,000,000,000 レコードを処理しているユーザもいます。
各テーブルで最高
64個のインデックスが使用可能です。(MySQL
4.1.2では32個)。各インデックスは、1 から 16
個のカラムまたはカラムの一部で構成されます。インデックスの最大幅は
1000 バイトである(これは、MySQL
サーバのコンパイル時に変更可能である)。(InnoDB
では 767) MySQL 4.1.2 では 500
が限度でした。インデックスでは、CHAR、VARCHAR、BLOB、あるいは
TEXT
型のカラムのプリフィックスを使用することができます。
接続性:
クライアントは複数のプロトコルを使用して MySQL に接続できます。
クライアントは、あらゆるプラットフォームで TCP/IP ソケットを使用して MySQL サーバに接続することができます。
WindowsNT ファミリ(NT、2000、XP、2003、または
Vista) の Windows システムでは、サーバが
--enable-named-pipe
オプションで起動された場合、クライアントは名前付きパイプを使用して接続することができます。
MySQL 4.1以降では、--shared-memory
オプションで起動されていれば Windows
のサーバは共有メモリコネクションもサポートされます。クライアントは
--protocol=memory
オプションを使用して共有メモリで接続できます。
Unix システムでは、Unix ドメイン ソケット ファイルを使用して接続することができます。
MySQL クライアント プログラムはさまざまな言語で記述できます。C 言語で記述されたクライアントライブラリは C、C++、あるいは C バインディングを提供するどの言語でも提供されています。Eiffel、Java、Perl、PHP、Python、Ruby、Tcl、そして他言語での API が提供されています。章 23. APIとライブラリー を参照してください。
C、C++、Eiffel、Java、Perl、PHP、Python、Ruby、そして Tcl の API が提供されています。よって、MySQL のクライアントがさまざまな言語で記述できます。章 23. APIとライブラリー を参照してください。
Connector/ODBC (MyODBC) インタフェースによって、ODBC (Open-DataBase-Connectivity)接続を使用するクライアントプログラムに MySQL サポートが提供されます。たとえば、MS Access を使用して MySQL サーバに接続することができます。クライアントは、Windows と Unix のどちらで実行されていてもかまいません。MyODBC ソースが使用可能です。他の多くの機能と同様に、ODBC 2.5 のすべての機能がサポートされます。章 24. MySQL コネクタ を参照してください。
Connector/J interface は JDBC 接続を使用する Java クライアント プログラムの MySQL サポートを提供しています。 クライアントは、Windows と Unix のどちらで実行されていてもかまいません。Connector/J ソースが使用可能です。章 24. MySQL コネクタ を参照してください。
MySQL Connector/NET は、開発者に MySQL 上で安全性の高い高性能データ接続性を要する NET アプリケーションの作成を容易に行えるようにします。要求される ADO.NET インターフェースを実行し、ADO.NET アウェアツールに統合します。開発者は .NET 言語を選択してアプリケーションを作成できます。MySQL Connector/NET は 100% C# で記述され、完全にマネージされた ADO.NET ドライバです。章 24. MySQL コネクタ を参照してください。
ローカライズ:
サーバからクライアントへ多数の言語でエラー メッセージを送信することができます。項4.10.2. 「英語以外のエラーメッセージ」 を参照してください。
latin1
(cp1252)、german、big5、ujis、などのさまざまなキャラクタセットの完全なサポート。例えば、スカンジナビア語の文字
‘å’、‘ä’
および ‘ö’
をテーブル名やカラム名で使用することができます。このオプションは
MySQL MySQL 4.1. 以降で利用できます。
すべてのデータが、選択したキャラクタ セットで保存されます。
ソートは、選択したキャラクタ
セットに基づいて行われます(デフォルトは
latin1
とスウェーデン語によるソート)。これは、MySQL
サーバの起動時に変更することができます。非常に高度なソートの例については、チェコ語のソートコードを参照してください。MySQL
サーバではさまざまなキャラクタ
セットがサポートされており、コンパイル時および実行時に指定することができます。
MySQL 4.1,以降、サーバのタイム ゾーンは大幅に変更可能で、各クライアントは自身のタイム ゾーンを指定できます。 項4.10.8. 「MySQL サーバのタイム ゾーン サポート」.
クライアントとツール:
MySQL AB は複数のクライアント/ユーティリティ プログラムを提供しています。これらの中には mysqldump や mysqladmin といったコマンド ライン プログラム、そして MySQL Administrator や MySQL Query Browser などのグラフィック プログラムも含まれます。
MySQL
サーバには、テーブルのチェック、最適化、および修復を行う
SQL
ステートメントのサポートが組み込まれています。これらのステートメントは、mysqlcheck
クライアントを介してコマンド
ラインから使用可能です。また、MySQL
には、MyISAM
テーブルでこれらの操作を実行するための
myisamchkという非常に高速なコマンド
ライン
ユーティリティが組み込まれています。章 7. クライアントプログラムとユーティリティ
プログラム
を参照してください。
--help または -?
オプションを指定して呼び出すと、すべての
MySQL
プログラムでオンライン ヘルプを参照することができます。
