※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

- 人目 ( ̄ー ̄)/~~ アリガトネ




  1. スケーラビリティーの改善
  2. InnoDB I/Oサブシステムの変更
  3. 診断・モニタ機能
  4. Solalisのサポート拡張

本章では、MySQL 5.5で何が出来るようになり、何がなくなったのかについてまとめます

新規機能

以下の機能ががMySQL5.5にて加えられました

スレッドプーリング

MySQLサーバでの標準のスレッドハンドリングモデルは、クライアントのコネクションごとにスレッドを1つたて、ステートメントを実行します。多くのクライアントがサーバに接続し、ステートメントを実行するようになるにつれ、全体の性能が低下します。MySQLの商用版である、MySQL 5.5.16では、スレッドプールプラグインがあり、それによってオーバーヘッドを減らしパフォーマンスを改善するように設計されたスレッドハンドリングのモデルが従来のものの替わりに利用できるよう、提供されています。プラグインはスレッドプールを実装しており、多数のクライアント接続があった場合のステートメント実行スレッドを効率的にさばくことにより、サーバのパフォーマンスを向上させています。詳細の情報に関しては、8.11.6章のスレッドプールプラグインを参照してください。

認証の接続 ( Pluggable Authentication )

MySQLの認証は、新たに2つの方法(pluggable authenticationおよびプロキシユーザ機能)をサポートしています。pluggable authenticationでは、サーバーは外部からのクライアント接続に対する認証のプラグインを利用することが出来、クライアントは対応するサーバーのプラグインと適切に動作する認証プラグインをロード出来ます。これによって、クライアントがMySQLサーバに、MySQLのビルトインの認証(mysql.userテーブルに格納されているネイティブのMySQLパスワードベースのもの)以外の適切な認証方法のクレデンシャルで接続できます。例えば、LDAP,Kerberos,PAMまたはWindowsログインIDなどの外部の認証方法の利用の為のプラグイン利用が考えられます。プロキシユーザ機能は、1ユーザとして認証し接続したクライアントが、接続中のアクセス制御の為に、異なるユーザの権限を持つように出来る機能です。実際に、1ユーザがもう片方のユーザを装います。詳細は6.3.6章のPluggable Authenticationおよび、6.3.7章のプロキシユーザを参照してください。

商用配布バージョンのMySQL5.5.16には、外部の認証を用いてMySQLのユーザ認証を可能にする2つのプラグインがあります。

  • PAM(Pluggable Authentication Modules)は、システムが標準のインターフェースで様々な認証方にアクセス出来るようにします。PAM認証プラグインは、MySQLサーバにMySQLユーザの認証用にMySQLサーバがPAMを利用できる機能を提供します。

  • Windows版のMySQLでは、MySQLサーバが、クライアント接続の認証にネイティブWindowsサービスを利用できる認証プラグインがあります。Windowsにログインしているユーザは、MySQLクライアントプログラムから追加のパスワードを利用することなく、ログイン環境での情報に基づいてサーバに接続できます。

これらの認証プラグインによって、MySQLサーバがMySQL権限テーブル以外で定義されたユーザからの接続が出来るようになり、またMySQLプロキシユーザ機能もサポートします。各プラグインがログインユーザと異なるユーザ名を返し、
これはプラグインが外部で認証されたユーザが持つべき権限を明確に定めたMySQLユーザを返せることを意味します。
詳細な情報は、6.3.6.2章の「PAM認証プラグイン」および6.3.6.3章の「Windowsネイティブ認証プラグイン」を参照してください。

マルチコアに対するスケーラビリティー

マルチコアCPUのスケーラビリティーが改善されています。
現在のハードウェア開発のトレンドはCPUのクロック数を改善し続けるというよりは、コア数を増やすという方向に向かっています。CPUが速くなるまで待つことで、データベースの性能を向上させるということではたちゆかなくなりました。その代わりに、マルチコアが利用可能なプロセスサイクルを最大限に利用できるようにすることが必要となっています。MySQL5.5はSMPシステムの特徴の利点を生かし、マルチコアを最大限に活用する阻害となるMySQLアーキテクチャのボトルネックを取り除こうとしています。これはInnoDB、とりわけロックとメモリの管理に焦点をあてたものです。詳細は1.4.1章の「スケーラビリティーの改善」を参照して下さい。

InnoDB I/Oサブシステム

InnoDB I/Oサブシステムは、利用可能なI/Oをより有効に活用出来るように変わりました。
詳細は1.4.2章の「InnoDB I/Oサブシステム変更点」を参照してください。

診断機能の向上

実行・性能情報へのアクセスが改善されました。
診断機能の向上には、パフォーマンススキーマ(MySQLサーバの実行をローレベルでモニタする為のもの)や、DTraceプローブ、SHOW ENGINE INNODB STATUSの出力拡張、デバッグ同期、そして新たなステータス変数があります。
詳細は、1.4.3章の「診断・モニタ機能」を参照してください。

Solaris

いくつかの修正でSolalis上でのMySQLサーバの操作方法が改善されました。
詳細は1.4.4章の「Solarisの拡張サポート」を参照してください。

デフォルトストレージエンジン

新規テーブルのデフォルトストレージエンジンは、MYISAMではなくInnoDBです。
詳細は14.3.1章の「MySQLデフォルトストレージエンジン InnoDB」を参照してください。

MySQLクラスター

MySQLクラスターは、MySQL5.5ベースのNDBストレージエンジンの新規開発版であるバージョン7.2で、別の商品としてリリースされています。
クラスタリングの機能は主流のMySQLサーバ5.5のリリースでは利用できません。MySQLクラスターNDB7.2に関する詳細な情報は、17章の「MySQLクラスター NDB7.2」を参照してください。

MySQLクラスターのリリースは、3パートのNDBバージョン番号で判別可能です。現在はMySQLクラスターNDB7.1が最新の安定版(GA:General Available)です。
MySQLクラスターNDB6.3とMySQLクラスターNDB7.0も利用可能です。これらのバージョンのMySQLクラスターはMySQLサーバ5.1ベースで、MySQL5.1のマニュアルにドキュメントが記載されています。詳細はMySQLクラスターNDB 6.1-7.1を参照してください。

準同期レプリケーション

マスターで実施されたコミットは、少なくとも1つのスレーブがトランザクションイベントを受取り、ログを生成し終えたと確認し終わるまで、ブロックされます。
準同期レプリケーションンは、オプションのプラグインコンポーネントとして実装されています。詳細は、16.3.8章の「準同期レプリケーション」を参照してください。

Unicodeのサポート

ユニコード文字の追加対応が行われました。BMP(標準多言語水準)以外の文字への対応です。これらの新しいユニコード文字セットには、utf16,utf32,そしてutf8mb4といった補助的な文字があります。詳細は、10.1.10章の「Unicodeサポート」を参照してください。

パーティショニング

テーブルパーティショニング機能が拡張されました。

  • 2つの新型のユーザー定義パーティショニグ手法がサポートされました。レンジカラムパーティショニングは、レンジパーティショニングの拡張で、リストカラムパーティショニングはリストパーティショニングの拡張です。それぞれが、MySQLのパーティショニング機能の拡張になります。
    • パーティショニングレンジあるいはパーティショニグリストをDATE, DATETIMEもしくはstring値(CHARやVARCHARなど)に基づいて定義することが可能です。レンジカラムか、リストカラムによってテーブルがパーティショニングされた場合は、レンジやリストは、複数列値で定義することが出来ます。これらのレンジあるいはリストは、16列まで対応しています。
    • これらのパーティショニング型を利用して定義されたテーブルに対し、パーティショニングプルーニングは(異なる)列値と定数の複数比較しているWHERE区のクエリを最適化することが出来ます。例えば、a = 10 AND b > 5や、a < "2005-11-25" AND b = 10 AND c = 50がその例となります。

詳細は、18.2.1の「レンジパーティショニング」、18.2.2の「リストパーティショノング」を参照して下さい。

  • ALTER TABLE ... TRUNCALTE PARTITIONステートメントを使ったパーティションテーブルの、1つ以上のパーティションから全ての行を削除可能となりました。このステートメントを実行すると、テーブルの構造に影響を与えずに行の削除を行います。TRUNCATE PARTITION節のパーティションは、連続である必要はありません。

  • パーティショニングされたMyISAMテーブル(CACHE INDEXとLOAD INTO CACHEステートメントを使ったテーブル)のインデクスへのキーキャッシュがサポートされています。また、キーキャッシュは全パーティションテーブルのインデクスがロードされるか、1つ以上のパーティションのインデクスがロードされた際に定義されます。後者ではパーティションは連続である必要はありません。

  • 新たな TO_SECONDS()関数は、DATEまたはDATETIME表記を0年からの秒数の数値に変換します。これは、一般の関数ですが、パーティショニングに有用です。
パーティショニングの表記に恐らく利用され、そうすればパーティショニングプルーニングがこれらの表現を定義したテーブルをサポートします

シグナル/リシグナル

SQL標準のSIGNALとRESIGNALステートメントをサポートします。詳細は13.6.7章の「コンディショニングハンドリング」を参照してください

IPv6サポート

MySQLサーバはIPv6で接続するクライアントからのTCP/IPコネクションを許可できます。詳細は5.1.8章の「IPv6サポート」を参照してください

XML

新規のLOAD XML INFILEステートメントなどのXML機能の拡張。詳細は13.2.7章「LOAD XML Syntax」を参照してください。

ビルトコンフィギュレーション

MySQLリリースはGNUオートツールではなく、CMakeを使ってビルとされています。それに伴い、ソースコードからのMySQLインストールマニュアルが、CMakeをどう使ってMySQLをビルドするかを記載するように更新されました。詳細は2.9章の「MySQLのソースコードからのインストール」を参照してください。

ビルドは、Windowsを含め、全てのプラットフォーム上で同様に扱うことが出来、特定のプラットフォーム用の記載をする章はもうなくなりました。

廃止された機能

以下の構文が廃止され、MySQL5.5から削除されました。代替構文が示されている個所については、アプリケーションを修正する必要があります。

  • The language system variable (use lc_messages_dir and lc_messages).
  • The log_bin_trust_routine_creators system variable (use log_bin_trust_function_creators).
  • The myisam_max_extra_sort_file_size system variable.
  • The record_buffer system variable (use read_buffer_size).
  • The sql_log_update system variable.
  • The Innodb_buffer_pool_read_ahead_rnd and Innodb_buffer_pool_read_ahead_seq status variables (use Innodb_buffer_pool_read_ahead and -Innodb_buffer_pool_read_ahead_evicted).
  • The table_type system variable (use storage_engine).
  • The FRAC_SECOND modifier for the TIMESTAMPADD() function (use MICROSECOND).
  • The TYPE table option to specify the storage engine for CREATE TABLE or ALTER TABLE (use ENGINE).
  • The SHOW TABLE TYPES SQL statement (use SHOW ENGINES).
  • The SHOW INNODB STATUS and SHOW MUTEX STATUS SQL statements (use SHOW ENGINE INNODB STATUS and SHOW ENGINE INNODB MUTEX).
  • The SHOW PLUGIN SQL statement (use SHOW PLUGINS).
The LOAD TABLE ... FROM MASTER and LOAD DATA FROM MASTER SQL statements (use mysqldump or mysqlhotcopy to dump tables and mysql to reload dump files).
  • The BACKUP TABLE and RESTORE TABLE SQL statements (use mysqldump or mysqlhotcopy to dump tables and mysql to reload dump files).
  • TIMESTAMP(N) data type: The ability to specify a display width of N (use without N).
  • The --default-character-set and --default-collation server options (use --character-s-et-server and --collation-server).
  • The --default-table-type server option (use --default-storage-engine).
  • The --delay-key-write-for-all-tables server option (use --delay-key-write=ALL).
  • The --enable-locking and --skip-locking server options (use --external-locking and --skip-external-locking).
  • The --log-bin-trust-routine-creators server option (use --log-bin-trust-function-creators).
  • The --log-long-format server option.
  • The --log-update server option.
  • The --master-xxx server options to set replication parameters (use the CHANGE MASTER TO statement instead): --master-host, --master-user, --master-password, --master-port, --master-connect-retry, --master-ssl, --master-ssl-ca, --master-ssl-capath, --master-ssl-cert, --master-ssl-cipher, --master-ssl-key.
  • The --safe-show-database server option.
  • The --skip-symlink and --use-symbolic-links server options (use --skip-symbolic-links and --symbolic-links).
  • The --sql-bin-update-same server option.
  • The --warnings server option (use --log-warnings).
  • The --no-named-commands option for mysql (use --skip-named-commands).
  • The --no-pager option for mysql (use --skip-pager).
  • The --no-tee option for mysql (use --skip-tee).
  • The --position option for mysqlbinlog (use --start-position).
  • The --all option for mysqldump (use --create-options).
  • The --first-slave option for mysqldump (use --lock-all-tables).
  • The --config-file option for mysqld_multi (use --defaults-extra-file).
  • The --set-variable=var_name=value and -O var_name=value general-purpose options for setting program variables (use --var_name=value).
  • The --with-pstack option for configure and the --enable-pstack option for mysqld.