1.3.2 MySQL の主な機能

このセクションでは MySQL Database Software の重要な特徴の一部を説明します。セクション1.5「MySQL 開発履歴」 も参照してください。ほとんどの場合、ロードマップはすべてのバージョンの MySQL に適用されます。シリーズごとに新しく導入される MySQL の機能については、対応するマニュアルの新機能セクションを参照してください。

内部および移植性

  • C および C++ で記述されています。

  • さまざまなコンパイラでテストされています。

  • さまざまなプラットフォームで動作します。http://www.mysql.com/support/supportedplatforms/database.html を参照してください。

  • 移植性のために、MySQL 5.5 以降では CMake を使用しています。以前のシリーズでは GNU Automake、Autoconf、および Libtool を使用しています。

  • Purify (商用メモリーリーク検出システム) と GPL ツールの Valgrind (http://developer.kde.org/~sewardj/) でテストされています。

  • 独立モジュールを備えた多層サーバー設計を使用しています。

  • カーネルスレッドを使用した完全なマルチスレッドとなるよう設計され、使用可能な場合、複数の CPU を簡単に使用することができます。

  • トランザクションストレージエンジンと非トランザクションストレージエンジンを備えています。

  • インデックス圧縮を備えた非常に高速な B-tree ディスクテーブル(MyISAM) を使用しています。

  • 別のストレージエンジンの追加が比較的容易になるよう設計されています。これは、社内データベースへの SQL インタフェースを追加する場合に便利です。

  • スレッドベースの非常に高速なメモリー割り当てシステムを使用しています。

  • 最適化されたネストループ結合を使用して非常に高速な結合を実行します。

  • インメモリーハッシュテーブルを実装し、一時テーブルとして使用します。

  • 高度に最適化されたクラスライブラリを使用して SQL 関数が実装されるため、最大限の速度が確保されます。通常は、クエリーの初期化後にメモリー割り当てが行われることはありません。

  • クライアント/サーバーネットワーク環境で使用するために、サーバーを独立したプログラムとして提供しています。単独のアプリケーションに組み込み (リンク) できるライブラリとしても提供されています。このようなアプリケーションは単一で、あるいはネットワーク環境の整っていない場所でも使用することができます。

データ型

  • 多数のデータタイプ: 1、2、3、4、および 8 バイト長の符号付き/符号なし整数、FLOATDOUBLECHARVARCHARBINARYVARBINARYTEXTBLOBDATETIMEDATETIMETIMESTAMPYEARSETENUM、および 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 で必要な、テーブルおよびカラムにおけるエイリアスのサポート。

  • 変更された (影響を受けた) 行の数を返す DELETEINSERTREPLACE、および UPDATE のサポート。サーバーに接続する際にフラグを設定することで、代わりに一致したレコードの数を返すことも可能です。

  • データベース、ストレージエンジン、テーブル、およびインデックスに関する情報を取得する、MySQL 固有の SHOW ステートメントのサポート。MySQL 5.0 では、INFORMATION_SCHEMA データベースのサポートも、標準 SQL に基づき追加されています。

  • オプティマイザによるクエリーの解決方法を表示する EXPLAIN ステートメント。

  • 関数名の、テーブル名やカラム名との独立性。たとえば、ABS は有効なカラム名です。唯一の制限事項は、関数呼び出しで、関数名とその後に続く ( との間にスペースを使用できないことです。セクション9.3「予約語」を参照してください。

  • 同じステートメント内で、さまざまなデータベースのテーブルを参照することができます。

セキュリティー

  • 非常に柔軟でセキュアな権限およびパスワードシステム。ホストベースの検証が可能です。

  • サーバーに接続する際にすべてのパスワードトラフィックが暗号化されるので、パスワードは安全です。

拡張性と制限

  • 大規模なデータベースのサポート。当社は、MySQL Server を使用して 50,000,000 レコードが格納されたデータベースを処理しています。また、MySQL Server を使用して 200,000 テーブル、約 5,000,000,000 行を処理しているユーザーもいます。

  • 各テーブルで最高 64 個のインデックスをサポートします。(MySQL 4.1.2 では 32 個)。各インデックスは、1 から 16 個のカラムまたはカラムの一部で構成されます。インデックスの最大幅は InnoDB テーブルでは 767 バイト、MyISAM では 1000 バイトです。MySQL 4.1.2 では 500 が限度でした。インデックスでは、CHARVARCHARBLOB、あるいは TEXT 型のカラムのプリフィクスを使用することができます。

接続性

  • クライアントは複数のプロトコルを使用して MySQL Server に接続できます。

    • クライアントは、あらゆるプラットフォームで TCP/IP ソケットを使用して接続することができます。

    • Windows NT ファミリ (NT、2000、XP、2003、または Vista) の Windows システムでは、サーバーが --enable-named-pipe オプションで起動された場合、クライアントは名前付きパイプを使用して接続できます。MySQL 4.1 以降では、--shared-memory オプションで起動されていれば Windows のサーバーは共有メモリー接続もサポートします。クライアントは --protocol=memory オプションを使用して共有メモリーで接続できます。

    • Unix システムでは、クライアントは Unix ドメインソケットファイルを使用して接続することができます。

  • MySQL クライアントプログラムはさまざまな言語で記述できます。C 言語で記述されたクライアントライブラリは C、C++、あるいは C バインディングを提供する任意の言語で記述されたクライアントでも使用可能です。

  • C、C++、Eiffel、Java、Perl、PHP、Python、Ruby、および Tcl 用の API が提供されており、MySQL クライアントを多くの言語で記述できます。第23章「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 Developer Guide」を参照してください。

  • MySQL Connector/Net により、開発者は MySQL 上でセキュアな高性能データ接続性を要する .NET アプリケーションの作成を容易に行えます。必要な ADO.NET インタフェースを実装し、ADO.NET 対応のツールに統合します。開発者は好みの .NET 言語でアプリケーションを構築できます。MySQL Connector/Net は 100% C# で記述され、完全に管理される ADO.NET ドライバです。「MySQL Connector/Net Developer Guide」を参照してください。

ローカライズ

  • サーバーは、クライアントに多数の言語でエラーメッセージを送信することができます。セクション10.2「エラーメッセージ言語の設定」を参照してください。

  • latin1 (cp1252)、germanbig5ujis、などのさまざまな文字セットを完全にサポートします。たとえば、スカンジナビア語の文字 åä、および ö をテーブル名やカラム名で使用できます。ユニコードは MySQL 4.1 以降でサポートされます。

  • すべてのデータが、選択した文字セットで保存されます。

  • ソートと比較は、選択した文字セットと照合順序に基づいて行われます (デフォルトは latin1 とスウェーデン語の照合順序)。これは、MySQL Server の起動時に変更することができます。非常に高度なソートの例については、チェコ語のソートコードを参照してください。MySQL Server ではさまざまな文字セットがサポートされており、コンパイル時および実行時に指定することができます。

  • MySQL 4.1 では、サーバーのタイムゾーンは動的に変更可能で、各クライアントは独自のタイムゾーンを指定できます セクション10.6「MySQL Server でのタイムゾーンのサポート」

クライアントとツール

  • MySQL には複数のクライアントとユーティリティープログラムが含まれます。これには、mysqldump および mysqladmin といったコマンド行プログラム、そして MySQL Workbench などのグラフィックプログラムも含まれます。

  • MySQL Server には、テーブルのチェック、最適化、および修復を行う SQL ステートメントのサポートが組み込まれています。これらのステートメントは、mysqlcheck クライアントを介してコマンド行から使用可能です。また、MySQL には、MyISAM テーブルでこれらの操作を実行するための myisamchk という非常に高速なコマンド行ユーティリティーが組み込まれています。第4章「MySQL プログラム を参照してください。

  • MySQL プログラムを --help または -? オプションを指定して呼び出すと、オンラインヘルプを参照できます。


User Comments
Sign Up Login You must be logged in to post a comment.