minimize

事業拡大のため、新しい仲間を募集しています。
→詳しくはこちら

MySQLの起動オプションについて解説をします。

オプション指定方法

起動オプションを指定する方法は2つあります。
一つは、mysqldコマンドを実行するときにコマンドラインオプションとして指定する方法です。
もう一つは、設定ファイルを用意してその中に記述する方法です。
通常は後者を利用します。
起動時に変更したいものに関しては、コマンドラインオプションを利用しましょう。

設定ファイルは、WindowsかUnix(Linux)によってファイルが異なります。

Windowsの場合

以下の4箇所から読み取ります。

Unixの場合

複数の設定ファイルが存在した場合、後ろで定義したオプションの方が
前で定義した同一オプションより優先されます。
なお、コマンドラインオプションは全ての設定ファイルよりも優先されます。

オプション一覧

オプション一覧を紹介します。

なお、ここで記述したオプション指定方法はコマンドラインオプションでの指定方法です。
設定ファイルに記述する場合は、-- を除いた部分を1行ずつ記述します。
例えば、コマンドラインオプションで以下のような指定をする場合

--basedir=/mysql --big-tables

設定ファイルで同等の内容を記述するには以下のように記述します。

[mysqld]
basedir=/mysql
big-tables

[mysqld] という部分は、オプションを適用するプログラム名です。
この他にも mysqladminmysql などが使用できます。

以下、MySQL5.0.16に対応したシステム変数一覧です。

一般

--allow-suspicious-udfs

MySQL5.0.3から導入されました。
メイン関数しか持っていないユーザ定義関数を
ロードすることが出来るかどうかを制御します。

ユーザ定義関数とは、C言語で記述された関数の事を指します。
例えばxxxという名前のユーザ関数を定義するときは
xxx() や xxx_add() といった(C言語の)関数を定義することによって
ユーザ関数を作成できます。
ここでいうメイン関数とは xxx() の事です。

デフォルトでこのオプションはOFFになっていて、
少なくとも一つの追加関数(xxx_addのような)を持ったユーザ定義関数のみ
ロードする事が出来ます。
これによって、不正なユーザ定義関数がロードされる危険性を防ぎます。

--ansi

MySQL構文ではなく、ANSIに沿ったSQL文を使用します。

-b --basedir=path

基準パスを指定します。これはMySQLがインストールされているディレクトリを指します。

--bind-address

バインドするIPアドレス。

--bootstrap

mysql_install_db スクリプト実行時に使用できるオプションです。
MySQLサーバを起動せずに権限テーブルを作成します。

--character-set-server=name

デフォルトの文字コードを指定します。

--character-sets-dir

キャラクタセットが格納されているディレクトリを指定します。

--chroot=path

MySQLサーバ起動の間、chroot() システムコールを使用することによって
閉じられた環境でサーバを起動させます。
これは推奨できるセキィリティ対策です。
このオプションを使用することによって、
LOAD DATA INFILE および SELECT ... INTO OUTFILE 文のいくらかが
制限されることに注意して下さい。

--console

強制的に、標準出力へエラーログメッセージを出力します。

--core-file

mysqldが異常終了した場合に、コアファイルを作成します。

--collation-server=collation

サーバのデフォルトcollation(照合順序)を指定します。

-h --datadir=path

使用するデータベースルートのパスを指定します。
通常は、basedir/data になります。

--debug[=debug_options], -# [debug_options]

--with-debug オプション付きでコンパイルされたMySQLを使っている場合、
このオプションを使うことによって
トレースファイルを取得することが出来ます。
[debug_options] には 'd:t:o,file_name' のような文字列を指定します。

--default-storage-engine=type

このオプションは --default-table-type のシノニム(別名)です。

--default-table-type=type

テーブルのデフォルト種別を指定します。
デフォルトは MyISAM です。

--default-time-zone=type

サーバのデフォルトタイムゾーンを指定します。
このオプションによって、
グローバルスコープの time_zone システム変数がセットされます。

--delay-key-write[= OFF | ON | ALL]

このオプションによって、delay_key_write システム変数がセットされます。

--des-key-file=file_name

DES_ENCRYPT() および DES_DECRYPT() 関数で使われる基準キーを
指定したファイルから読み込みます。

--enable-named-pipe

名前付きパイプの使用を有効にします。
このオプションはWindows(2000以降)でのみ適用されます。
さらに、名前付きパイプによる接続をサポートする
mysqld-ntおよびmysqld-max-ntサーバでのみ使用されます。

--exit-info[=flags], -T [flags]

mysqldそのものをデバッグするときに使用するフラグを指定します。

--external-locking

システムロックを有効にします。
Linuxなど、lockd が完全に動作しないシステムでこのオプションを使用すると
mysqldは簡単にデッドロックしてしまいます。

たくさんのMySQLプロセスからMyISAMテーブルを更新するために
このオプションを使用するなら、
--delay-key-write=OFF --query-cache-size=0
というオプションも一緒に使用した方が良いでしょう。

--flush

各SQLコマンド実行後、ディスクへの変更をすべてフラッシュします。
これは処理速度を低下されますが、クラッシュに対してはより安全です。

--init-file=name

サーバ起動時にこのファイルから読み込んだSQL文を実行します。

-L --language=name

エラーメッセージに使用する言語(もしくは、言語情報が格納されたディレクトリ)を指定します。
これによって、エラーメッセージをカスタマイズすることも可能です。

--large-pages

MySQL5.0.3から導入されました。

いくつかのオペレーティングシステムでは、デフォルト(通常は4KB)よりも
大きいメモリページをサポートしています。
サポートの実装はハードウェアやOSに依存しています。
大量のメモリアクセスがあるアプリケーションでは、
大きなメモリページを使うことによってパフォーマンスを改善できることがあります。

現在、MySQLはLinux実装でのみこれをサポートしています。
Linuxではこれを HugeTLB と呼んでいます。
FreeBSDやSolaris、その他のOSでもサポートする計画もあります。

これをサポートするためには、Linuxで HugeTLB メモリプールを設定する必要があります。
これには通常カーネルのコンパイルが必要です。

--low-proirity-updates

テーブル編集操作(UPDATE/INSERT/DELETE)の優先順位を、選択操作(SELECT)よりも低くします。
なお、この動作はSQL文で LOW_PRIORITY キーワードを指定したり
LOW_PRIORITY_UPDATES システム変数(セッションスコープ)を
変えることによって行うことも出来ます。

--memlock

メモリ内のmysqldプロセスをロックします。
これは、mlockall() システムコールをサポートしている
Solarisのようなシステム上で有効です。
OSがmysqldをディスクスワップしてしまう問題を解決してくれるかもしれません。

このオプションを使用するためには、mysqldをrootユーザで実行する必要があります。
これは通常セキュリティの観点から言って好ましくない方法です。

--myisam-recover[=option[,option...]]

テーブルを開くときに、テーブルがクラッシュしていないかどうかをチェックして修復を行います。
DELAY_KEY_WRITE付きのテーブルを使用している場合などに使います。

オプションにより、修復方法が決定されます。複数指定可能です。

  • DEFAULT

    どのオプションも指定しない場合と同じです。

  • BACKUP

    修復中にデータテーブルが変更された場合、バックアップファイルを作成します。

  • FORCE

    テーブル中のレコードがいくつか失われる場合でも、強制的に修復を実行します。

  • QUICK

    削除ブロックが無い場合、テーブル内のレコードをチェックしません。
    を行いたくない場合、明示的に
    --myisam-recover=""
    うオプションを指定する必要があります。

--old-passwords

MySQL4.1から、パスワード認証方法が変わりました。
これによって、MySQL4.0以前のクライアントでは接続が出来ません。
このオプションを指定すると、MySQL4.0以前のパスワードを強制的に使用します。

--one-thread

mysqldが一つのスレッドしか使用しないようにします(Linux上でのデバッグ用)。

--open-files-limit=count

mysqldが利用できるファイル記述子の数を変更します。

--pid-file=file

safe_mysqld プログラムから使用されるpidファイルを指定します。

-P --port=...

TCP/IP 接続時に使用するポート番号を指定します。
デフォルトは 3306 です。

--safe-mode

いくつかの最適化ステージを実行しない形でmysqldを動作させます。

--safe-user-create

このオプションを有効にすると、
GRANT文を使用したユーザの作成が出来なくなります。
ユーザを作成するには、mysql.userテーブルを直接編集する必要があります。
このため、このテーブルを編集できる権限のあるアカウントからのみ
ユーザ作成が可能になります。

--secure-auth

古い(MySQL4.0以前)パスワード形式による認証を許可しません。

--shared-memory

ローカル接続時の共有メモリ接続を有効にします。
このオプションはWindowsでのみ有効です。

--shared-memory-base-name=name

共有メモリ接続時に使用する名前を指定します。
このオプションはWindowsでのみ有効です。

--skip-concurrent-insert

MyISAMテーブルに対してSELECT文とINSERT文の同時実行を無効にします。
このオプションは、この動作に関してバグがあると思われるときだけ有効にして下さい。

--skip-external-locking

システムロックを使わないようにします。
myisamchk を使うとき、サーバをシャットダウンしておく必要があります。
これを避けるために、CHECK TABLE 文を利用して(サーバをシャットダウンせずに)
MyISAMテーブルをチェックすることが出来ます。

--skip-grant-tables

サーバが一切の権限システムを使用しないようにします。
これによって、全ての人が全てのデータベースにフルアクセスできるようになります。
言うまでもありませんが、
このオプションは外部からの接続を完全に遮断した状態で利用して下さい。

--skip-host-cache

MySQLは、IPへの名前解決にホスト名キャッシュを利用します。
これによって、一回接続したホスト名は再びDNSに問い合わせにいくことをしません。
このオプションを指定すると、毎回の接続ごとにDNSサーバに問い合わせを行います。

--skip-name-resolve

ホスト名の名前解決を行いません。つまり、DNSサーバを利用しません。
この場合、全ての接続はlocalhostまたはIPアドレスを介して行う必要があります。

--skip-networking

TCP/IP 接続を使用せず、Windowsの名前付きパイプもしくはUnixのソケット経由でのみ接続を許可します。
外部からこのサーバに接続する事が無い場合には、このオプションは(高速化の為に)非常に有効です。
が、JavaのJDBCを使ってサーバに接続する場合には TCP/IP 接続しか使えないので
このオプションは指定してはいけません(JDBC3.0以降では不明ですが)。

standalone

Windowsシステムでのみ有効です。
MySQLサーバをサービスとして起動せずにスタンドアロンで起動します。

--symbolic-links
--skip-symbolic-links

シンボリックリンクのサポートを有効または無効にします。

--skip-safemalloc

--with-debug=full オプションを付けてMySQLをコンパイルしたとき
全てのMySQLプログラムはメモリの確保/開放時に
メモリのオーバーランをチェックします。
このチェックはとても遅いので、このオプションを付けることによって
このチェックを行わないようにする事ができます。

--skip-show-database

skip_show_database システム変数をセットします。
詳細はそちらのページを参考にして下さい。

--skip-stack-trace

スタックトレースを書き出さないようにします。
このオプションは、mysqldをデバッガ上で動作させているときに有用です。
いくつかのシステムでは、コアファイルを取得するために
このオプションを使う必要があります。

--skip-thread-priority

応答時間を短くするため、スレッド優先度の使用を無効にします。

--socket=path

Unixでは、ローカル接続に使用するソケットファイルを指定します。
Windowsでは、名前付きパイプを使用するローカル接続用パイプ名(デフォルトではMySQL)を指定します。

複数のMySQLサーバを同一マシン上で動かす場合には、このオプションを使用して
サーバ毎に別々のソケットファイルを指定する必要があります。
参考コラム : 複数バージョンのMySQLを同一マシンから動かす

--sql-mode=value[,value[,value...]]

他ベンダーのデータベースやバージョンの違うMySQLとの互換性の為に使用します。
詳細は不明です。

--temp-pool

サーバによって複数のテンポラリファイルが作成されるときの問題を解消します。
これは主にLinuxマシンによる問題を回避するためのものです。

--transaction-isolation=level

デフォルトのトランザクション隔離レベルを指定します。

-t --tmpdir=path

テンポラリファイルの作成に使用されるディレクトリのパスを指定します。
デフォルトでは /tmp です。
MySQL4.1以降では、複数のパスを指定することが可能です。
Unixではコロン(:)、Windowsではセミコロン(;)を区切り文字にします。
この場合、これらのパスはラウンドロビン方式で利用されます。

-u --user=[user_name | userid]

mysqldデーモンを実行するユーザ名(またはユーザID)を指定します。
mysqldをrootで実行しようとした場合、この項目は必須となります。
MySQLは、

--user=root

という直接の指定が無い場合、rootからの実行を許可しません。

-v --verbose

--help オプションを併用することで、詳細なヘルプを表示します。

-V --version

バージョン情報を表示して終了します。

ログ関連

-l --log[=file]

接続情報と全てのクエリー文をファイルに記録します。
放っておくと結構大きなファイルになるので気を付けましょう。

--log-error[=file]

エラーと起動メッセージをファイルに記録します。

--log-queries-not-using-indexes

MySQL4.1で導入されました。
インデックスを使わないクエリを、スロークエリログに出力します。
後述する log-slow-queries オプションと共に使用します。

--log-short-format

更新ログおよびスロークエリログに出力するログフォーマットを簡略化します。

--log-slow-admin-statements

OPTIMIZE TABLE など、時間の掛かる管理系SQL文も
スロークエリログに出力するようにします。
後述する log-slow-queries オプションと共に使用します。

--log-slow-queries[=file]

実行に long_query_time 秒以上掛かる
全てのクエリー文をファイルに記録します。
これはパフォーマンス劣化を検出したい場合に有益な情報となるはずです。

--log-update[=file]

更新系のクエリー文のみをファイルに記録します。
この更新ログは、MySQL5.0で廃止されます。
代わりにバイナリログ(log-bin オプション)を使いましょう。

-W --log-warnings

いくつかの致命的ではない警告もエラーログファイルに出力します。
このオプションは有効(デフォルト)にすることが勧められています。

バイナリログ関連

--log-bin[=file]

データを変更するクエリを全てログファイルに記録します。
バックアップ、およびレプリケーション用に使用されます。

--log-bin-index[=file]

バイナリログファイル名のインデックスファイルを指定します。

--log-bin-trust-function-creators[={0|1}]

MySQL5.0.16から導入されました。
log_bin_trust_function_creators システム変数の値をセットします。
詳細はシステム変数のページを参照して下さい。

InnoDB関連

--skip-innodb

InnoDBストレージエンジンを無効にします。
これはメモリを節約し、いくつかの動作を高速にします。

--innodb_additional_mem_pool_size

データディクショナリ情報や内部データ構造を格納するために
InnoDBが使用するメモリプールのサイズ。
使用するテーブルの数が増えると、必要なサイズが増加します。
このプールでメモリ不足が発生すると、OSからのメモリ割り当てが始まり
MySQLのエラーログに警告メッセージが出力されます。
デフォルト値は 1MB です。

--innodb_autoextend_increment

テーブルスペースの自動拡張サイズをメガバイト単位で指定します。
テーブルスペースが一杯になると、MySQLはこのサイズ分だけスペースを拡張します。
デフォルト値は 8 です。

--innodb_buffer_pool_awe_mem_mb

32BitのWindowsで、AWEメモリに配置するバッファプールのサイズを
メガバイト単位で指定します。
この値の最大値は 64000 です。

--innodb_buffer_pool_size

キャッシュデータとテーブルのインデックスにInnoDBが使用する
メモリバッファサイズを指定します。
この値を増加させると、必要なディスクアクセス回数が低下します。
専用のDBサーバでは、この値をマシン全体のメモリの80%程度に指定することが出来ます。
この値にあまり大きな値を指定しないで下さい。
さもないと、OSによるディスクスワップが発生してしまいパフォーマンスが低下します。

--innodb_checksums

MySQL5.0.3から導入されました。
InnoDBは通常、 壊れたハードウェアやデータファイルに対する障害へ対処するために
ディスクから読み込んだページ全てに関してチェックサムを取ります。
しかし、いくつかのまれな状況で(例えばベンチマークを計るとき)
この処理が必要無いこともあります。
--skip-innodb-checksumsオプションを指定することにより、この処理をスキップします。

--innodb_commit_concurrency

MySQL5.0.12から導入されました。
同時にコミットが可能なスレッド(接続)数を指定します。
この値を0にすると、同時コミットの制御を無効にします。

--innodb_concurrency_tickets

MySQL5.0.3から導入されました。
innodb_thread_concurrency によって決定された、
InnoDBに同時に入ることの出来るスレッド数を指定します。
スレッド数がこの上限に達した状態でInnoDBに入ろうとした場合、
そのスレッドはキューに配置されます。
...

--innodb_data_file_path

InnoDBが使用するデータファイルのパスを指定します。

--innodb_data_home_dir

InnoDBが使用するデータファイルを配置する基準パスを指定します。

--innodb_doublewrite

MySQL5.0.3から導入されました。
デフォルトでは、InnoDBは全てのデータを2回書き込みます。
1回目はダブルライトバッファへ、2回目は実際のデータファイルへ。
この処理を無効にするには、--skip-innodb-doublewrite オプションを指定します。
ベンチマーク測定時や安全性よりも性能向上が重視されるときにのみ、使用しましょう。

--innodb_fast_shutdown

この値を0にセットすると、InnoDBはシャットダウンする前に
全消去とバッファのマージ挿入を実行します。
これには数分、極端な場合には数時間掛かります。
この値を1にすることで、InnoDBはこれらの処理をスキップします。
デフォルト値は 1 です。

この値を2にすると(MySQL5.0.5以降)、MySQLはまるでクラッシュしたかの如く
ただログを出力して即座にシャットダウンを行います。
コミットされていないトランザクションは失われますが、
次のスタートアップ時にクラッシュのリカバリが行われるでしょう。

--innodb_file_io_threads

InnoDB内のファイルI/Oスレッド数。
通常この値はデフォルト値4のままであるべきですが
Windows上ではこの値を大きくすることによるディスクI/Oが効率化されるかもしれません。
Unix上ではこの値を増加させても何の効果もありません。InnoDBは常にデフォルト値を使います。

--innodb_file_per_table

このオプションを指定すると、InnoDBはテーブルを作成する毎に
(共通テーブルスペースの替わりに)
データおよびインデックス格納用として .ibd ファイルを作成します。
これにより、テーブル毎のテーブルスペースを使うことになります。

--innodb_flush_log_at_trx_commit

この値を0にすると、1秒毎にログバッファの内容が
ログファイルに書き出されフラッシュされます。
トランザクションコミット時には何も行われません。

この値を1(デフォルト)にすると、トランザクションをコミットする毎に
ログバッファの内容がログファイルに書き出されフラッシュされます。

この値を2にすると、トランザクションをコミットする毎に
ログバッファの内容をログファイルに書き出しますがフラッシュしません。
そして、1秒毎にログファイルへのフラッシュが行われます。

プロセススケジューリングの問題により、
必ず毎秒フラッシュが行われることが100%保証されない事に
注意する必要があります。

この値を1以外にすることで、良いパフォーマンスを達成する事が出来ますが
クラッシュ時に多くて1秒を失うかもしれません。

この値を0にすると、mysqldプロセスがクラッシュする事で
最後2つのトランザクションを失う可能性があります。

この値を2にすると、システムそのものがクラッシュしたり停電した場合に限り
最後2つのトランザクションを失う可能性があります。

しかし、InnoDBのクラッシュリカバリは影響を受けません。
つまり、この値に関わらずクラッシュリカバリは正常に動作します。

ほとんどのOSにおいて、いくつかのディスクハードウェアは
ディスクへのフラッシュ処理をごまかします。
例えば、実際にはフラッシュを行っていないのに
mysqldにはフラッシュを実行したと言うかもしれません。
こういった場合、この値を1にしてもトランザクションの耐久性は
保証されません。
最悪の場合、停電によってInnoDBデータベースが破壊されてしまうこともあります。

SCSIディスクコントローラやディスクそのものがバッテリで保持された
ディスクキャッシュを使うことによって
ファイルのフラッシュを高速化させ、より安全に処理を行うことが出来ます。

Unixコマンドの hdparm や、ハードウェアベンダ特有のコマンドを使って
ディスクへの書き込みキャッシュを無効にすることが出来ます。

--innodb_flush_method

このオプションはUnixシステムでのみ有効です。

この値を fdatasync にセットすると(デフォルト)、
InnoDBはデータおよびログをフラッシュするのに fsync() 関数を使用します。

この値を O_DSYNC にセットすると、InnoDBはログファイルのオープンおよびフラッシュに
O_SYNC を使用しますが、データファイルのフラッシュには fsync() 関数を使用します。

この値を O_DIRECT にセットすると、データファイルをオープンするのに
O_DIRECT を使用し、データとログのフラッシュには fsync() 関数を使用します。

InnoDBは fdatasync() ではなく fsync() を使用します。
これに関する問題が多くのUnixシステムで発生している為、
デフォルトでは O_DSYNC を使用しません。

innodb_force_recovery

このオプションは、緊急事態でのみ定義されるべきです。
例えば、破損したテーブルからデータをダンプしたい場合など。
この値は1から6の範囲を取ります。
安全のために、InnoDBはこのオプションが0より大きい値に設定されているとき
ユーザがデータを変更することを禁止します。

innodb_lock_wait_timeout

InnoDBトランザクションがロールバックまでにロックを待つ秒数を指定します。
InnoDBは、自身がテーブルをロックすることによる
トランザクションのデッドロックを自動的に検出して、
そのトランザクションをロールバックします。
InnoDBは LOCK TABLES 文を使ってロックをセットします。
デフォルトは50秒です。

レプリケーションをセットアップ時の
耐久性と一貫性を可能な限り高めるために、以下のオプションを使用しましょう。

innodb_flush_log_at_trx_commit=1, sync-binlog=1

innodb_locks_unsafe_for_binlog

InnoDBが検索およびインデックスをスキャンするときの
next-keyロックを無効にします。
このオプションはデフォルトでfalse、つまりキーロックは有効です。

InnoDBは、検索やテーブルインデックスをスキャンするときに
行レベルのロックを行います。
...
従って、行レベルのロックは実際にはインデックスのレコードロックです。

innodb_log_arch_dir

ログアーカイブを使用するとき、アーカイブされたログファイルが
格納させるディレクトリ名を指定します。

innodb_log_archive

現在、この値は0にセットされる必要があります。
MySQLによるバックアップからのリカバリは、
それ自身のログファイルを使って実行されるので
現在InnoDBのログファイルをアーカイブする必要はありません。

innodb_log_buffer_size

InnoDBがログファイルをディスクに書き出すために使われるバッファサイズを指定します。
この値の実用的な範囲は1〜8MBで、デフォルトは1MBです。
バッファを大きくすれば、巨大なトランザクションのコミットが完了するまで
ログファイルへのディスク書き込みをせずに実行できる為
ディスクI/Oを節約できます。

innodb_log_file_size

ロググループ内での各ログファイルのサイズを指定します。
ログファイルサイズの合計は、32bitコンピュータ上では4GB以内にする必要があります。
デフォルトは 5MB です。
この値の実用的な範囲は、1MBから「バッファプールサイズの1/N」です。
Nは、ロググループ内のログファイル数になります。
この値を大きくすると、
バッファプール内でフラッシュが必要なチェックポイントを減らし
ディスクI/Oを節約します。
しかし、大きなログファイルはクラッシュ時のリカバリが遅くなることも意味します。

innodb_log_files_in_group

ロググループ内でのログファイル数。
InnoDBはこれらのファイルに循環する形でログを出力します。
デフォルトは 2 です(推奨)。

innodb_log_group_home_dir

InnoDBログファイルを格納するディレクトリを指定します。
この値は innodb_log_arch_dir と同じである必要があります。
ログに関する指定を何もしないとき、デフォルトで
MySQLのデータディレクトリに ib_logfile0 と ib_logfile1 というファイルが
サイズ5MBで作成されます。

innodb_max_dirty_pages_pct

0〜100の整数値を指定します。デフォルトは90です。
InnoDBのメインスレッドは、
Dirtyな(まだ書き込まれていない)ページのパーセンテージがこの値を超えないように
バッファプールからページを書き込みます。
SUPER権限を持っているユーザは、サーバ起動中に以下のSQL文でこの値を変更することが出来ます。

SET GLOBAL innodb_max_dirty_pages_pct = value;

innodb_max_purge_lag

purge operationが遅れたとき、INSERT / UPDATE / DELETE 処理を
どのように遅延させるかを制御します。
デフォルト値は0で、これは遅延を行わないことを意味します。
このオプションは起動時にグローバルシステム変数によって変更できます。

InnoDBのトランザクションシステムは、UPDATE / DELETE によって
削除マークされたインデックスレコードを持ったトランザクション一覧を管理します。
この一覧の長さは purge_lag です。
purge_lag がこの値を超えたとき、INSERT / UPDATE / DELETE 処理は
((purge_lag/innodb_max_purge_lag)*10)-5 ミリ秒だけ遅延されます。
この遅延時間は10秒毎、purgeバッチの開始時に計算されます。
purge が実行できないとき、この処理は遅延されません。
行がpurgeされた...

問題の多い作業量に対する一般的な設定は100万です。
トランザクションが小さいと仮定して
テーブル中に100MBのpurgeされない行を許可することが出来ます。

innodb_mirrored_log_groups

データベース用にキープするロググループと同等のコピー数を指定します。
この値は現在、1にする必要があります。

innodb_open_files

このオプションは、InnoDBがマルチテーブルスペースを使っているときのみ有効です。
InnoDBが同時に開いておける .ibd ファイルの最大数を指定します。
この値の最小値は10で、デフォルトは 300 です。

.ibd ファイルのファイル記述子は、InnoDBからのみ使われます。
--open-files-limit オプションから独立していて
テーブルキャッシュの動作には影響しません。

innodb_safe_binlog

InnoDBテーブルとバイナリログ間の整合性への保証を追加します。
このオプションはMySQL5.0.3で削除されました。
これは、XAトランザクションがサポートされた為です。

innodb_status_file

このオプションを指定すると、
定期的に SHOW ENGINE INNODB STATUS コマンドの出力結果がファイルに出力されます。

innodb_support_xa

MySQL5.0.3から導入されました。
この値をON(デフォルト)にすると、
InnoDBはXAトランザクションによる2フェイズのコミットをサポートします。
これを有効にすると、トランザクションを準備するために
余分なディスクフラッシュが必要になります。
もしXAを使うことに興味が無ければ、この値をOFFにセットすることで
ディスクフラッッシュ回数を減らしInnoDBのパフォーマンスを上げることが出来ます。

innodb_sync_spin_loops

MySQL5.0.3から導入されました。
スレッドが、停止するまでに開放されたmutexを待つ回数を指定します。

innodb_table_locks

他の全てのスレッドが、それが持つ全てのテーブルロックを開放するまで
MySQLは LOCK TABLE .. WRITE から戻りません。
デフォルト値は1で、LOCK TABLES はInnoDBが内部的に
テーブルをロックすることを意味します。
アプリケーションで AUTOCOMMIT=1 を使ったとき、InnoDBの内部的なテーブルロックは
デッドロックを引き起こす可能性があります。
この値を0にする事により、この問題を取り除きます。

innodb_thread_concurrency

InnoDBは、OSのスレッド数を
このパラメータによって与えられた制限と同じまたは少ない数に
保とうとします。

MySQL5.0.8以前では、この値のデフォルト値は8です。
もしパフォーマンスの問題があった場合、

SHOW INNODB STATUS

文でセマフォを待っているスレッドを表示することが出来ます。
このパラメータを大きくまたは小さく設定すべきです。
多数のプロセッサとディスクを持つコンピュータの場合、
リソースをより良く使うためにこの値を大きくしてみましょう。
この値の推奨値は、システムが持っているプロセッサとディスクの総数です。
500以上の値は、並行性のチェックを無効にします。

MySQL5.0.8以降では、この値のデフォルト値は20です。
20以上の値は、並行性のチェックを無効にします。

BDB関連

--skip-bdb

BDBストレージエンジンを無効にします。
これはメモリを節約し、いくつかの動作を高速にします。

NDB関連

--skip-ndbcluster

NDB Clusterストレージエンジンを無効にします。

--ndb-connectstring=connect_string

NDB Clusterで使用する接続文字列を指定します。

--ndbcluster

NDB Clusterテーブルを使用可能にします。
デフォルトでこのオプションは無効になっています。