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


28

IIS7とMySQLを実行する8GBのRAMを搭載したWindows 2008サーバーがあります。サーバー上のメモリ、CPU、ディスクの使用状況を追跡しましたが、MySQLはたった250 MBのRAMしか使用していないことを発見しました。

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

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

回答:


20

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。この変数を高く設定すると、ディスクへの直接の書き込みと読み取りが少なくなります。これが主な関心事でした。


11
実際にコマンドがあるshow status; 状態変数を参照するなどOpen_tablesしてをOpened_tablestable_cache最近のMySQLバージョンでは削除されたようです。
マットフェンウィック

5

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

あなたはおそらく増加を見たいだろうkey_buffer_sizesort_bufferread_buffertable_cacheスターターのため、おそらくinnodb_buffer_pool_sizeあなたはどんなInnoDBテーブルを持っている場合は、。これらの値の一部は、特にハードウェアがあれば、大幅に(2桁も)増やすことができます。MySQLのデフォルトは非常に保守的であり、約10年前の一般的な混用デスクトップを対象にしているようです。ああ、32ビット版では2GB以上のRAMの使用に問題があることに注意してください。

詳細とガイダンスについては、MySQLマニュアルをご覧ください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.