mysql
サーバは、様々なシステム変数を保有しています。そしてその変数は、設定がどのようになっているかを示します。それぞれのシステム変数にはデフォルト値がありますが、サーバ起動時に、コマンドラインまたはオプション
ファイルなどを使用して変更できます。大抵の場合、SET
コマンドを使用して実行中のサーバで動的に変更できます。つまり、サーバを停止または再起動などで操作を中断しなくても変更することが可能であるということです。システム変数の値は、プログラミング式で指定します。
システム変数の名前や値を確認する方法 (コマンド)
サーバで使用しているコンパイルのデフォルト値や、読み込むオプション ファイルの所在を確認するコマンド
mysqld --verbose --help
サーバが元にするコンパイルのデフォルト値や、オプション ファイルの設定がどうなっているか (無視するかどうか) を確認するコマンド
mysqld --no-defaults --verbose --help
実行中のサーバでカレント値を確認するには、SHOW
VARIABLES
ステートメントを使用すること。
このセクションでは、それぞれのシステム変数について説明します。バージョン情報を記載していない変数は、MySQL 5.1 リリースで導入した変数です。実装/導入履歴に関する情報は、MySQL 5.0 Reference Manual または MySQL 3.23, 4.0, 4.1 リファレンス マニュアル をそれぞれ参照してください。
その他のシステム変数に関する詳細は、次のセクションを参照してください。
項4.2.4. 「システム変数の使用」 では、システム変数値に関する構文規則と表示方法について説明します。
項4.2.4.2. 「動的システム変数」 では、ランタイムで設定できる変数をリストしています。
システム変数の調整に関する情報は 項6.5.2. 「サーバパラメータのチューニング」 を参照してください。
項13.5.4. 「InnoDB
起動オプションとシステム変数」
では、InnoDB
システム変数をリストしています。
ノート:次に示す変数説明は、変数を
「可能にする (有効化)」 または
「不可能にする (無効化)」
ということに言及しています。これらの変数は
SET
コマンドを ON
または 1
に設定すると実行可能であることを示し、あるいは
OFF
または 0
に設定すると実行不可能であることを示します。コマンドラインまたはオプション
ファイルで変数を設定するには、1
または 0
のいずれかを使用してください。ON
または OFF
を使用すると機能しません。たとえば、コマンドラインの場合に、--delay_key_write=1
のオプションは動作しますが、
--delay_key_write=ON
では動作しません。
バッファ サイズ、長さ、スタック サイズなどの値は、指定がない限り、バイトで与えます。
auto_increment_increment
と
auto_increment_offset
はマスタからマスタへのレプリケーションに使用する。AUTO_INCREMENT
カラムの操作の制御に使用できる。この変数には、グローバルまたはローカルで設定でき、それぞれで
1 から 65,535
までの整数を使用できる。これら 2
種類の変数のどちらかを 0 に設定すると、1
での設定したものとの解釈になる。65,535
より大きな整数、あるいは 0
ではない数字でこれらの変数のどちらかを設定すると、65,535
で設定したものとの解釈になる。auto_increment_increment
または
auto_increment_offset
に、整数以外の値を使用すると、反映できずエラーになり、変数の実際の値
(デフォルト) のままになる。
重要
auto_increment_increment
と
auto_increment_offset
は MySQL Cluster
レプリケーションには使用しないでください。MySQL
Cluster レプリケーションでこの 2
つの変数を使用すると、予期せぬエラーまたは回復不能な状態にある可能性があります。そのため、Cluster
レプリケーションでの この 2
つの変数においては、サポートしていません。
これら 2 つの変数は
AUTO_INCREMENT
カラムの動作に次のように影響する。
auto_increment_increment
は自動インクリメントの間隔値を制御する。次はその例示である。
mysql>SHOW VARIABLES LIKE 'auto_inc%';
+--------------------------+-------+ | Variable_name | Value | +--------------------------+-------+ | auto_increment_increment | 1 | | auto_increment_offset | 1 | +--------------------------+-------+ 2 rows in set (0.00 sec) mysql>CREATE TABLE autoinc1
->(col INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
Query OK, 0 rows affected (0.04 sec) mysql>SET @@auto_increment_increment=10;
Query OK, 0 rows affected (0.00 sec) mysql>SHOW VARIABLES LIKE 'auto_inc%';
+--------------------------+-------+ | Variable_name | Value | +--------------------------+-------+ | auto_increment_increment | 10 | | auto_increment_offset | 1 | +--------------------------+-------+ 2 rows in set (0.01 sec) mysql>INSERT INTO autoinc1 VALUES (NULL), (NULL), (NULL), (NULL);
Query OK, 4 rows affected (0.00 sec) Records: 4 Duplicates: 0 Warnings: 0 mysql>SELECT col FROM autoinc1;
+-----+ | col | +-----+ | 1 | | 11 | | 21 | | 31 | +-----+ 4 rows in set (0.00 sec)
注意: ここでは SHOW
VARIABLES
を変数値 (カレント値)
を取得する目的で使用しています。
auto_increment_offset
は
AUTO_INCREMENT
カラム値の開始点を決定する。次の例示は、
auto_increment_increment
記述の例で、ステートメントを同一のセッション中に実行した場合である。
mysql>SET @@auto_increment_offset=5;
Query OK, 0 rows affected (0.00 sec) mysql>SHOW VARIABLES LIKE 'auto_inc%';
+--------------------------+-------+ | Variable_name | Value | +--------------------------+-------+ | auto_increment_increment | 10 | | auto_increment_offset | 5 | +--------------------------+-------+ 2 rows in set (0.00 sec) mysql>CREATE TABLE autoinc2
->(col INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
Query OK, 0 rows affected (0.06 sec) mysql>INSERT INTO autoinc2 VALUES (NULL), (NULL), (NULL), (NULL);
Query OK, 4 rows affected (0.00 sec) Records: 4 Duplicates: 0 Warnings: 0 mysql>SELECT col FROM autoinc2;
+-----+ | col | +-----+ | 5 | | 15 | | 25 | | 35 | +-----+ 4 rows in set (0.02 sec)
auto_increment_offset
の値が、auto_increment_increment
の値よりも大きい場合、auto_increment_offset
の値は無効になる。
ここで、これら変数のどちらか、あるいは両方が変更して、新規の行をテーブルの
AUTO_INCREMENT
カラムに挿入していなければならない。結果は直感的のようにも思えるが、これは既にカラムに存在している値を無視して、AUTO_INCREMENT
値で計算している。つまり、挿入した値が
AUTO_INCREMENT
カラムの最大値よりも大きいシリーズの最小値であることが原因である。つまり、シリーズが次のように計算したことに起因する。
auto_increment_offset +
N
×
auto_increment_increment
N
が [1, 2, 3, ...]
のシリーズの正の整数。たとえば次の例示の通り。
mysql>SHOW VARIABLES LIKE 'auto_inc%';
+--------------------------+-------+ | Variable_name | Value | +--------------------------+-------+ | auto_increment_increment | 10 | | auto_increment_offset | 5 | +--------------------------+-------+ 2 rows in set (0.00 sec) mysql>SELECT col FROM autoinc1;
+-----+ | col | +-----+ | 1 | | 11 | | 21 | | 31 | +-----+ 4 rows in set (0.00 sec) mysql>INSERT INTO autoinc1 VALUES (NULL), (NULL), (NULL), (NULL);
Query OK, 4 rows affected (0.00 sec) Records: 4 Duplicates: 0 Warnings: 0 mysql>SELECT col FROM autoinc1;
+-----+ | col | +-----+ | 1 | | 11 | | 21 | | 31 | | 35 | | 45 | | 55 | | 65 | +-----+ 8 rows in set (0.00 sec)
auto_increment_increment
と
auto_increment_offset
で示している値は、5 +
N
× 10
のシリーズを生成する。つまり、[5, 15, 25,
35, 45, ...] である。INSERT
前の
col
カラムの最大値は 31
で、AUTO_INCREMENT
シリーズで次に利用可能な値は 35 。そして
col
の挿入値はその時点から始まり、その結果が
SELECT
クエリの表示になる。
ここで重要なことは、1
つのテーブルにこれら 2
つの変数をした場合の効果を制限することはできないということである。ゆえに、別のデータベース管理システムで提供しているシーケンスとは併用できない。この変数は、MySQL
サーバの すべて
のテーブルにある AUTO_INCREMENT
カラムのすべての動作を制御する。この変数のどちらかをグローバルでセットした場合、グローバル値を変更するか、またはローカルでこれらを設定して上書きするまで、あるいは
mysqld
が再起動するまで、その効果が続くことになる。ローカルで設定した場合、新しい値はすべてのテーブルの
AUTO_INCREMENT
カラムに影響し、そのセッションのユーザが新たな行を挿入することになる。つまり値がセッション中に変更することになる。
auto_increment_increment
のデフォルト値は 1 。詳細は
項5.2.3.1. 「Auto-Increment in Multiple-Master Replication」
を参照のこと。
この変数のデフォルト値は
1。auto_increment_increment
での記述も参照のこと。
この変数が 1 (デフォルト)
の場合、サーバが自動的に
EXECUTE
および ALTER
ROUTINE
の権限をストアド
ルーチンのクリエータに与える。(ALTER
ROUTINE
権限で、ルーチンをドロップの対象にする。)
つまりサーバが、クリエータのルーチンをドロップするときに、自動的にこの権限もドロップする。automatic_sp_privileges
が 0
の場合、サーバは自動的にはドロップしない。権限もドロップの対象にはならない。
MySQL
で保持できる未解決の接続要求数。これは、短時間にメインの
MySQL
スレッドに多くの接続要求が集中したときに機能する
(役立つ)。そして、メイン
スレッドが接続をチェックするため、新規スレッドの開始には時間(若干)がかかる。つまり
back_log
値は、MySQL
が一時的に新規要求への回答を停止するまでの瞬時に、スタック可能な要求の数を示す。短時間に多くの接続要求数がある場合にだけ、この値を大きくする。
つまり、この値は、TCP/IP 接続のリッスン
キューのサイズである。使用しているオペレーティング
システムそのものにも、このキュー
サイズの制限がある。詳細については、Unix
listen()
システムコールのマニュアルページを参照のこと。この変数の最大値については、OS
のドキュメントを参照する。back_log
を、オペレーティングシステムの制限値より大きくしても、効果はない。
basedir
基準パスを指定する。MySQL
をインストールしたディレクトリを指す。--basedir
オプションで起動時に設定できる。
トランザクション中にバイナリ
ログに対する SQL
ステートメントを保持するキャッシュのサイズ。(トランザクション間でメモリに保持する
SQL文の最大数。)
サーバがトランザクションのストレージ
エンジンをサポートする場合、あるいはサーバで
--log-bin
オプションを使用して、バイナリ
ログを可能にしている場合、バイナリ ログ
キャッシュをクライアントに割り当てる。大きな複数ステートメントのトランザクションが頻繁にある場合、この値を大きくすると、パフォーマンスを向上できる。Binlog_cache_use
と Binlog_cache_disk_use
のステータス変数はこの変数のサイズ調整に便利である。詳細は
項4.11.4. 「バイナリ ログ」 を参照のこと。
バイナリ
ロギング形式。STATEMENT
、ROW
、MIXED
のどれかになる。binlog_format
は 起動時に --binlog-format
オプションで設定する。または、ランタイムで
binlog_format
変数でも設定できるが、グローバル
スコープでこの変数を設定するには、SUPER
権限が必要になる
(項5.1.2. 「レプリケーション フォーマット」
を参照のこと)。(スタートアップ変数の導入:MySQL
5.1.5、ランタイム変数の導入:MySQL
5.1.8、MIXED
の導入:MySQL 5.1.8)
デフォルトでは STATEMENT
を使用。MIXED
を指定して、ステートメント
ベースのレプリケーションにすることもできる。ただし、行ベースのレプリケーションで正確な結果を保証する場合
(その必要がある場合)、たとえば、ユーザ定義関数
(UDF)、または UUID()
関数を含むステートメントの場合には、この限りではない
(別の事情がある)。格納ルーチン (stored
functions)
やトリガなどに、MIXED
を指定して、ステートメント
ベースのレプリケーションを行う場合も例外である。
ランタイムでレプリケーションの仕方を切り替えることができない場合
格納関数またはトリガ内からの場合
NDB
を有効化している場合
セッションのレプリケーション モードが行ベースで、テンポラリ テーブルを開けている場合
この 3 つのどれかに該当する場合に、レプリケーションの仕方を変更すると、エラーになる。
MySQL 5.1.8 前は、行ベース
レプリケーションの仕方を変更することは
--log-bin-trust-function-creators=1
および
--innodb_locks_unsafe_for_binlog
を明示的に設定するとしていた。しかし、MySQL
5.1.8 以降 (MySQL 5.1.8 を含む)
は、行ベースのレプリケーションにこのオプションで明示設定しても、通用しない。
空白ではないテーブルにデータを追加する場合に、MyISAM
は特殊なツリー状のキャッシュを使用して、バルクの
INSERT ... SELECT
、INSERT ...
VALUES (...), (...), ...
、LOAD DATA
INFILE
を高速化する。この変数で、スレッドごとのキャッシュ
ツリーのサイズを制限する(バイト単位)。この値を
0
に設定すると、最適化は無効になる。デフォルト値は
8 MB 。
クライアント送信の文字列のキャラクタ セット (クライアントが送信するキャラクタ セット)。
キャラクタ セット情報がないリテラルの並びで、数値→文字と変換するときのキャラクタ セット。
デフォルト
データベースで使用するキャラクタ
セット。デフォルト
データベースが変化する度に、サーバがこの変数を変更する。デフォルト
データベースが存在しない場合、この値は
character_set_server
と同一。
ファイルシステムのキャラクタ
セット。LOAD DATA INFILE
や
SELECT ... INTO OUTFILE
などのステートメントや
LOAD_FILE()
関数に対して、この変数でファイル名とリテラルの文字列を読み取る。ファイルを開けようとすると、ファイル名が
character_set_client
から
character_set_filesystem
に変わる。デフォルト値は
binary
(変換が起こらない)
である。マルチ
バイトのファイル名を利用できるシステムでは、異なる値を使用することが好ましい。たとえば、UTF-8
でファイル名を表示しているシステムの場合は、character_set_filesytem
を 'utf8'
にセットする。(MySQL 5.1.6 実装)
クライアントへ返す文字列 (クエリ結果) のキャラクタ セット。
サーバのデフォルトのキャラクタ セット。
識別子の書き出しにサーバが使用するキャラクタ
セット。この値は常に utf8
。
キャラクタ セットを格納しているディレクトリ。
接続キャラクタ セットの照合順序。
デフォルト
データベースの照合順序。デフォルト
データベースが変化する度に、サーバがこの変数を変更する。デフォルトデータベースが存在しない場合、この値は
collation_server
と同一。
サーバのデフォルトの照合順序
トランザクションのコンプリーション タイプ
値が 0 (デフォルト)
の場合、COMMIT
および
ROLLBACK
には影響しない。
値が 1 の場合、COMMIT
は
COMMIT AND
CHAIN
に、ROLLBACK
は
ROLLBACK AND CHAIN
に相当する。(新たなトランザクションが終了したばかりのトランザクションと同一の分離レベルで始まる。)
値が 2 の場合、COMMIT
は
COMMIT RELEASE
に、ROLLBACK
は
ROLLBACK RELEASE
に相当する。(サーバはトランザクションを終えると切断する。)
ON
(デフォルト)
の場合、INSERT
および
SELECT
ステートメントを
MyISAM
テーブルで同時に実行できる (間にフリー
ブロックがない場合)。このオプションを使用しないように設定するには、mysqld
を --safe
または
--skip-new
で起動する。
この変数では次の整数値を使う。
値 | 説明 |
0 | オフ |
1 | (デフォルト) ホールがない MyISAM
テーブルに同時挿入 |
2 | すべての MyISAM
テーブルに同時挿入。テーブルにホールがあり、別のスレッドで使用している場合、新規の行はテーブル末尾への挿入となる。テーブルが使用中でなければ、MySQL
が通常の読み込みロックを行い、新規の行をホールへ挿入する。 |
項6.3.3. 「同時挿入」 を参照のこと。
mysqld サーバが、Bad
handshake
を返すまで、接続パケットを待つ秒数
datadir
MySQL
をインストールしたディレクトリ。この変数は
--basedir
オプションで設定できる。
この変数は実装していない。
この変数は実装していない。
デフォルト モード値。WEEK()
関数に使う。詳細は
項11.5. 「日付時刻関数」
を参照のこと。
MyISAM
テーブルにだけ使えるオプション。この値は、CREATE
TABLE
ステートメントに使用するときに、DELAY_KEY_WRITE
テーブル
オプションの処理に影響する。次の表で値の詳細を参照のこと。
オプション | 説明 |
OFF |
DELAY_KEY_WRITE は無視。 |
ON |
MySQL は CREATE TABLE ステートメント指定の
DELAY_KEY_WRITE
オプションを優先する。(デフォルト) |
ALL |
新規の開テーブルすべてを DELAY_KEY_WRITE
オプションを実行可能にして作成したかのように処理する。 |
DELAY_KEY_WRITE
をテーブルに対して可能にした場合、インデックス更新でキー
バッファのフラッシュではなく、テーブルが閉じたときにだけフラッシュする。これを利用すると、キーの書き込みスピードを速めることが可能である。ただし、これを使用する場合には、--myisam-recover
オプションでサーバを立ち上げて、すべての
MyISAM
テーブルの自動チェックを設定しておく必要がある
(例:
--myisam-recover=BACKUP,FORCE
)。詳細は
項4.2.2. 「コマンド オプション」 および
項13.4.1. 「MyISAM
スタートアップオプション」 を参照のこと。
ノート: --external-locking
で外部ロックを有効化した場合、遅延キー書き込み
(delayed key write)
があるテーブルのインデックス破損に対するプロテクションがなくなる。
delayed_insert_limit
レコードを挿入後、INSERT
DELAYED
ハンドラは、保留中の
SELECT
ステートメントがあるかどうかチェックする。ステートメントがある場合、ハンドラは処理を続行する前に保留中のステートメントの実行を許可する。
INSERT DELAYED
ハンドラ
スレッドが INSERT
ステートメントを待機する時間。
INSERT DELAYED
を処理時のテーブルあたりのキューの最大値(レコード単位)。キューが最大値に達すると、INSERT
DELAYED
を実行するすべてのクライアントは、キューに空きができるまで待機する。
この変数は、小数点以下の桁数を示す。DIV演算子(/
)
での演算結果を高める。デフォルト値は 4
。最小値は 0 、最大値は
30。次の例はデフォルト値を高めた場合の効果を示す。
mysql>SELECT 1/7;
+--------+ | 1/7 | +--------+ | 0.1429 | +--------+ mysql>SET div_precision_increment = 12;
mysql>SELECT 1/7;
+----------------+ | 1/7 | +----------------+ | 0.142857142857 | +----------------+
この変数は Event Scheduler (イベント
スケジューラ) のステータス (状態)
を示す。MySQL 5.1.12
から予定している値は、ON
、OFF
、DISABLED
。OFF
をデフォルトとする。Event Scheduler
操作における、この変数とその効果は、
リンク (Events 関連の概略)
を参照のこと。
(MySQL 5.1.6 での追加)
この変数は、NDB
に適用する。デフォルトでは 0
(OFF
)。SELECT * FROM t WHERE
mycol = 42
のように mycol
でインデックス化してないカラムのクエリを実行する場合、そのクエリは
NDB ノード毎にフル テーブル
スキャンの対象になる。それぞれのノードで
SQL サーバにすべての行 (レコード)
を送り、 WHERE
条件なる。engine_condition_pushdown
を 1 (ON
)
にセットすると、条件はストレージ
エンジンまで 「押し下げられ」、NDB
ノードにまで届く。それぞれのノードでスキャンを行う条件を持っているため、MySQL
サーバにその条件に適合する行を送り返す。
バイナリ ログの自動削除の日数を指定する。 デフォルトは 0 で 「自動削除しない」 ことを意味する。MySQLサーバ起動時もしくは ログをローテートするときが、ログを削除するタイミングである。
ON
の場合、SQL
ステートメントの後で、サーバがすべての変更をデスクにフラッシュ
(同期) する。通常、MySQL は、SQL
ステートメントで、すべての変更をデスクに書き込むことはなく、オペレーティング
システムにディスクとの同期を任せる。項B.1.4.2. 「What to Do If MySQL Keeps Crashing」
を参照のこと。--flush
オプションで mysqld
を立ち上げる場合には、この変数を
ON
に設定する。
これを 0
以外の値に設定する場合、リソースの解放と未フラッシュ
データのディスクへ同期するために、flush_time
秒ごとにすべてのテーブルを閉じる。Windows
9x、Me
など別リソースに限りがあるシステムの場合にだけ、このオプションを使用する
(推奨)。
IN BOOLEAN MODE
を使用しているブーリアン全文検索をサポートする演算子一覧。詳細は
項11.7.1. 「ブール全文検索」 を参照のこと。
デフォルトの変数値は
'+ -><()~*:""&|'
である。この値を変更するときのルールは次の通り。
演算子の関数を文字列中の位置で決定している。
置換値は 14 文字である。
文字に ASCII の非英数字を使用している。
最初 (先頭) または2番目の文字がスペース (空白文字) である。
重複する文字を使用していない。(11 または 12 番目にクオート文字の重複は可。この2文字は同一である必要はないが、同一でなければならないこともある。)
10、13、14番目の文字である。(デフォルトでは
‘:
’、‘&
’、‘|
’)
はリザーブである。
FULLTEXT
インデックスの単語
(word) の最大文字数
ノート:FULLTEXT
インデックスは、変数を変更すると、再ビルドしなければならない。REPAIR
TABLE
を使用のこと。
tbl_name
QUICK
FULLTEXT
インデックスの単語の最小文字数
ノート:FULLTEXT
インデックスは、変数を変更すると、再ビルドしなければならない。REPAIR
TABLE
を使用のこと。
tbl_name
QUICK
WITH QUERY EXPANSION
を使用した全文検索の最上位マッチ数。
全文検索のストップワード
リストのファイル。ファイル内のすべてのストップワードが使用対象になるが、コメントは使用しない。デフォルトは、ストップワードの組み込みリストを使用する
( storage/myisam/ft_static.c
ファイルの定義)。このパラメータを空白の文字列(''
)に設定すると、ストップワードのフィルタリングを無効化する。
ノート:変数またはストップワードの内容を変更すると、FULLTEXT
インデックスを再ビルドしなければならない。REPAIR
TABLE
を使用のこと。
tbl_name
QUICK
一般クエリ
ログを有効化しているかどうかを示す。値が
0 (または OFF
)
の場合、ログしない。値が 1 (または
ON
)
の場合、ログする。デフォルトは
--log
オプションを設定しているかどうかによる。ログ出力先は
log_output
システム変数で制御する。値を
NONE
にした場合、ログできるようにしていても、エントリを書き込まない。(general_log
は MySQL 5.1.12 での導入)
一般クエリ ログ
ファイルの名前。デフォルトは
。初期値は host_name
.log--log
オプションで変更可能。(MySQL 5.1.12
から導入)
GROUP_CONCAT()
関数の最大許容結果長さ
(返却値の最大文字数) デフォルトは 1024 。
YES
: mysqld で
ARCHIVE
テーブルをサポートする場合。NO
:
そうでない場合。
YES
: mysqld で
BLACKHOLE
テーブルをサポートしている場合。
NO
:そうでない場合。
YES
: zlib
圧縮ライブラリをサーバで利用できる場合。NO
:そうでない場合
(このときは、COMPRESS()
および
UNCOMPRESS()
関数は使用できない)。
YES
: crypt()
システム
コールをサーバで利用きる場合。NO
:そうでない場合
(このときは、ENCRYPT()
関数は使用できない)。
YES
: mysqld で
ARCHIVE
テーブルをサポートする場合。
NO
:そうでない場合。
YES
: mysqld
で動的ロードのプラグインをサポートする場合。
NO
:そうでない場合。(MySQL
5.1.10 から導入)
YES
: mysqld で
EXAMPLE
テーブルをサポートしている場合。
NO
:そうでない場合。
YES
: mysqld で
FEDERATED
テーブルをサポートする場合。
NO
:そうでない場合。
YES
:サーバで空間データ型
(spatial)
をサポートしている場合。NO
そうでない場合
YES
: mysqld で
InnoDB
テーブルをサポートしている場合。DISABLED
: --skip-innodb
を使用している場合。
YES
: mysqld で
NDB Cluster
テーブルをサポートしている場合。DISABLED
: --skip-ndbcluster
を使用している場合。
YES
: mysqld
でパーティショニング (領域確保)
をサポートしている場合。(MySQL 5.1.1
から導入。MySQL 5.1.6
では、have_partition_engine
から
have_partioning
になった
(改名)。
YES
: mysqld で
SSL 接続をサポートする場合。
NO
:そうでない場合。
YES
: mysqld で
クエリ キャッシュをサポートする場合。
NO
:そうでない場合。
YES
:サーバで行ベースのバイナリ
ロギングのレプリケーションを実行できる場合。NO
: サーバでステートメント
ベースのロギングを行う。詳細は
項5.1.2. 「レプリケーション フォーマット」
を参照のこと。(MySQL 5.1.5
から導入したが、MySQL 5.1.15
で削除している。)
YES
: RTREE
インデックスを利用できる場合。NO
:そうでない場合。(MyISAM
テーブルの空間インデックスで使用している。)
YES
: シンボリック リンク
サポートを有効化している場合。NO
: そうでない場合。Unix では DATA
DIRECTORY
および INDEX
DIRECTORY
のテーブル
オプションを必要とする。Windows
では、データ ディレクトリの symlink
関数を必要とする。
クライアント接続でサーバが実行する文字列。この文字列は
1 つ以上の SQL
ステートメントから成る。複数のステートメントを指定するには、セミコロンで文字を区切る。たとえば、クライアントで自動コミット
(autocommit)
モードを有効にしていた場合に、クライアントでデフォルトとして開始する。自動コミットをデフォルトで無効にするグローバル変数は存在しないが、init_connect
を使用すると、同様の効果を期待できる
(複数のステートメントを指定する)。
SET GLOBAL init_connect='SET AUTOCOMMIT=0';
これの変数は、コマンドラインまたはオプション ファイルで設定できる。オプション ファイルで変数を設定するには、次のラインを使用する。
[mysqld] init_connect='SET AUTOCOMMIT=0'
ノート: init_connect
の内容は
SUPER
権限のあるユーザには通用しない。つまり、init_connect
の誤値がクライアント接続を阻止しないようにしている。たとえば、シンタックス
エラーを保持する値がステートメントにあると、クライアント接続に支障をきたす。SUPER
権限を持つユーザに対して
init_connect
を実行しないということは、ユーザとの接続と
init_connect
の値に対して害を与えないということである。
サーバ起動時に、--init-file
オプションで指定するファイルの名前。このファイルに起動時に実行する
(したい) SQL
ステートメントを組み込む。それぞれのステートメントを一行命令文として、コメントは入れないこと。
ノート: --init-file
オプションは、MySQL を
--disable-grant-options
オプションでコンフィギャしている場合には利用不可。詳細は
項2.9.2. 「典型的な configure オプション」 を参照のこと。
init_connect
に類似する。SQL
スレッドを開始するときにスレーブ
サーバが実行する文字列。.この文字列の形式は
init_connect
と同一である。
innodb_
xxx
InnoDB
システム変数は
項13.5.4. 「InnoDB
起動オプションとシステム変数」 を参照のこと。
対話式接続を終了する前に、サーバがアクティビティを待機する秒数。対話型クライアントの定義は、mysql_real_connect()
で CLIENT_INTERACTIVE
オプションを使用するクライアントのことである。wait_timeout
も参照のこと。
完全結合(インデックスを使用しない結合)に使用するバッファのサイズ。これにより、フル
テーブル
スキャンを実行できる。一般的には、結合を高速化する最良の方法は、インデックスを追加することである。しかし、インデックスを追加できない場合に、
join_buffer_size
の値を大きくすると結合が速くなる
(完全結合になる)。つまり、2
つのテーブル間の完全結合ごとにバッファを割り当てる。テーブル間の結合が複雑な場合は、複合バッファを必要とすることもある。
MyISAM
テーブルのインデックス
ブロックをバッファし、すべてのスレッドで共有。key_buffer_size
は、インデックス
ブロックに使用するバッファのサイズである。キー
バッファはキー キャッシュのこと。
key_buffer_size
の最大値は 4 GB
。物理 RAM、RAM
制限、オペレーティング
システム、プラットフォームの状態などによるが、効果的な設定値としては、4
GB を下回る程度が良い。
環境に応じて、インデックス処理 (すべての読み込みと複数の書き込み) を改善する目的で、この値を大きくできる。一般的には、マシンのメモリ使用率 25 % の値であることが好ましい。使用率の 50 % にすると、値が大き過ぎるため、システム処理が極端に遅くなる。MySQL のデータ読み込みのファイルシステムのキャッシュは OS に依存しているため、ファイル キャッシュ用にスペースに余裕を持たせることが必要である。別のストレージ エンジンの必要メモリに関しても検討のこと。
同時書き込みが多い場合などに、スピードを上げるには、LOCK
TABLES
を使用する。詳細は
項6.2.16. 「INSERT
ステートメントの速度」 を参照のこと。
キー
バッファのパフォーマンスをチェックするには、SHOW
STATUS
ステートメントを発行し、Key_read_requests
、Key_reads
、Key_write_requests
、そして
Key_writes
の変数を調べる
(項12.5.4. 「SHOW
構文」 を参照)。一般的には
Key_reads/Key_read_requests
の比率は、0.01
より小さいことが望ましい。操作がほとんど更新と削除だけの場合は
Key_writes/Key_write_requests
の比率は 1
に近い。同時に多くの行に影響を与える更新を行う場合や、DELAY_KEY_WRITE
テーブル
オプションを使用している場合には、より小さい比率になる。
使用中のキー バッファのフラクション
(破片) は、バッファ ブロック
サイズと、key_buffer_size
に
Key_blocks_unused
を併用して決めることができる。これは、key_cache_block_size
システム変数から利用可能。
1 - ((Key_blocks_unused × key_cache_block_size) / key_buffer_size)
これは近似値である。キー バッファのスペースによっては、管理ストラクチャに対して内部的に割り当てを行っているので、近似とする。
MyISAM
の複数キー
キャッシュを作成することが可能である。サイズの上限は、4
GB
で、グループごとではなく、キャッシュごとに適用する。詳細は
項6.4.6. 「MyISAM
キーキャッシュ」 を参照のこと。
この値は、キー キャッシュの hot サブ
チェーンから warm サブ
チェーンへのバッファ降格を制御する。この値が小さいと降格は急激に起こる。最小値は
100。デフォルトは 300。詳細は
項6.4.6. 「MyISAM
キーキャッシュ」 を参照。
キー キャッシュのブロック
サイズをバイト単位 (byte)。 デフォルトは
1024 。詳細は 項6.4.6. 「MyISAM
キーキャッシュ」
を参照のこと。.
キー キャッシュのバッファ
チェーンにおける hot と warm のサブ
チェーン間のディビジョン ポイント
(分岐点)。 この値は、warm のサブ
チェーンに使用するバッファ
チェーンのパーセンテージである。許容範囲は
1 から 100 まで。デフォルトは 100 。詳細は
項6.4.6. 「MyISAM
キーキャッシュ」 を参照のこと。
language
エラー メッセージに使用する言語。
mysqld を大きなファイルをサポートするオプションでコンパイルしているかどうか (を指す)。
大きなページをサポートしている場合の戻値。
ロケールを指定する。これは月日、略語などを表示する言語を制御する。DATE_FORMAT()
、DAYNAME()
、MONTHNAME()
などの関数からの出力に影響する。ローケル名は
POSIX 標準で、'ja_JP'
または 'pt_BR'
などとする。デフォルトはシステムのローケル設定を問わず、'en_US'
である。詳細は 項4.10.9. 「MySQL サーバのローケル サポート」
を参照のこと。(MySQL 5.1.12 で導入)
サーバのライセンス タイプ (種類)
LOAD DATA INFILE
ステートメントで、LOCAL
をサポートしているかどうか
(を指す)。詳細は
項4.6.4. 「LOAD DATA LOCAL
のセキュリティ関連事項」を参照のこと。
--memlock
によるメモリのロックが
mysqld で有効かどうか
(を指す)。
log
すべてのクエリのログを有効にしているかどうか (を指す)。項4.11.3. 「一般クエリ ログ」 を参照のこと。
バイナリ ログを有効にしているかどうか (を指す)。 項4.11.4. 「バイナリ ログ」 を参照のこと。
log_bin_trust_function_creators
この値はバイナリ
ログを有効化しているときに適用。Stored
Function (関数) を作成するユーザが、
信用できない関数を作成する可能性を制御する。つまり、バイナリ
ログへの書き込みに対して危険な関数を発行しないようにする。
この値を 0 (デフォルト)
にする場合、CREATE
ROUTINE
、ALTER ROUTINE
権限のいずれかに加え、SUPER
権限を持たないユーザによる関数の作成
(置換) を許可しない。 0
にすると、その制限が強まり、DETERMINISTIC
あるいは、READS SQL
DATA
、NO SQL
のいずれかの特性を持った関数での宣言が必要になる。この値を
1 にすると、MySQL
は関数に対して、このような制限はなくなる。詳細は
項17.4. 「ストアドルーチンとトリガのバイナリログ」
を参照のこと。
エラー ログの位置。
一般クエリ ログとスロー クエリ
ログの出力先。TABLE
(テーブルへのログ)、FILE
(ファイルへのログ)、NONE
(テーブルまたはファイルにログしない。)
などを、複数の単語をカンマ区切りリストにできる。デフォルトは
TABLE
。NONE
は、どの指定子よりも優先となる。つまり、NONE
の場合、ログ
エントリはログを有効化していても書き込みがない。ログを有効にしていなければ、log_output
が NONE
でなくても、ログできない。詳細は
項4.11.1. 「一般クエリとスロー クエリのログ出力先の選択」 を参照のこと。(MySQL
5.1.6 から導入)
インデックスしていないクエリをスロー クエリ ログに記録しているかどうか (を指す)。詳細は 項4.11.5. 「スロー クエリ ログ」 を参照のこと。(MySQL 5.1.11 から導入)
スレーブ サーバがマスタ サーバから受け取った更新を、スレーブ サーバ自身のバイナリ ログに記録するかどうかを指す。この効果を得る (スレーブでバイナリ ログする) には、スレーブ上でバイナリ ログを有効にしておく必要がある。項5.1.3. 「レプリケーションのオプションと変数」 を参照のこと。
スロー クエリのログするかどうか
(を指す)。「Slow」 は
long_query_time
の値で決定する。項4.11.5. 「スロー クエリ ログ」
を参照のこと。
log_warnings
警告メッセージに追加情報を表示するかどうか (を指す)。デフォルトでは有効 (1) 。0 にすると無効になる。この値が1より小さい場合、接続を中断した情報をエラーログに出力できない。
クエリでこの値(秒単位)より時間がかかると、Slow_queries
カウンタが増える
(increment)。--log-slow-queries
オプションを使用している場合、クエリはスロー
クエリ ログ
ファイルでの記録になる。この値は、CPU
時間ではなく、リアル
タイムである。したがって、低負荷のシステムではしきい値
(基準値)
より下のクエリが、高負荷のシステムでしきい値より上になる場合がある。下限値は
1 で、デフォルトは
10。項4.11.5. 「スロー クエリ ログ」
を参照のこと。
1
に設定すると、対象テーブルに影響する
SELECT
または LOCK TABLE
READ
を完了するまで、INSERT
、UPDATE
、DELETE
、LOCK
TABLE WRITE
などのステートメントを待機させる。この変数の旧称は
sql_low_priority_updates
。
データ
ディレクトリのファイルシステムの大小文字区別を示す。OFF
の場合は、ファイル名でこの区別をしていることを意味し、ON
の場合は大小文字の区別をしていないことを意味する。
この値が 1 の場合、テーブル名を小文字変換で格納している。つまりテーブル名には大小文字の区別がないことを示す。この値が 2 の場合、テーブル名を入力通りに格納するが、小文字の区別をする。このオプションはデータベース名とテーブルのエイリアスで適用。項8.2.2. 「識別子の大文字/小文字区別」 を参照のこと。
InnoDB
テーブルを使用する場合、名前を強制的に小文字に変換するには、すべてのプラットフォームでこの値を
1 に設定する。
たとえば、Windows または Mac OS
などで、システムで MySQL
を実行していて、ファイル名に大小文字の区別がない場合は、この値を
0 に しない
こと。起動時などでこの値をまだ設定していない状態で、かつデータ
ディレクトリのファイルシステムで大小文字の区別をしていないときには、MySQL
が自動的に lower_case_table_names
を 2 に設定する。
1 パケットの最大サイズ。または生成/中間文字列。
パケット メッセージ バッファは
net_buffer_length
バイトで初期化するが、必要に応じて
max_allowed_packet
バイトまで大きくできる。デフォルト値は小さいが、大きな(不正)パケットを受けないように設定している。
大きな BLOB
カラムを使用している場合には、この値を大きくする必要がある。使用する最大の
BLOB
と同じ大きさにする。max_allowed_packet
のプロトコル制限は 1GB。
複数ステートメントのトランザクションでこれより多くのメモリが必要になると、Multi-statement
transaction required more than
'max_binlog_cache_size' bytes of
storage
というエラーが発生する。下限値は 4096
で、最大 (デフォルト) は 4 GB 。
バイナリ ログ ファイルへの書き込みがログ ファイル サイズと干渉し、この値を超える場合、バイナリ ログをローテートする。(現行 ファイルを閉じて、次のファイルを開ける。) 設定可能値は、4096 バイト以上 1 GB (デフォルト) 以下。
注意 : トランザクションではバイナリ
ログへの書き込みを 1
つのまとまりとして処理するため、トランザクション自体を複数のバイナリ
ログに分割することは絶対的にない。したがって、大きなトランザクションがある場合、バイナリログの
max_binlog_size
が大きくなることがある。
max_relay_log_size
が 0
の場合、max_binlog_size
の値がリレー ログにも適用となる。
ホストからの接続中断回数がこの値を越えた場合、それ以降、そのホストからの接続をブロックする。ブロックを解除するには、FLUSH
HOSTS
コマンドを使用する。
MySQL への最大同時接続数。MySQL 5.1.15
以降のデフォルトは150 (以前は 100)。詳細は
項B.1.2.6. 「Too many connections
」
を参照のこと。
MySQL Enterprise.
警告:同時最大接続数を増加することには危険が伴います。MySQL
Network Monitoring and Advisory Service
では、max_connections
に関するアドバイスを提供しています。詳細は
http://www-jp.mysql.com/products/enterprise/advisors.html ()
で参照してください。
この値を増やすと、mysqld のファイルの記述子の数を増やすこととなる。ファイル記述子の制限に関するコメントは 項6.4.8. 「MySQL でのテーブルのオープンとクローズの方法」 を参照のこと。
INSERT DELAYED
ステートメント処理に、スレッドがこの数に達すると処理しない。つまり、スレッドの最大数である。使用中の
INSERT DELAYED
スレッド後に、データを新規テーブルに挿入すると、その行は
DELAYED
属性を指定していない行になる。値を 0
に設定すると、MySQL は DELAYED
を処理するスレッドを
作成しなくなる。事実上、DELAYED
を完全に無効にする。
SHOW ERRORS
や SHOW
WARNINGS
で表示するエラーや警告の最大数。
MEMORY
型テーブルの最大メモリ
サイズを設定する(ヒープ)。この変数の値で
MEMORY
テーブルの
MAX_ROWS
値を計算する。この変数の設定は、既存の
MEMORY
テーブルには影響しない。ただし、CREATE
TABLE
などのステートメントで再生成したり、
ALTER TABLE
または TRUNCATE
TABLE
で変更した場合は影響する。
MySQL Enterprise.
MySQL Network Monitoring and Advisory Service
では、max_heap_table_size
の最適設定に関するアドバイス (推奨)
を提供しています。詳細は
http://www-jp.mysql.com/products/enterprise/advisors.html
を参照してください。
max_insert_delayed_threads
max_delayed_threads
に対するシノニム。
max_join_size
の値でクエリを制限する。長い時間をかけて百万行を返すような
WHERE
なしの結合を作成するようなユーザをいる場合にこの変数を設定すると、サーバへの無駄な負荷を軽減させることができる。(max_join_size
値を超える行数のレコードを読み取ろうとするとエラーになる。)
SELECT
ステートメントで、レコードの組み合わせ調べ
(単一テーブルまたは複数テーブルに対するステートメント)
がこの値を超える場合
や、またはこの値を超えるディスクシークの実行を許可しない。
この値を設定すると、キーの使用が不適切で長時間かかるような
SELECT
ステートメントを捕捉できる。
この変数を DEFAULT
以外の値で設定すると、SQL_BIG_SELECTS
の値が 0
にリセットになる。SQL_BIG_SELECTS
値を再び設定すると、max_join_size
変数は無視の対象になる。
クエリ結果がクエリ キャッシュにある場合は、結果のサイズ チェックすることはなく、これは結果がすでに計算済みで、それをクライアントに送信することがサーバの負荷にならないためである。
この変数の旧称は
sql_max_join_size
である。
使用する filesort
アルゴリズムを決定するインデックス値の最大サイズ。項6.2.12. 「ORDER BY
最適化」
を参照のこと。.
サーバの Prepared ステートメントの合計数の最大値。この値で制限する。リクエスト応答を大量に発生させることで、サーバの応答機能の帯域を使い切るなど、いわゆる DoS攻撃 (denial-of-service attacks) を受ける可能性がある環境で使用する。デフォルト値は 16382。許容値は 0 から 100 万。この値が実行中の Prepared ステートメントの数より低い場合は、既存ステートメントが影響を受けることはなく、そのまま使用できるが、新規のステートメントに関しては、この制限値よりも現行数を低減するまで、準備できない。(MySQL 5.1.10 からの導入)
レプリケーション スレーブがリレー
ログに書き込みをすると、カレント ログ
ファイル
サイズがこの変数値を越える原因になり、スレーブはリレー
ログをローテートする。
(現行ファイルを閉じ、次のファイルを開ける。)
max_relay_log_size
を 0
とした場合、サーバはバイナリ
ログとリレー ログの両方に
max_binlog_size
を使用する。max_relay_log_size
が 0 より大きい場合、リレー
ログのサイズを抑制し、両ログに異なるサイズを持たせることが可能になる。max_relay_log_size
は 4096 バイトから 1GB
以内で設定するか、または 0
に設定する。デフォルト値は 0
。項5.5.1. 「レプリケーション実装の詳細」
を参照のこと。
キーでレコード検索の最大回数を制限する。キー
スキャンでテーブルからレコードを検索するときに、MySQL
オプティマイザでキーの基数とは関係なく
(無視して)、キー検索の回数をこの指定値までとする。項12.5.4.17. 「SHOW INDEX
構文」
を参照のこと。この値を低く(100
くらいに)設定すると、MySQL
でののスキャンがテーブルではなくキーを優先するようになる。
BLOB
値または
TEXT
値をソートするときに使用するバイト数。各値の最初の
max_sort_length
バイトだけを使用し、残りは無視になる。
ストアド プロシージャが呼び出す回数。このオプションのデフォルト値は 0 で、ストアド プロシージャの再帰を完全に無効にする。
この変数はグローバル、かつセッションごとの設定が可能。
1 つのクライアントが同時に開けたままにできるテンポラリ テーブルの最大数。(このオプションはまだ利用できない。)
単一ユーザ (MySQL アカウント) が同時に接続できる最大数。値 0 は 「制限なし」 という意味。
この値はグローバル スコープとセッション
スコープ (読み込みオンリー)
の両方を持つ。
セッション値は通常グローバル値と同じ値。ただし、
セッション ユーザが 0 以外の
MAX_USER_CONNECTIONS
値を持ってる場合には、このセッション値がアカウント制限にも反映する。
この回数の書き込みロックをした後に、読み取りロックを許可する。(ロックが必要なほど大量のテーブル書き込みがある場合など)
テーブル ハンドラへ一括送信できる最大許容範囲 (範囲選択時)。デフォルトは256。複数の値域をハンドラへ 1回で送れると、一定の選択において劇的なパフォーマンス向上になる。これは NDB Cluster のテーブル ハンドラで非常に有用で、値域要求をすべてのノードへ送るときに役に立つ。要求のバッチを一度に送ることは、通信コストを大幅節減に繋がる。
CREATE TABLE
時に、MAX_ROWS
オプションを指定していないときの
MyISAM
テーブル内部のポインタ
サイズを指定する。(テーブルの最大物理サイズの決定。)
変数は 2 以上 7
以下である必要がる。デフォルトでは
6。項B.1.2.11. 「The table is full
」 を参照のこと。
myisam_max_extra_sort_file_size
(廃止)
ノート:この変数は MySQL 5.1 ではサポートしていない。詳細は MySQL 5.0 Reference Manual を参照のこと。
REPAIR TABLE
、ALTER
TABLE
、LOAD DATA
INFILE
などを使用して
MyISAM
インデックスを再生成するときに、MySQL
が使用できるテンポラリ
ファイルの最大サイズ。ファイル
サイズがこれより大きい場合、インデックスはキー
キャッシュでの作成になる(時間がかかる)。値の単位はバイト。
デフォルトでは 2GB 。MyISAM
インデックス
ファイルがこのサイズを越え、ディスク容量が要るようになるときには、この値を大きくするとパフォーマンス向上になる。
--myisam-recover
オプションの値。項4.2.2. 「コマンド オプション」
を参照のこと。
この値が 1 より大きい場合、Repair by
sorting
の修復プロセスでの
MyISAM
テーブル
インデックスは並列での作成になる。インデックス毎のスレッド生成になる。
ノート:複数スレッドの修復は ベータ段階 です。
REPAIR TABLE
文実行時に
MyISAM
テーブルのインデックスをソートする場合、または
CREATE INDEX
や ALTER
TABLE
などでインデックスを作成する場合に、割り当てるバッファのサイズ。
MyISAM
テーブルでインデックス分布統計を集計するとき、サーバの
NULL
値の扱いを決定する。この変数の値は
nulls_equal
または
nulls_unequal
のどちらか。nulls_equal
の場合、すべての NULL
インデックス値を同等として扱い、
NULL
値の数とサイズが同等の単値のグループを生成する。nulls_unequal
の場合、NULL
の値同士を同等とは扱わず、それぞれの
NULL
で、サイズを 1
とする独特のグループを生成する。
この方法で、クエリの実行に対して、オプティマイザがインデックスを選択するときに影響を受けるテーブルの統計を取る。詳細は
項6.4.7. 「MyISAM
インデックス統計コレクション」
を参照のこと。
MyISAM
テーブルの読み書き込みで使用するメモリ
マッピング。(MySQL 5.1.4 での追加)
範囲指定の SELECT
文を発行するときに、ストレージ
エンジンに送ることができる範囲の最大値を指定する。デフォルトでは
256。 複数の範囲指定をストレージ
エンジンに送ることは 特定の SELECT
文に対して、特に NDBCLUSTER
において、大幅にパフォーマンスを改善する。
サーバが名前付きパイプ (named pipes) を経由した接続をサポートするかどうか。Windows 専用。
auto_increment カラムにおけるギャップの確率
(probability) を決定する。1
にセットした場合、これを最小限に抑える。最適化を目的として値を大きくする設定すると、—
が挿入を高速化するが、バッチ挿入に使用する自動インクリメントの数が減る可能性がある。デフォルトは
32
。下限値は 1
.
NDB
のクエリ
キャッシュをチェックする前に待機するミリ秒
(msec)。この値を 0
(デフォルト)
に設定すると、NDB
クエリ
キャッシュでクエリ毎のバリデーションを行う。
推奨最大値は 1000
で、クエリ
キャッシュが一秒間に一度のチェック対象になることを意味する。値が大きくなるということは、NDB
のクエリ
キャッシュのチェック回数が減り、別のmysqld
での更新が原因で、バリデーションが無効化することを意味する。この値を
2000
以上に設定しないこと。
デバッグやトラブルシューティング用に追加の
NDB
ロギングを行うには、ゼロではない値を設定する。デフォルトは
0
。
(MySQL 5.1.6 での追加)
NDB
へ迅速にバッファを送るよう命令する。他のスレッドを待機しない。デフォルトは
ON
。
統計の精度を設定する。開始キーと終了キーの数を決め、統計メモリ
キャッシュに格納する。ゼロはキャッシュしていないことを示し、その場合には、データ
ノードが直接的にクエリになる。デフォルトは
32
.
NDB
インデックス統計。クエリの最適化。デフォルトでは
ON
。
統計キャッシュの代わりにデータ
ノードにクエリを行うかを示す回数。たとえば、値が
20
の場合、クエリ 20
毎に、データ ノードを渡すという意味。
ndb_report_thresh_binlog_epoch_slip
binlog
ステータスをレポートするまでに、遅れるエポック数の閾値。たとえば、値が
3
(デフォルト)
であった場合、ストレージ
ノードから受けたエポックと 3 以上の binlog
に適用したエポックの数が異なるときに、ステータス
メッセージをクラスタ ログする。
ndb_report_thresh_binlog_mem_usage
binlog
ステータスをレポートするまで残っている空きメモリのパーセンテージの閾値。たとえば、値が
10
(デフォルト)
であった場合、データ ノードから受ける
binlog データに使うメモリが 10%
降下するという意味。そしてステータス
メッセージをクラスタ ログにする。
NDB
で、オンラインの
ALTER TABLE
操作で、問題が発生したテーブルをコピーするために使用する。デフォルトは
OFF
になっている。
(MySQL 5.1.12 での追加)
SELECT COUNT(*)
クエリの高速化を図るときに、レコードの回数を適用するよう
NDB
に命令する。デフォルトでは
ON
になっている。全体的にクエリを速度化するには、これを無効にする。つまり、ndb_use_exact_count
を OFF
にする。
NDB
トランザクションを
OFF
に設定することで無効にできるが、これは極力やらない。デフォルトでは
ON
になっている。
クライアント
スレッドが接続バッファと結果バッファに関連付けられている。両者は
net_buffer_length
で与えられたサイズで始まるが、必要に応じて、max_allowed_packet
バイトまで劇的に拡大できる。結果バッファは
SQL 文毎に net_buffer_length
まで縮小する。
この値はできるだけ変更しない。ただし、メモリが非常に限られている環境において、この値をクライアントから送信されるステートメントの長さに合わせて設定できる。ステートメントがこの長さを越えた場合、接続バッファは自動的に拡大する。net_buffer_length
の最大値は 1MB に設定できる。
読み込みを中断するまでデータ追加を待機する秒数。タイムアウトは
TCP/IP 接続にだけ適用する。これは Unix
のソケット
ファイル、または名前付きパイプ、共有メモリなどを経由していない接続のことである。サーバがクライアントからの読み込みを行うとき、net_read_timeout
のタイムアウト値が中断するタイミングを制御する。書き込みを行うときは、net_write_timeout
のタイムアウト値が中断するタイミングを制御する。slave_net_timeout
のセクションも参照のこと。
通信ポートでの読み込みが中断した場合に、実行できる再試行回数。FreeBSD でこの値を大きくすると、内部中断をすべてのスレッドに通知する。
書き込みを中断するまで、ブロック書き込みを待機する秒数。タイムアウトは
TCP/IP 接続にだけ適用する。これは Unix
のソケット
ファイル、または名前付きパイプ、共有メモリなどを経由していない接続のことである。net_read_timeout
も参照のこと。
MySQL 4.0 において、MySQL 4.1と同様の動作
(下位互換性)をするかどうか (を指す)。MySQL
5.1 では、この値は常に
OFF
。
old_passwords
サーバが MySQL
4.1より前で使用しているパスワード形式を採用するかどうか
(を指す)。項B.1.2.3. 「Client does not support authentication protocol
」
を参照のこと。
これは変数ではない。しかし、特定の変数を設定するときに使用できる。詳細は
項12.5.3. 「SET
構文」 を参照のこと。
mysqld
が開けるオペレーティング
システムのファイル数。これはシステムで指定されている実際の値であり、起動時のパラメータとして
--open-files-limit
オプションで
mysqld または
mysqld_safe
に指定したものとは異なる場合がある。MySQL
がオープンファイル数を変更できないシステムでは
0 になる。
ヒューリスティックス (経験則) を採用したクエリ最適化を制御し、オプティマイザの検索スペースからあまり見込みのない、部分的なプランをパージ (削除) する。値を 0 にすると、ヒューリスティックスを無効化し、オプティマイザは完全な検索を行う。値を 1 にすると、オプティマイザは中間プラン (intermediate plans) で検索したレコード数に基づいてプランを削除する。
クエリ オプティマイザが実行する検索深さの最大値を指定する。クエリ結果の関係数が大きい値の場合は、プランよりも良いということを示すが、クエリの実行プラン生成に時間がかかる。関係数が小さい値の場合は、より速い実行プランを返すが、結果プランが最適であるとは言えない。値を 0 した場合、システムは自動的に妥当な値を計算する。値をクエリに使用しているテーブルの最大値に + 2 した場合は、オプティマイザが検索を実行するときに、MySQL 5.0.0 (と前バージョン) で使用したアルゴリズムに切り替える。
プロセス ID (PID)
ファイルのパス。--pid-file
オプションで設定する。
プラグイン ディレクトリのパス。(MySQL 5.1.2 での追加)
port
mysqldサーバが利用するTCP/IPポート番号。--port
オプションで設定する。
インデックスをプレロードするときに割り当てるバッファ サイズ。
準備されたステートメント (prepared statements)
の現在値。max_prepared_stmt_count
システム変数で与えるステートメントの最大値。MySQL
5.1.10 からの追加で、MySQL 5.1.14 では、
Prepared_stmt_count
グローバル
ステータス変数に変換していた。
MySQL サーバが使うクライアント/サーバ間のプロトコル バージョン。
クエリの解析や実行で生成するオブジェクトに割り当てるメモリ ブロックの割り当てサイズ。メモリのフラグメントに問題がある場合、これを少し大きくすると改善できる可能性がある。
この値より大きい結果はキャッシュしない。デフォルトは 1MB。
クエリ キャッシュで割り当てるブロックの最小サイズ (バイト単位)。デフォルトは 4096(4KB)。この変数を利用した効果については、項4.13.3. 「クエリ キャッシュの設定」 を参照のこと。
古いクエリの結果の保存用に割り当てたメモリ
(クエリ キャッシュで確保するメモリ)。
この値を 0 (デフォルト)
にすると、クエリ
キャッシュは無効化する。許容値は 1024
の倍数。値はすべて、近似の倍数で端数を切り捨てる。ノート:
query_cache_size
バイトのメモリは、query_cache_type
が 0
で設定してあっても、割り当ての対象となる。詳細は
項4.13.3. 「クエリ キャッシュの設定」
を参照のこと。
クエリ
キャッシュを行う条件を指定する。GLOBAL
値に設定すると、これ以降に接続するすべてのクライアントの条件が反映する。それぞれのクライアントで
SESSION
値を設定することができ、これはマシン
レベルでのクエリ
キャッシュに影響する。次のテーブルは数値を示す。
オプション | 説明 |
0 または OFF
|
キャッシュを使用しない。注意:これはクエリ
キャッシュのバッファの割当を解除しない。解除するには
query_cache_size を 0
にセットする。 |
1 または ON
|
SELECT SQL_NO_CACHE
を除くすべての結果をキャッシュする。 |
2 または DEMAND
|
SELECT SQL_CACHE
で始まるクエリだけをキャッシュする。 |
この変数のデフォルトは ON
。
通常、クライアントが MyISAM
テーブルの WRITE
ロックを獲得する場合、別のクライアントはクエリの結果がキャッシュ内にあるときは、そのテーブルへのクエリ発行をブロックしない。この値を
1 にした場合、テーブルに対する
WRITE
ロックを得ることとなり、そのテーブルに対するクエリ
キャッシュのクエリは無効化する。これにより、テーブルへのアクセスを試みるクライアントに対して、ロック有効中は待機するよう抑制できる。
クエリの解析および実行に使用する永続バッファ
サイズ。このバッファはクエリ間でも開放しない。頻繁に複雑なクエリを発行する場合、query_prealloc_size
の値を大きくして、クエリ実行時のメモリ割り当て回数を減らすことになるため、パフォーマンスを改善できる可能性がある。
範囲の最適化で割り当てるブロックのサイズ。
順次スキャン (全件) を行うときに各スレッドが割り当てるバッファ サイズ。バイトで指定する。このスキャンを何度も行う場合には、この値を大きくする。デフォルトは 131072。
レプリケーション スレーブ
サーバで、この値を ON
に設定すると、サーバが SUPER
権限を持つユーザ以外からの更新ができない。スレーブ
サーバにおいては、マスタ
サーバからの更新だけを許容し、クライアントからの要求を無視するようなる。この動作は
TEMPORARY
テーブルには使えない。
read_only
は GLOBAL
変数として存在するために、SUPER
権限が必要な値への変更になる。マスタ
サーバで read_only
に変更すると、スレーブ
サーバで複製できなくなる。この値は、マスタの設定とは独立しているスレーブ
サーバで行う。
MySQL 5.1.15 以降は、次のことに注意する。
read_only
を有効にしようとするときに、明示的なロック
(LOCK TABLES
などから)
がある場合、または未処理のトランザクションがある場合は、エラーになる。
別のクライアントに明示的なテーブル
ブロックがある場合、または未処理のトランザクションがある場合に、read_only
を有効にすると、ロックをリリースし、トランザクションが完了するまでブロックする。read_only
にする試みが進行中である場合、テーブル
ロックに対する別のクライアントからの要求、またはトランザクションを開始することへの要求を、read_only
の設定を完了するまで、ブロックする。
read_only
はグローバル読み込みブロック
(FLUSH TABLES WITH READ LOCK
などから)
を保持している間に有効化できる。これはテーブル
ロックを巻き込まないためである。
ソートしたレコードを読み出すときのバッファサイズを指定する。ディスク検索を行わないように、レコードをこのバッファから読み取る。この値を大きく設定すると、ORDER
BY
のパフォーマンスを大幅に向上できる。しかし、これはスレッド固有の変数であるため、これをグローバル値を大きな値で設定すべきではない。したがって、大量のクエリを実行するときにだけ、クライアント内のセッション値を変更する。
リレー ログ
ファイルが不必要になったときの自動削除フラグを設定する。デフォルトは
1 (ON
)。
この変数は使用していない。
--secure-auth
オプションを付けて
MySQL サーバを起動する場合、MySQL
サーバは古い形式 (4.1 より前)
のパスワードを認証しない。
このときの値は ON
(ブロック)。接続をブロックしないようにするには、OFF
にする。
これによりネットワーク セキュリティが不安定な場合など、古い形式を採用しているパスワードでの接続を許可しないようにするには、このオプションを有効にする。
このオプションを有効にしたときに、権限テーブルが
4.1
よりも前の形式である場合には、起動時にサーバ
エラーが発生する。 項B.1.2.3. 「Client does not support authentication protocol
」
を参照のこと。
サーバ ID 。--server-id
オプションで設定する。これはレプリケーションを行うときなどに、マスタとスレーブのサーバ間でお互いを一意的に認識させるために使用する。
共有メモリに付ける識別子を指定する。Windows 専用。
共有メモリ接続で使用する共有メモリの名前。
このオプションはWindowsで有効。複数の MySQL
インスタンス (サーバ)
を一台のマシンで使用している場合に便利。デフォルト名は
MYSQL
。この名前は大文字と小文字を区別する。
OFF
: mysqld
が外部ロックを使用している場合。ON
: 外部ロックが無効の場合。
ON
:
サーバがローカル接続のみを許可する場合
(非 TCP/IP)。Unix では、ローカル接続に Unix
ソケット ファイルを使用。Windows
では、名前付きパイプまたは共有メモリを使用。NetWare
では、TCP/IP
接続をサポートしている場合のみ。そのため、この変数を
ON
に設定してはいけない。この変数を
ON
にするには、--skip-networking
オプションを使用する。
SHOW DATABASES
権限を持たずして
SHOW DATABASES
を使用するユーザにデータベースを表示しない。これは、他人のユーザ権限のデータベースを表示しないため、セキュリティの向上に役立つ。この効果は
SHOW DATABASES
権限の設定オプションに依存する。値を
ON
にした場合、SHOW
DATABASES
ステートメントは SHOW
DATABASES
権限を持つユーザにだけが使用でき、ステートメントにはすべてのデータベース名を表示する。値を
OFF
にした場合、SHOW
DATABASES
はすべてのユーザに対してこのステートメントの発行を許可するが、ユーザがSHOW
DATABASES
などの権限を持っているデータベースだけの表示になる。
slave_compressed_protocol
マスタとスレーブの両方が圧縮プロトコルをサポートしているかどうか (を指す)。
スレーブサーバがレプリケーション データ
( LOAD DATA INFILE
ステートメント) を読み込むときに
使用するテンポラリ
ディレクトリのパスを指定する。
読み込みを中断するまで、マスタ/スレーブ接続からのデータを待機する秒数。タイムアウトは TCP/IP 接続にだけ適用。Unix ソケット ファイルを介した接続や、名前付きパイプ、共有メモリには適用しない。
slave_skip_errors
スレーブがスキップ (無視) するレプリケーション エラー。
InnoDB
デッドロック、InnoDB
の
innodb_lock_wait_timeout
、NDBCluster
の TransactionDeadlockDetectionTimeout
または TransactionInactiveTimeout
を越えた場合、レプリケーション
スレーブの SQL
スレッドはトランザクションの実行に失敗する。そのときに、エラーで停止する前に、自動試行する回数のことを
slave_transaction_retries
回と定義する。デフォルトでは 10 回。
スレッドの作成にこの値(秒単位)より時間がかかると、サーバが
Slow_launch_threads
ステータス変数 (カウンタ)
をインクリメントする。
スロー クエリ
ログが有効になっているかどうか
(を指す)。値が 0 (または OFF
)
の場合、ログしない。値が 1 (または
ON
)
の場合、ログする。デフォルトは
--log-slow-queries
オプションを設定しているかどうかによる。ログ出力先は
log_output
システム変数で制御する。値を
NONE
にした場合、ログできるようにしていても、ログ
エントリを書き込まない。slow_query_log
は MySQL 5.1.12 からの導入。
スロー クエリ ログ
ファイルの名前。デフォルトは
。初期値は host_name
-slow.log--log-slow-queries
オプションで変更可能。(MySQL 5.1.12
での追加)
socket
Unix
環境で、ローカル接続に使用するソケット
ファイル パス。デフォルトは
/tmp/mysql.sock
になっている。配布用の形式によっては、ディレクトリが異なる場合がある。たとえば、
RPM の /var/lib/mysql
など。
Windows環境では、ローカル接続に使用する名前付きパイプ名のこと。デフォルトは
MySQL
。文字の大小区別なし。
ソートを実行する必要のあるスレッドがこのサイズのバッファを割り当てる。ORDER
BY
または GROUP BY
などの操作を速くするには、この値を大きくする。
項B.1.4.4. 「Where MySQL Stores Temporary Files」 を参照のこと。
現在のSQLモード。この値は動的に変更することが可能。項4.2.6. 「SQL モード」 を参照のこと。
スレーブ
サーバが無視するマスタからのイベント数。項12.6.2.6. 「SET GLOBAL SQL_SLAVE_SKIP_COUNTER
構文」
を参照のこと。
SSL CA 証明をリストしたファイルのパス。(MySQL 5.1.11 での追加)
SSL CA 証明書 (PEM形式) があるディレクトリへのパス。(MySQL 5.1.11 での追加)
セキュリティ上、安全に接続を確立するために使用する SSL 証明書。(MySQL 5.1.11 での追加)
SSL 暗号化に使用するサイファ (暗号鍵)
のリスト。サイファ リストは openssl
ciphers
コマンドと同形式。(MySQL 5.1.11
での追加)
セキュリティ上、安全に接続を確立するために使用する SSL キー ファイル名。(MySQL 5.1.11 での追加)
デフォルトのストレージ エンジン
(テーブル
タイプ)。サーバ起動時にストレージ
エンジンを設定するには、--default-storage-engine
オプションを使用する。項4.2.2. 「コマンド オプション」
を参照のこと。
この値が正数の場合、MySQL
サーバはバイナリ ログへこの
sync_binlog
回書き込みを行い、それごとにディスクへ同期する
(fdatasync()
を使用)。オートコミットモードでは、一つの
SQL
文を発行毎に、ログ書き込みとなる。それ以外のモードでは、トランザクションごとの書き込みになる。デフォルト値は
0
で、ディスクへの同期は行わないことを示す。値を
1
にすると、最も安全な設定となる。これはクラッシュした場合などに失うものが、1
ステートメントあるいは1
トランザクションに留まるためである。しかし、これはパフォーマンスを遅くするため、対応策としては、同期を高速化するために、バッテリ
バックアップ式キャッシュをディクスに持たせるなどする。
sync_binlog
値の 0 (デフォルト)
は、追加フラッシュは行わないことを示す。これはフラッシュが
OS に依存する。
値を 1
とした場合に、テンポラリ以外のテーブルを作成すると、.frm
ファイルを ディスクへ同期する
(fdatasync()
を使用)。これは処理スピードを遅くするが、クラッシュに対して安全である。デフォルトは
1。
サーバ システムのタイム
ゾーン。サーバが起動するときは、マシンのデフォルトタイムゾーンを継承する。これは
サーバを起動したユーザアカウントの環境やスタートアップ
スクリプトのオプションなどで変更可能。値は
system_time_zone
を設定する。通常、タイム ゾーンは
TZ
環境変数で指定する。または
mysqld_safe スクリプトでの
--timezone
オプションでも指定可能。
system_time_zone
と
time_zone
は別物である。両者の値は同値であることもあるが、後者はクライアント接続毎にタイムゾーンを初期化する変数である。項4.10.8. 「MySQL サーバのタイム ゾーン サポート」
を参照のこと。
MySQL 5.1.3
前まで、table_open_cache
と呼ばれていた。 MySQL 5.1.3 以降は
table_open_cache
を使用する。
定義キャッシュに保存できるテーブル定義数。テーブル数が多い場合に、テーブルを開けるスピードを速めるために、大きなテーブル定義キャッシュを作成できる。通常のテーブル キャッシュと比較すると、テーブル定義キャッシュが必要とするスペースが小さく、ファイル記述子を使用しない。(MySQL 5.1.3 以降)
テーブル レベル ロックで待機する時間
(秒)
を指定する。デフォルトのタイムアウトは
50
秒。タイムアウトは接続でカーソルを開けるとアクティブになる。SUPER
権限を保持していれば、ランタイムにグローバル設定可能。
すべてのスレッドに対するオープン
テーブルの数
(キャッシュする最大テーブル数)。この値を大きくするということは、mysqld
が要求するファイル記述子の数を増やすということ。Opened_tables
ステータス変数をチェックしてテーブル
キャッシュを増やす必要があるかどうかを調べる。項4.2.5. 「ステータス変数」
を参照のこと。Opened_tables
の値が大きく、FLUSH TABLES
を頻繁に行わない場合
(単にテーブルの開閉を強制するだけ)、table_open_cache
変数の値を増やす必要がある。テーブル
キャッシュに関する詳細は
項6.4.8. 「MySQL でのテーブルのオープンとクローズの方法」 を参照のこと。MySQL
5.1.3 前には、table_cache
と呼ばれていた。
storage_engine
のシノニム。MySQL
5.1 では storage_engine
を使用。MySQL 5.2
では、table_type
は削除されている。
再利用のためにキャッシュ可能なスレッド数。クライアントが接続を切断したときに、以前のスレッド数が
thread_cache_size
以下であれば、そのクライアントのスレッドはキャッシュに入る。新しいスレッドはすべてキャッシュから取り込まれ、キャッシュが空の場合のみ、新しいスレッドが作成される。新しい接続が多く発生する場合、この変数を大きくすることによりパフォーマンスを向上できる
(スレッド実装が既に理想的な状態であれば、それほどパフォーマンスは向上しない)。Connections
および Threads_created
などのステータス変数の差異を調べると、スレッド
キャッシュの効率性を確認できる。詳細は
項4.2.5. 「ステータス変数」
を参照のこと。
Solaris では、mysqld
がこの値を伴う
thr_setconcurrency()
を呼び出す。アプリケーションに、同時に実行する理想的なスレッド数を提供する。
各スレッドのスタック
サイズ。crash-me
で検出する制限の多くは、この値に依存する。通常の操作ではデフォルト
(192 KB)
で十分である。項6.1.4. 「MySQL ベンチマークスィート」
を参照のこと。
この変数は実装していない。
現在のタイムゾーン。この変数はクライアント接続毎にタイム
ゾーンを初期化する。デオフォルトは
'SYSTEM'
、つまり
system_time_zone
「の値を使う」
ということ。サーバ起動時に
--default-time-zone
オプションで明示的に指定できる。項4.10.8. 「MySQL サーバのタイム ゾーン サポート」
を参照のこと。
InnoDB
ミューテックスをカウントしているかどうかを制御する。この値を
0 または OFF
(デフォルト)
に設定すると、ミューテックス
カウントは無効になる。この値を 1 または
ON
に設定すると、ミューテックス
カウントは有効になる。このカウントを有効にすると、SHOW
ENGINE INNODB MUTEX
からの出力の
os_wait_times
値は、OS
が待機した回数 (ms)
を示す。それ以外では、この値は 0
である。
メモリ内のテンポラリ
テーブルの最大サイズ。実際の限度は
max_heap_table_size
や
tmp_table_size
の値より小さい値になる。メモリ内テンポラリ テーブルが制限値を超えると、MySQL
はこれを自動的にディスク内の
MyISAM
テーブルにする。高度な GROUP
BY
クエリを展開する場合にメモリが沢山あるときは、
tmp_table_size
(必要に応じて、max_heap_table_size
も) の値を増やす。
テンポラリ ファイルとテンポラリ
テーブルのディレクトリ。この変数はラウンド
ロビン式の複数のパスのリストをセットするときに使用する。Unix
で、パスはコロン
(‘:
’)
で区切り、Windows、NetWare、OS/2
などではセミコロン
(‘;
’) で区切る。
複数ディレクトリ機能は、物理ディスク間で負荷を分担するときに使用する。MySQL
サーバが レプリケーション
スレーブである場合、tmpdir
を使用して、メモリ
ベースのシステムファイルまたはサーバ
ホスト (OS)
再起動時に内容が消去されるディレクトリを指定しない。これは、レプリケーション
スレーブが、マシンがリブートした場合や
LOAD DATA INFILE
文の処理中であった場合などに対応するために、テンポラリのテーブルやファイルを必要とするため。もしこのディレクトリからテンポラリ
ファイルが消えた場合は、サーバ再起動時にレプリケーション
エラーが発生する。しかし、MySQL 4.0.0
以降を使用している場合は、slave_load_tmpdir
変数を使用して、スレーブのテンポラリ
ディレクトリを設定できる。その場合、スレーブは通常の
tmpdir
値を使用しないので、tmpdir
を適切な (非永続的) 位置に設置する
(スレーブサーバはこのパスを使用することになる)。
メモリ ブロックの割り当てサイズ (byte)。
このメモリは、コミットするときにバイナリログへ書き込むための
トランザクション内クエリを保存するために使用する。transaction_prealloc_size
の説明を参照のこと。
永続的バッファの (初期)
サイズをtransaction_prealloc_size
と呼ぶ。メモリが不十分が原因で、このプール
(領域)
で割り当てが十分に行えない場合、transaction_alloc_block_size
でプールの値を大きくする。トランザクションが済むと、プールは
transaction_prealloc_size
バイトで切り捨てになる
単一トランザクション内のすべてのクエリをバッファ内に収めるように、transaction_prealloc_size
を大きくすると、malloc()
システム コールを避けることができる。
基準にするトランザクション隔離レベル。
デフォルト値は REPEATABLE-READ
。
この変数は SET TRANSACTION ISOLATION
LEVEL
ステートメントで設定する。項12.4.6. 「SET TRANSACTION
構文」
を参照のこと。tx_isolation
を直接、隔離レベル名に設定する場合に、スペースを含むときには、その名前を引用符で囲み、そのスペースをダッシュと置換する。たとえば、
SET tx_isolation = 'READ-COMMITTED';
更新の許可するかどうかを制御する。ビューに基準テーブルで定義したプライマリ
キーのすべてのカラムが含まれていない場合に、更新ステートメントで
LIMIT
節を含んでいたら、そのビューを更新するかどうか、ということである。このような更新は
GUI
ツールなどから生成される。ここでの更新は
UPDATE
または
DELETE
ステートメントのこと。ここでのプライマリ
キーとは PRIMARY KEY
または
UNIQUE
インデックスのことで、NULL
をカラムに含まない。
この変数の値は 2 種類ある。
1
または
YES
:エラー
メッセージではなく、警告だけを発行。(デフォルト値)
0
または
NO
:更新禁止。
サーバのバージョン番号。
configure スクリプトには、MySQL
を構築するときにコメントを指定できる
--with-comment
オプションがある。そのコメントの値。
マシンのタイプ、または MySQL構築時のアーキテクチャ。
MySQL構築時のオペレーティング システムのタイプ。
対話式ではない接続 (反応の無い接続) を終了する前に、サーバがアクティビティを待機する秒数。このタイムアウトは TCP/IP 接続と Unix のソケット ファイル接続だけに適用。名前付きパイプと共有ファイルの接続には使用できない。
スレッド起動時に、セッション
wait_timeout
値は、wait_timeout
グローバル値、または
interactive_timeout
グローバル値で初期化するが、これはクライアントのタイプによる。(CLIENT_INTERACTIVE
の接続オプションを
mysql_real_connect()
)
に定義する。) interactive_timeout
の説明も参照のこと。