システムレベルの要素は、その一部を初期段階に決定する必要があるため、この話から始めます。これに該当しない場合は、システムを大きく変えることが重要でないのであれば、このセクションは簡単に目を通せば十分です。ただし、このレベルで変更を行うことでどの程度改善できるのかを自覚しておくことは必ず役に立ちます。
使用するオペレーティングシステムは非常に重要です。複数 CPU のコンピュータを使用するなら、Solaris(スレッド実装機能が優れている)または Linux(2.2 カーネルの SMP サポートが優れている)が良いでしょう。 また、旧バージョンの Linux カーネルのデフォルトには 2G ファイルサイズの制限があります。このカーネルで 2G より大きいファイルがどうしても必要な場合は、ext2 ファイルシステムの LFS (Large File System)パッチを入手する必要があります。 これ以外の ReiserFS や XFS などには 2G の制限がありません。
多くのプラットフォーム上で、MySQL を本番稼働させていないため、可能であれば選択前に候補のプラットフォームのテストを実行することを推奨します。
その他のヒント:
RAM が十分にある場合は、スワップデバイスすべてを削除できる。オペレーティングシステムによっては、空きメモリがある場合でもスワップデバイスが使用されることがある。
--skip-external-locking
MySQL
オプションを使用して、外部ロックを回避する。実行しているのが
1 サーバだけである限り、これによる MySQL
の機能に対する影響はない。myisamchk
を実行する前にサーバの記録を取る(または対応するテーブルをロックし、フラッシュする)ことを忘れないようにする。一部のシステムは、外部ロックがまったく機能しないため、このオプションが必須になる。
MySQL 4.0 以降、--skip-external-locking
オプションはデフォルトでオンになっている。
それ以前は、MIT-pthread
によるコンパイル時にデフォルトでオンになっている。これは
flock()
がすべてのプラットフォームで MIT-pthread
により完全にサポートされているわけではないことによる。Linux
ファイルロックは安全ではないため、Linux
でもデフォルトでオンになっている。
--skip-external-locking
を使用できない状況は、同一データに対して複数の
MySQL
サーバ(クライアントではない)を実行している場合と、サーバに対して初めにテーブルのフラッシュとロックを行う指示を出さずに、テーブルに対して
myisamchk
を実行する場合に限られる。
--skip-external-locking
を使用している場合でもLOCK
TABLES
/UNLOCK TABLES
は使用できる。
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.