FLUSH [NO_WRITE_TO_BINLOG | LOCAL]flush_option
[,flush_option
] ...
FLUSH
ステートメントは、MySQL
に利用された様々な内部キャッシュをクリアー、または再ロードします。FLUSH
を実行するためには、RELOAD
権限を持つ必要があります。
RESET
ステートメントは
FLUSH
と似ています。項8.5.6.6. 「RESET
構文」
を参照してください。
flush_option
は、次のうちのどれかになり得ます。
DES_KEY_FILE
サーバー起動時に
--des-key-file
オプションを利用して指定されたファイルからの
DES キーを再ロードします。
HOSTS
ホストキャッシュテーブルを空にします。もし、いくつかのホストが
IP 番号を変えたり、エラーメッセージ
Host
'
を受け取ったりしたら、ホストテーブルをフラッシュする必要があります。MySQL
サーバーに接続中に、連続して
host_name
' is
blockedmax_connect_errors
以上のエラーがホストに発生すると、MySQL
は何か異常があると仮定して、それ以上の接続の要求をブロックします。ホストテーブルをフラッシュすると、ホストからのそれ以降の接続試行が有効になります。詳しくはHost '
を参照してください。このエラーメッセージを避けるために、host_name
' is blocked--max_connect_errors=999999999
を利用して mysqld
をスタートすることができます。
LOGS
すべてのログファイルを閉じ、再オープンします。もしバイナリログが有効であれば、バイナリログファイルのシーケンス番号は前のファイルと比較して
1 つ増加されます。これは Unix
では、SIGHUP
シグナルを mysqld
サーバーに送信することと同じです。mysqld
が SIGHUP
と
SIGQUIT
を無視する
Mac OS X 10.3 バージョン以外)
サーバーが指定されたファイルにエラー出力を書き込んでいる場合
(たとえば、サーバーが
--log-error
オプションで起動された場合)
は、FLUSH
LOGS
によって、現在のエラーログファイルの名前が
-old
の接尾辞を使用して変更され、新しい空のログファイルが作成されます。サーバーが指定されたファイルに書き込んでいない場合
(たとえば、エラーをコンソールに書き込んでいる場合)
は、名前の変更は実行されません。
MASTER
(DEPRECATED)すべてのバイナリログを削除し、バイナリログインデックスファイルをリセットし、新しいバイナリログを作成します。FLUSH
MASTER
は、RESET
MASTER
に置き換えられて現在は推奨されておらず、下位互換性のためにのみサポートされています。項8.6.1.2. 「RESET MASTER
構文」
を参照してください。
PRIVILEGES
mysql
データベース内で供与テーブルから権限を再ロードします。Unix
では、これはサーバーが
SIGHUP
シグナルを受信した場合にも発生します。
サーバーは、GRANT
、CREATE
USER
、CREATE
SERVER
、および
INSTALL
PLUGIN
ステートメントの結果としてメモリー内に情報をキャッシュします。このメモリーは、対応する
REVOKE
、DROP
USER
、DROP
SERVER
、および
UNINSTALL
PLUGIN
ステートメントでは解放されないため、キャッシュの原因となるステートメントの多くのインスタンスを実行するサーバーではメモリーの使用が増加します。このキャッシュされたメモリーは、FLUSH
PRIVILEGES
を使用して解放できます。
QUERY CACHE
メモリー使用を向上させるためにクエリキャッシュをデフラグします。FLUSH
QUERY CACHE
は、FLUSH
TABLES
や RESET QUERY
CACHE
とは異なり、キャッシュからクエリーを削除しません。
SLAVE
(DEPRECATED)リレーログファイルやマスタのバイナリログ内のレプリケーション位置を含む、すべてのレプリケーションスレーブパラメータをリセットします。FLUSH
SLAVE
は、RESET
SLAVE
に置き換えられて現在は推奨されておらず、下位互換性のためにのみサポートされています。項8.6.2.5. 「RESET SLAVE
構文」
を参照してください。
STATUS
このオプションは、グローバル値に現在のスレッドのセッションステータス変数値を追加し、セッション値をゼロにリセットします。また、キーキャッシュ
(デフォルトであり、指定されている)
のカウンタを 0
にリセットし、Max_used_connections
を開いている接続の現在の数に設定します。これは、クエリーをデバグしているときのみ利用するべきものです。How to Report Bugs or Problems
を参照してください。
{TABLE | TABLES}
[
tbl_name
[,
tbl_name
] ...]
テーブルが指定されていない場合は、開いているすべてのテーブルを閉じ、使用されているすべてのテーブルを強制的に閉じて、クエリーキャッシュをフラッシュします。複数のテーブル名があると、与えられたテーブルだけをフラッシュします。FLUSH
TABLES
は RESET QUERY
CACHE
のように、クエリキャッシュからすべてのクエリー結果の削除もします。指定されたテーブルが存在しない場合、エラーは発生しません。
TABLES WITH READ LOCK
UNLOCK
TABLES
を実行して明示的にロックを解除するまで、読み取りロックを利用してすべてのデータベースのすべてのオープンテーブルを閉じ、すべてのテーブルをロックします。これは、特定時点のスナップショットを取得できる、Veritas
などのファイルシステムがある場合にバックアップを取得するための非常に便利な方法です。
FLUSH
TABLES WITH READ LOCK
は、グローバル読み取りロックは取得しますがテーブルロックはしないので、テーブルロックと暗黙的なコミットに関しては
LOCK TABLES
と
UNLOCK
TABLES
と同じような動作の制約は受けません。
UNLOCK
TABLES
は、現在
LOCK
TABLES
でロックされているテーブルがある場合にのみ、アクティブなトランザクションをすべて暗黙的にコミットします。FLUSH
TABLES WITH READ LOCK
がテーブルロックを取得しないため、このステートメントに続く
UNLOCK
TABLES
に対してはコミットは実行されません。
トランザクションを開始すると、LOCK
TABLES
を利用して行ったテーブルロックを、まるで
UNLOCK
TABLES
を実行したかのように解除してしまいます。トランザクションを開始しても、FLUSH
TABLES WITH READ LOCK
を利用して行われたグローバル読み取りロックの解除はしません。
FLUSH
TABLES WITH READ LOCK
では、サーバーがログテーブルに行を挿入することは妨げられません
(Selecting General Query and Slow Query Log Output Destinations を参照)。
USER_RESOURCES
すべての時間あたりのユーザーリソースをゼロにリセットします。これは、時間ごとの接続、クエリー、更新制限に達したクライアントがすぐに活動を再開できるようにします。FLUSH
USER_RESOURCES
は最大同時接続の制限に適応しません。項8.5.1.3. 「GRANT
構文」
を参照してください。
デフォルトでは、FLUSH
ステートメントはレプリケーションスレーブに複製されるように、バイナリログに書き込まれます。ロギングは、オプションの
NO_WRITE_TO_BINLOG
キーワードまたはそのエイリアス
LOCAL
を使用して抑制できます。
RESET
ステートメントがレプリケーションの中でどのように利用されるかという情報については
項8.5.6.6. 「RESET
構文」 も参照してください。
FLUSH
LOGS
、FLUSH
MASTER
、FLUSH
SLAVE
、および
FLUSH
TABLES WITH READ LOCK
は、スレーブに複製されると問題が発生するため、いずれの場合もバイナリログには書き込まれません。
mysqladmin
ユーティリティーは、flush-hosts
、flush-logs
、flush-privileges
、flush-status
、および
flush-tables
コマンドを介して、一部のフラッシュ操作へのコマンドラインインタフェースを提供します。
MySQL 5.1
では、ストアドファンクションまたはトリガー内で
FLUSH
ステートメントを発行することはできません。しかし、ストアドプロシージャー内の
FLUSH
がストアドファンクションやトリガーにコールされないかぎり、それらを利用してもよいでしょう。Restrictions on Stored Routines, Triggers, and Events
を参照してください。