my.cnfの変数にどのようなメモリを与える必要がありますか?
-
16-10-2019 - |
質問
MySQLサーバーのインストールは非常に簡単です。ただし、インストール後、サーバーの構成はDBAにとって重要なタスクです。
2GBのRAMと250GBのディスクスペースがある場合、MySQLサーバーがうまく機能するように調整するにはどうすればよいですか?
InnoDBエンジンの適切な構成も必要です。
解決
Innodbに関する私の推奨事項のいくつかを次に示します。私の経験では、バッファープールのサイズが最も重要です。なぜなら、キャッシュを保持できるデータが多ければ多いほど、システムがディスクiOSを使用して費やす時間が短いためです。
http://dev.mysql.com/doc/refman/5.5/en/innodb-buffer-pool.htmlこれはバッファープールで、データとインデックスがキャッシュされています
innodb_buffer_pool_size=(In Mb, 80% of available RAM)
, 、2GBの場合、1536を置きます。
システムを慎重に監視し、スワッピングが表示され始めたら、この変数を減らす準備をしてください。
http://dev.mysql.com/doc/refman/5.1/en/innodb-parameters.html#sysvar_innodb_additional_mem_pool_sizeこれは、メタデータが保存される場所です。たくさんのテーブルがあれば、これを増やすと便利です。
innodb_additional_mem_pool_size=16M
http://dev.mysql.com/doc/refman/5.1/en/innodb-parameters.html#sysvar_innodb_data_file_pathここでは、IBDATAファイルの場所を定義できます。 IBDATAファイルを別のコントローラーを使用する別のディスクに配置できる場合、競合を減らします。このオプションには注意してください。使用する前に、この変数を必ず読んでください。 IBDATAファイルに29G以上が必要な場合、MySQLは何でも停止し、スペースを追加するのを待ちます。
innodb_data_file_path = ibdata1:128M:autoextend:max:29G
これにより、IBDATAファイルが増加する段階で管理されます。したがって、10MBのような非常に少ない数字を入れた場合、InnoDBは多くの挿入物がある場合、IBDATAファイルを増やすことに多くの時間を費やすことを意味します。
innodb_autoextend_increment = 128M
トランザクションログをどこに配置しますか。別のコントローラーを使用してトランザクションログを別のディスクに配置できる場合、これも競合を減らします
innodb_log_group_home_dir = /tlog/
ログファイルのサイズは何ですか
innodb_log_file_size = 500M
バッファプールサイズの25%により、ディスクに書き込む必要なく、大規模なトランザクションが実行できます
innodb_log_buffer_size = 384M
また、Tempディレクトリがどこに行くべきかを定義します。 MySQLが一時ファイルを作成する場所を定義します。競合を減らす別の方法。
私は通常、サーバー上の最大のテーブルの再インネキシングを許可するのに十分なスペースを残します。
tmpdir=/opt/tmp/
そして、何かがうまくいかず、撮影に問題がある場合に備えて、エラーログは便利です。
log-error=/var/log/mysql.err
また、4つ以上のCPUがある場合、これらの変数を増やすことができますinnodb_thread_concurrency = 8 innodb_file_io_threads = 4
これはInnodbとは何の関係もありません。 Innodbとは何の関係もない他の変数があります。下部に追加しましたが、テストに使用するサーバーから直接取られました。コピーして貼り付けないでください。使用しているバージョンに基づいてMySQLのドキュメントを読むことは、正しい選択をする最良の方法です。
# Fine Tunning
key_buffer = 512M
max_allowed_packet = 16M
thread_stack = 128K
thread_cache_size = 8
join_buffer_size = 64M
sort_buffer_size = 16M
myisam_max_sort_file_size = 1024M
tmp_table_size = 256M
max_heap_table_size = 257M
myisam_sort_buffer_size=1024M
table_cache = 1000
thread_concurrency = 8
# * Query Cache Configuration
#
query_cache_limit = 16M
query_cache_size = 16M
skip-name-resolve