web-dev-qa-db-ja.com

MySQLサーバーのメモリ使用量を増やして速度を向上させる方法は?

RAM IIS7とMySQLを実行しているWindows 2008サーバーを使用しています。サーバーのメモリ、CPU、ディスクの使用状況を追跡しており、MySQLは250MBしか使用していないことがわかりましたRAM、ディスクをビジー状態に保ちますが、私はたくさんの空きRAMを置いています。

SQL Serverでは、使用するメモリの量を簡単に設定できます。MySQLで同じ設定を探しています。

より多くのメモリを使用し、CPUとディスクの使用量を減らすようにMySQLを構成するにはどうすればよいですか?

30
holiveira

table_cacheは、変更するのに最も役立つ構成ディレクティブです。 MySQLがテーブルにアクセスするたびに、テーブルをキャッシュにロードします。テーブルの数が多い場合は、テーブルをキャッシュする方が高速です。

次のコマンドを実行して、サーバー変数を確認します。

show status;

変数open_tablesを調べます。これがtable_cacheの値と同じであり、opened_tablesが上昇し続ける場合は、構成ファイルのtable_cacheの値を増やす必要があります。ピーク時にこれらの変数を試してみると、バランスがわかります。ピーク時にサーバーが長時間稼働した後でもopened_tablesが少なくなるように構成する必要があります。

key_buffer_sizeも実験に適した変数です。この変数はインデックスバッファーサイズに影響し、この変数を大きくすると、MySQLのインデックス処理速度が向上します。 show variables;コマンドを使用して変数を再度確認し、key_read_requestskey_readsを比較できます。理想的には、これら2つの変数の比率をできるだけ低くしたい場合、key_buffer_sizeのサイズを大きくすることでこれを実現できます。この変数を高く設定すると、ディスクへの直接の書き込みと読み取りが少なくなり、これが主な関心事でした。

20
James

my.cnfファイルの値を変更してMySQLを再起動する必要がありますが、MySQLの実行中にも多くの値を変更できます( 'SET GLOBAL VARIABLE =value ')。

初心者にはkey_buffer_sizesort_bufferread_buffertable_cacheを増やし、InnoDBテーブルがある場合はinnodb_buffer_pool_sizeを増やしたいと思うでしょう。これらの値のいくつかは、特にハードウェアが与えられている場合、大幅に(2桁でも)増加する可能性があります。 MySQLのデフォルトは非常に保守的で、約10年前の一般的な混合使用デスクトップを対象にしているようです。おっと、32ビットバージョンでは2 GBを超えるRAMを使用すると問題が発生することに注意してください。

詳細およびガイダンスについては、 MySQLマニュアル を参照してください。

6
staticsan