MySQL データベースソフトウェア
の重要な特徴の一部を以下で説明します。 See
項1.5.1. 「MySQL 4.0 の概要」。
内部および移植性
C および C++ で記述されている。
さまざまなコンパイラでテストされている。
さまざまなプラットフォームで動作する。 See 項2.2.3. 「MySQL がサポートしているオペレーティングシステム」。
移植性のために GNU Automake、Autoconf、および Libtool を使用している。
C、C++、Eiffel、Java、Perl、PHP、Python、Ruby、および Tcl の API が使用可能である。 See 章 11. MySQL API。
カーネルスレッドを使用した完全なマルチスレッド。そのため、使用可能な場合、複数の 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
型。 See
項6.2. 「カラム型」。
固定長および可変長のレコード。
コマンドと関数
クエリの SELECT
節および
WHERE
節での演算子と関数の完全なサポート。たとえば、次のように使用することができる。
mysql>SELECT CONCAT(first_name, " ", last_name)
->FROM tbl_name
->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-92 で必要な、テーブルおよびカラムにおけるエイリアスのサポート。
DELETE
、INSERT
、REPLACE
、および
UPDATE
は、変更された(影響を受けた)レコードの数を返す。サーバに接続する際にフラグを設定することで、代わりに一致したレコードの数を返すことも可能である。
MySQL
固有の
SHOW
コマンドを使用すると、データベース、テーブル、およびインデックスに関する情報を取得することができる。EXPLAIN
コマンドを使用すると、オプティマイザによるクエリの解決方法を決定することができる。
関数名は、テーブル名やカラム名と衝突しない。たとえば、ABS
は有効なカラム名である。関数呼び出しで、関数名とその後に続く
‘(
’
との間にスペースを使用できない点が唯一の制限事項である。
See 項6.1.7. 「MySQL での予約語の扱い」。
同一のクエリにさまざまなデータベース内のテーブルを混在させることができる(バージョン 3.22 以降)。
セキュリティ
非常に柔軟で安全な特権およびパスワードシステム。ホストベースの検証が可能である。サーバに接続する際にすべてのパスワードトラフィックが暗号化されるので、パスワードは安全である。
拡張性と範囲
大規模なデータベースを処理する。当社は、MySQL
サーバ
を使用して 50,000,000
レコードが格納されたデータベースを処理している。また、MySQL
サーバ
を使用して 60,000
テーブル、約 5,000,000,000
レコードを処理しているユーザもいる。
各テーブルで最高 32
個のインデックスが使用可能である。各インデックスは、1
から 16
個のカラムまたはカラムの一部で構成される。インデックスの最大幅は
500 バイトである(これは、MySQL
サーバ
のコンパイル時に変更可能である)。インデックスでは、CHAR
型または VARCHAR
型のカラムのプリフィックスを使用することができる。
接続性
クライアントは、あらゆるプラットフォームで
TCP/IP ソケットを使用して
MySQL
サーバに接続することができる。NT
ファミリ(NT、2000、または XP) の Windows
システムでは、クライアントは名前付きパイプを使用して接続することができる。Unix
システムでは、Unix
ドメインソケットファイルを使用して接続することができる。
Connector/ODBC
インタフェースによって、ODBC(Open-DataBase-Connectivity)接続を使用するクライアントプログラムに
MySQL
サポートが提供される。たとえば、MS
Access を使用して MySQL
サーバに接続することができる。クライアントは、Windows
と Unix
のどちらで実行されていてもかまわない。Connector/ODBC
ソースが使用可能である。他の多くの機能と同様に、ODBC
2.5 のすべての機能がサポートされる。
See 項11.2. 「MySQL の ODBC サポート」。
ローカライズ
サーバからクライアントへ多数の言語でエラーメッセージを送信することができる。 See 項4.7.2. 「英語以外のエラーメッセージ」。
ISO-8859-1(Latin1)、german、big5、ujis
などのさまざまなキャラクタセットの完全なサポート。たとえば、スカンジナビア語の文字
‘â
’、‘ä
’、および
‘ö
’
をテーブル名やカラム名で使用することができる。
すべてのデータが、選択したキャラクタセットで保存される。通常の文字列カラムの比較はすべて、大文字と小文字を区別しない。
ソートは、選択したキャラクタセットに基づいて行われる(デフォルトはスウェーデン語によるソート)。これは、MySQL
サーバの起動時に変更することができる。非常に高度なソートの例については、チェコ語のソートコードを参照。MySQL
サーバ
ではさまざまなキャラクタセットがサポートされており、コンパイル時および実行時に指定することができる。
クライアントとツール
MySQL
サーバには、テーブルのチェック、最適化、および修復を行う
SQL
ステートメントのサポートが組み込まれている。これらのステートメントは、mysqlcheck
クライアントを介してコマンドラインから使用可能である。また、MySQL
には、MyISAM
テーブルでこれらの操作を実行するための
myisamchk
という非常に高速なコマンドラインユーティリティが組み込まれている。
See 章 4. データベース管理。
--help
または
-?
オプションを指定して呼び出すと、すべての
MySQL
プログラムでオンラインヘルプを参照することができる。
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.