MySQL の隠しスペースは、環境変数 TMPDIR の設定によって実装されます。 TMPDIR が設定されていない場合、MySQL はシステムのデフォルト値 (通常は /tmp、/var/tmp、または /usr/tmp) を使用します。 MySQL は、環境変数 TMPDIR の値を一時ファイルが保存されるディレクトリのパス名として使用します。 TMPDIR が設定されていない場合、MySQL はシステムのデフォルト値 (通常は /tmp、/var/tmp、または /usr/tmp) を使用します。一時ファイル ディレクトリを含むファイル システムが小さすぎる場合は、mysqld の「-tmpdir」オプションを使用して、ファイル システム内に十分なスペースのあるディレクトリを指定できます。
MySQL 5.1 では、「-tmpdir」オプションを、ラウンドロビン方式で使用される複数のパスのリストに設定できます。 Unix プラットフォームではパスはコロン文字「:」で区切られ、Windows、NetWare、および OS/2 プラットフォームではパスはセミコロン文字「;」で区切られます。負荷を効果的に分散するには、これらのパスは同じディスクの異なるパーティションではなく、異なる物理ディスク上にある必要があることに注意してください。
MySQL サーバーがレプリケーション スレーブとして使用されている場合、メモリベースのファイル システム上のディレクトリ、またはサーバー ホストの再起動時にクリアされるディレクトリを指すように「--tmpdir」を設定しないでください。レプリケーション スレーブ サーバーの場合、マシンの再起動時に一時テーブルをコピーしたり、LOAD DATA INFILE 操作を実行したりできるように、一部の一時ファイルを保持する必要があります。サーバーの再起動時に一時ファイル ディレクトリ内のファイルが失われると、レプリケーションは失敗します。
MySQL はすべての一時ファイルを暗黙的に作成します。このようにして、mysqld の終了時にすべての一時ファイルが確実に削除されるようにすることができます。隠しファイルを使用する場合の欠点は、ファイル システムを占有する大きな一時ファイルが一時ファイル ディレクトリと同じ場所に表示されないことです。
ソート (ORDER BY または GROUP BY) を行う場合、MySQL は通常 1 つ以上の一時ファイルを使用します。必要な最大ディスク容量は、次の式で決定されます。
(ソート対象の長さ + (行ポインタ) のサイズ)
* 一致した行の数
※2
「行ポインター」(行ポインター) のサイズは通常 4 バイトですが、将来、大きなテーブルの場合はこの値が増加する可能性があります。
一部の SELECT クエリでは、MySQL は一時 SQL テーブルも作成します。これらは隠しテーブルではなく、SQL_* 形式の名前を持ちます。
ALTER TABLE は、元のテーブル ディレクトリと同じディレクトリに一時テーブルを作成します。