MySQL
は、テンポラリファイルを格納するディレクトリのパス名として、TMPDIR
環境変数の値を使用します。TMPDIR
を設定していない場合、MySQL
はシステムのデフォルトを使用します。システムのデフォルトは、通常
/tmp
または
/usr/tmp
です。テンポラリファイルディレクトリを含むファイルシステムが非常に小さい場合、mysqld_safe
を編集して、領域が十分あるファイルシステムのディレクトリを指すように
TMPDIR
を設定する必要があります。mysqld
に対して --tmpdir
オプションを使用しても、テンポラリディレクトリを設定できます。
MySQL
はすべてのテンポラリファイルを隠しファイルとして作成します。これによって、mysqld
が強制終了されるとテンポラリファイルは確実に削除されます。隠しファイル使用の不利な点は、テンポラリファイルディレクトリのあるファイルシステムをいっぱいにするような大きなテンポラリファイルが見えないことです。
ソート時(ORDER BY
または
GROUP BY
により)、MySQL
は通常、1つまたは2つのテンポラリファイルを使用します。必要な最大ディスク領域は、以下のとおりです。
(ソートされたものの長さ + sizeof(データベースポインタ)) * マッチするレコードの数 * 2
sizeof(データベースポインタ)
は、通常 4
ですが、大きいテーブルに対応するため、将来的に増える可能性があります。
SELECT
クエリの中には、MySQL が
テンポラリ SQL
テーブルを作成するものがあります。これらは隠しファイルではなく、SQL_*
という名前になります。
ALTER TABLE
では、元のテーブルと同じディレクトリにテンポラリテーブルが作成されます。
MySQL 4.1 以降を使用している場合、コロン
:
(Windows の場合はセミコロン
;
)で区切られたパスのリストを
--tmpdir
に設定することにより、複数の物理ディスク間で負荷を分散させることができます。この物理ディスクは、ラウンドロビン方式で使用されます。
注意:
これらのパスは、同一ディスクの複数のパーティションではなく、異なる物理ディスクである必要があります。
tmpdir
を設定してメモリベースのファイルシステムを指定することは可能ですが、MySQL
サーバがスレーブの場合はできません。スレーブの場合、コンピュータの再起動用に、いくつかのテンポラリファイルが必要(テンポラリテーブルまたは
LOAD DATA INFILE
のレプリケーションため)です。そのため、コンピュータの再起動で消去されるメモリベースの
tmpdir
は適しません。ディスクベースの
tmpdir
が必要です。
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.