RAM IIS7とMySQLを実行しているWindows 2008サーバーを使用しています。サーバーのメモリ、CPU、ディスクの使用状況を追跡しており、MySQLは250MBしか使用していないことがわかりましたRAM、ディスクをビジー状態に保ちますが、私はたくさんの空きRAMを置いています。
SQL Serverでは、使用するメモリの量を簡単に設定できます。MySQLで同じ設定を探しています。
より多くのメモリを使用し、CPUとディスクの使用量を減らすようにMySQLを構成するにはどうすればよいですか?
table_cache
は、変更するのに最も役立つ構成ディレクティブです。 MySQLがテーブルにアクセスするたびに、テーブルをキャッシュにロードします。テーブルの数が多い場合は、テーブルをキャッシュする方が高速です。
次のコマンドを実行して、サーバー変数を確認します。
show status;
変数open_tables
を調べます。これがtable_cache
の値と同じであり、opened_tables
が上昇し続ける場合は、構成ファイルのtable_cache
の値を増やす必要があります。ピーク時にこれらの変数を試してみると、バランスがわかります。ピーク時にサーバーが長時間稼働した後でもopened_tables
が少なくなるように構成する必要があります。
key_buffer_size
も実験に適した変数です。この変数はインデックスバッファーサイズに影響し、この変数を大きくすると、MySQLのインデックス処理速度が向上します。 show variables;
コマンドを使用して変数を再度確認し、key_read_requests
とkey_reads
を比較できます。理想的には、これら2つの変数の比率をできるだけ低くしたい場合、key_buffer_size
のサイズを大きくすることでこれを実現できます。この変数を高く設定すると、ディスクへの直接の書き込みと読み取りが少なくなり、これが主な関心事でした。
my.cnf
ファイルの値を変更してMySQLを再起動する必要がありますが、MySQLの実行中にも多くの値を変更できます( 'SET GLOBAL VARIABLE =value ')。
初心者にはkey_buffer_size
、sort_buffer
、read_buffer
とtable_cache
を増やし、InnoDBテーブルがある場合はinnodb_buffer_pool_size
を増やしたいと思うでしょう。これらの値のいくつかは、特にハードウェアが与えられている場合、大幅に(2桁でも)増加する可能性があります。 MySQLのデフォルトは非常に保守的で、約10年前の一般的な混合使用デスクトップを対象にしているようです。おっと、32ビットバージョンでは2 GBを超えるRAMを使用すると問題が発生することに注意してください。
詳細およびガイダンスについては、 MySQLマニュアル を参照してください。