このセクションでは MySQL Database Software の重要な特徴の一部を説明します。 ほとんどの場合、ロードマップはすべてのバージョンの MySQL に適用されます。 シリーズごとに新しく導入される MySQL の機能については、対応するマニュアルの「新機能」セクションを参照してください。
MySQL 8.0: What Is New in MySQL 8.0
MySQL 5.7: What Is New in MySQL 5.7
MySQL 5.6: What Is New in MySQL 5.6
内部および移植性
C および C++ で記述されています。
さまざまなコンパイラでテストされています。
さまざまなプラットフォームで動作します。 https://www.mysql.com/support/supportedplatforms/database.htmlを参照してください。
移植性のために、CMake を使用して構成します。
Purify (商用メモリーリーク検出システム) と GPL ツールの Valgrind (http://developer.kde.org/~sewardj/) でテストされています。
独立モジュールを備えた多層サーバー設計を使用しています。
カーネルスレッドを使用してマルチスレッド化されるように設計されており、複数の CPU(使用可能な場合) を簡単に使用できます。
トランザクションストレージエンジンと非トランザクションストレージエンジンを備えています。
インデックス圧縮を備えた非常に高速な B-tree ディスクテーブル(
MyISAM
) を使用しています。別のストレージエンジンの追加が比較的容易になるよう設計されています。 これは、社内データベースへの SQL インタフェースを追加する場合に便利です。
スレッドベースの非常に高速なメモリー割り当てシステムを使用しています。
最適化されたネストループ結合を使用して非常に高速な結合を実行します。
インメモリーハッシュテーブルを実装し、一時テーブルとして使用します。
高度に最適化されたクラスライブラリを使用して SQL 関数が実装されるため、最大限の速度が確保されます。 通常は、クエリーの初期化後にメモリー割り当てが行われることはありません。
クライアント/サーバーネットワーク環境で使用するために、サーバーを独立したプログラムとして提供しています。単独のアプリケーションに組み込み (リンク) できるライブラリとしても提供されています。 このようなアプリケーションは単一で、あるいはネットワーク環境の整っていない場所でも使用することができます。
データ型
多数のデータタイプ: 1、2、3、4、および 8 バイト長の符号付き/符号なし整数、
FLOAT
、DOUBLE
、CHAR
、VARCHAR
、BINARY
、VARBINARY
、TEXT
、BLOB
、DATE
、TIME
、DATETIME
、TIMESTAMP
、YEAR
、SET
、ENUM
、および OpenGIS 空間型。 第11章「データ型」 を参照してください。固定長および可変長の文字列型。
ステートメントと関数
-
クエリーの
SELECT
句およびWHERE
句での演算子と関数の完全なサポート。 例:mysql> SELECT CONCAT(first_name, ' ', last_name) -> FROM citizen -> WHERE income/dependents > 10000 AND age > 30;
SQL の
GROUP BY
句およびORDER BY
句の完全なサポート。 グループ関数 (COUNT()
、AVG()
、STD()
、SUM()
、MAX()
、MIN()
、およびGROUP_CONCAT()
) のサポート。標準の SQL 構文および ODBC 構文での
LEFT OUTER JOIN
およびRIGHT OUTER JOIN
のサポート。標準 SQL で必要な、テーブルおよびカラムにおけるエイリアスのサポート。
変更された (影響を受けた) 行の数を返す
DELETE
、INSERT
、REPLACE
、およびUPDATE
のサポート。サーバーに接続する際にフラグを設定することで、代わりに一致したレコードの数を返すことも可能です。データベース、ストレージエンジン、テーブル、およびインデックスに関する情報を取得する、MySQL 固有の
SHOW
ステートメントのサポート。 標準 SQL に従って実装されたINFORMATION_SCHEMA
データベースのサポート。オプティマイザによるクエリーの解決方法を表示する
EXPLAIN
ステートメント。関数名の、テーブル名やカラム名との独立性。 たとえば、
ABS
は有効なカラム名です。 唯一の制限事項は、関数呼び出しで、関数名とその後に続く 「(
」 との間にスペースを使用できないことです。 セクション9.3「キーワードと予約語」を参照してください。同じステートメント内で、さまざまなデータベースのテーブルを参照することができます。
セキュリティー
非常に柔軟でセキュアな権限およびパスワードシステム。ホストベースの検証が可能です。
サーバーに接続する際にすべてのパスワードトラフィックが暗号化されるので、パスワードは安全です。
拡張性と制限
大規模なデータベースのサポート。 当社は、MySQL Server を使用して 50,000,000 レコードが格納されたデータベースを処理しています。 また、MySQL Server を使用して 200,000 テーブル、約 5,000,000,000 行を処理しているユーザーもいます。
テーブルあたり最大 64 個のインデックスをサポートします。 各インデックスは、1 から 16 個のカラムまたはカラムの一部で構成されます。
InnoDB
テーブルの最大インデックス幅は 767 バイトまたは 3072 バイトです。 セクション15.22「InnoDB の制限」を参照してください。MyISAM
テーブルの最大インデックス幅は 1000 バイトです。 セクション16.2「MyISAM ストレージエンジン」を参照してください。 インデックスでは、CHAR
、VARCHAR
、BLOB
、あるいはTEXT
型のカラムのプリフィクスを使用することができます。
接続性
-
クライアントは複数のプロトコルを使用して MySQL Server に接続できます。
クライアントは、あらゆるプラットフォームで TCP/IP ソケットを使用して接続することができます。
Windows システムでは、
named_pipe
システム変数を有効にしてサーバーを起動すると、クライアントは名前付きパイプを使用して接続できます。 Windows サーバーでは、shared_memory
システム変数を有効にして起動した場合、共有メモリー接続もサポートされます。 クライアントは--protocol=memory
オプションを使用して共有メモリーで接続できます。Unix システムでは、クライアントは Unix ドメインソケットファイルを使用して接続することができます。
MySQL クライアントプログラムはさまざまな言語で記述できます。 C 言語で記述されたクライアントライブラリは C、C++、あるいは C バインディングを提供する任意の言語で記述されたクライアントでも使用可能です。
C、C++、Eiffel、Java、Perl、PHP、Python、Ruby、および Tcl 用の API が提供されており、MySQL クライアントを多くの言語で記述できます。 第29章「Connector および API」を参照してください。
Connector/ODBC (MyODBC) インタフェースによって、ODBC (Open DataBase Connectivity) 接続を使用するクライアントプログラムに MySQL サポートが提供されます。 たとえば、MS Access を使用して MySQL Server に接続することができます。 クライアントは、Windows と Unix のどちらで実行されていてもかまいません。 Connector/ODBC ソースが使用可能です。 ほかの多くの機能と同様に、ODBC 2.5 のすべての機能がサポートされます。 「MySQL Connector/ODBC Developer Guide」を参照してください。
Connector/J インタフェースは JDBC 接続を使用する Java クライアントプログラムの MySQL サポートを提供しています。 クライアントは、Windows と Unix のどちらで実行されていてもかまいません。 Connector/J ソースが使用可能です。 MySQL Connector/J 5.1 Developer Guideを参照してください。
MySQL Connector/NET を使用すると、開発者は MySQL との安全で高パフォーマンスなデータ接続を必要とする .NET アプリケーションを簡単に作成できます。 必要な ADO.NET インタフェースを実装し、ADO.NET 対応のツールに統合します。 開発者は、選択した .NET 言語を使用してアプリケーションを構築できます。MySQL Connector/NET は、100% Pure C#で記述された完全管理 ADO.NET ドライバです。 「MySQL Connector/NET Developer Guide」を参照してください。
ローカライズ
サーバーは、クライアントに多数の言語でエラーメッセージを送信することができます。 セクション10.12「エラーメッセージ言語の設定」を参照してください。
latin1
(cp1252)、german
,big5
,ujis
、複数の Unicode 文字セットなど、複数の異なる文字セットの完全なサポート。 たとえば、スカンジナビア語の文字 「å
」、「ä
」、および 「ö
」 をテーブル名やカラム名で使用できます。すべてのデータが、選択した文字セットで保存されます。
ソートおよび比較は、デフォルトの文字セットおよび照合順序に従って行われます。これは、MySQL サーバーの起動時に変更できます (セクション10.3.2「サーバー文字セットおよび照合順序」 を参照)。 非常に高度なソートの例については、チェコ語のソートコードを参照してください。 MySQL Server ではさまざまな文字セットがサポートされており、コンパイル時および実行時に指定することができます。
サーバーのタイムゾーンは動的に変更でき、個々のクライアントは独自のタイムゾーンを指定できます。 セクション5.1.15「MySQL Server でのタイムゾーンのサポート」を参照してください。
クライアントとツール
MySQL には複数のクライアントとユーティリティープログラムが含まれます。 これには、mysqldump および mysqladmin といったコマンド行プログラム、そして MySQL Workbench などのグラフィックプログラムも含まれます。
MySQL Server には、テーブルのチェック、最適化、および修復を行う SQL ステートメントのサポートが組み込まれています。 これらのステートメントは、mysqlcheck クライアントを介してコマンド行から使用可能です。 また、MySQL には、
MyISAM
テーブルでこれらの操作を実行するための myisamchk という非常に高速なコマンド行ユーティリティーが組み込まれています。 第4章「MySQL プログラム」を参照してください。MySQL プログラムを
--help
または-?
オプションを指定して呼び出すと、オンラインヘルプを参照できます。