2011-11-04 15 views
5

私はかなりバニラのmysql 5.1セットアップを持っています。私はそれをチューニングしようとしています。私が見つかりました。このhandy scriptmysqlチューニング変数 - 現在値とデフォルト値

それは、次の提案作ら:これらは何を意味するか上に読んで

query_cache_limit (> 1M, or use smaller result sets) 
query_cache_size (> 16M) 
join_buffer_size (> 128.0K, or always use indexes with joins) 
table_cache (> 64) 
innodb_buffer_pool_size (>= 14G) 

をし、彼らが現在設定されているものを、私は「mysqladminは変数」

を実行できることがわかりました私の現在の値は:

query_cache_limit      | 1048576 
query_cache_size      | 16777216 
join_buffer_size      | 131072  
innodb_buffer_pool_size     | 8388608 

どのようにこれらを読むのですか?それらはKバイトですか? 1M、16M、13M、8Mもそうですか?

私の箱はわずか4GのRAMで、通常の日には数百メガバイトのメモリがあります。私はこれらの提案に従って行う必要があります。

#innodb_buffer_pool_size = 15G 
#table_cache = 128 
#join_buffer_size = 32M 
#query_cache_size = 64M 
#query_cache_limit = 2M 

Imは15Gで混乱、これはディスク容量のものではなく、メモリの事でしょうか?もしそうなら、推奨事項はあまり良くありませんか?

私のボックスのメモリを増やすべきでしょうか?

詳細: - 私のDBサイズは34Gigsですが、私はすべてのInnoDBを使用して、私はそれらの4が巨大で、残りは小さくて、71個のテーブルを持っています。私は大きなものをSOLRに移してそこからすべての質問をすることを考えていましたが、基本的なチューニングで何ができるのかを見たいと思っていました。

おかげ ジョエル

+0

私はこの便利な読者を見つけましたhttp://www.mysqlperformanceblog.com/2007/11/03/choosing-innodb_buffer_pool_size/ –

+0

これはserverfault.comでよく聞かれるかもしれません –

+0

私はperfblogを読んでいますが、私はあなたがすでにその変数が何であるかを知っていると仮定していると思います。 – Joelio

答えて

0

あなたが使用可能なメモリよりもあなたのInnoDBバッファプールを設定すべきではありません。スクリプトはおそらく、テーブル内のレコード数と物理サイズに基づいて推奨しています。 Innodbのパフォーマンスは非常にメモリに基づいているため、メモリにインデックスを合わせることができれば、パフォーマンスはすばやくかつ顕著に低下します。したがって、innodb_buffer_pool_sizeを高く設定することは、ほとんど常に良いアドバイスです。

Innodbは、mysqlに関しては、すべてにとって最良のテーブルタイプではありません。一般的には挿入が多い非常に大きなテーブルですが、読込みや更新(ログ)はほとんどありません。あなたの非常にアクティブなテーブル(挿入、更新、削除、選択)はInnodbより優れています。このアドバイスには戦争があり、それは一般的なアドバイスです。

しかし、それはあなたの設定がどのようなものであるべきかを教えてくれるスクリプトはありません。それは最高のゲストしか作ることができません。最適な設定は、データアクセスパターンに基づいています。あなたは本当にすべての変数が何であるかを読まなければなりません。 mysqlperformanceblog.comは、マニュアルに加えて、mysqlについて学ぶのに最適な場所です。

mysqlの場合、 "show variables"と "show status"を使って何が起こっているのかを確認してください。 "show innodb status"を実行することもできますが、変数が何であるかわからない場合は、その出力を理解できないことがあります。

+0

これはいくつかの良いアドバイスのようです。私はVMをアップグレードしてメモリを追加しました。私がmysqlを起動したとき、私はこの4Gメモリを使い切ることを期待していましたが、私はそれを見ません。今夜は大規模なバッチジョブを実行した後、68mの居住者と331mのスワップを使用しています。私は間違ったことをしましたか? – Joelio

+0

私は "show variables"を読み、それを試してみました。mysqlはまだinnodb_buffer_pool_sizeの古い番号を表示しています...どうしたのか分からず、my.cnfにvarsを追加してmysqlを再起動しました。 – Joelio

+0

私はmy.cnfの間違ったセクションに変数を入れて、ショー変​​数をチェックするアイデアに感謝します。 – Joelio

関連する問題