5

私はかなりバニラのmysql5.1セットアップを持っており、それを調整しようとしています。この便利なスクリプトを見つけました

それは次の提案をしました:

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  

これらをどのように読むのですか、キロバイトですか?それで、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

15Gに混乱していますが、これはメモリの問題ではなく、ディスクスペースの問題ですか?もしそうなら、推奨事項はあまり良くありませんよね?

ボックスのメモリを増やす必要がありますか?

詳細:-私のデータベースサイズは34Gigで、すべてのinnodbを使用しています。71個のテーブルがあり、そのうち4つは巨大で、残りは小さいです。大きなものをSOLRに移動し、そこからすべてのクエリを実行することを考えていましたが、基本的なチューニングで何ができるかを確認したいと思いました。

ありがとうジョエル

4

1 に答える 1

0

innodb バッファ プールを使用可能なメモリより高く設定しないでください。スクリプトは、テーブル内のレコード数とその物理サイズに基づいて、おそらくそれを推奨しました。Innodb のパフォーマンスはメモリに大きく依存しており、インデックスをメモリに収めることができる場合、パフォーマンスは急速かつ著しく低下します。そのため、ほとんどの場合、innodb_buffer_pool_size を高く設定することをお勧めします。

Innodb は、mysql に関して言えば、すべてに最適なテーブル タイプではありません。通常は挿入が多いが、読み取りと更新 (ログ記録) がほとんどない非常に大きなテーブルは、MyISAM テーブルとして適しています。非常にアクティブなテーブル (挿入、更新、削除、選択) には、Innodb の方が適しています。このアドバイスには賛否両論があるかもしれませんが、これは一般的なアドバイスです。

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

mysql では、「変数の表示」と「ステータスの表示」を使用して、何が起こっているかを確認します。「show innodb status」を実行することもできますが、変数が何であるかがわからない場合、その出力を理解できない場合があります。

于 2011-11-04T22:49:06.080 に答える