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
