MySQL5.7.31性能最適化記録
2009 ワード
一、構成の最適化
1、innodb_buffer_pool_instances
範囲は1(the default)up to 64(the maximum)である.
innodb_buffer_pool_instancesの個数はbuffer pool sizeの10分の1に設定されています.例えばinnodb_buffer_pool_sizeは30 gでinnodb_buffer_pool_instancesは3に設定されています.
2、innodb_buffer_pool_size
追加メモリの使用があるためinnodb_を指定するとbuffer_pool_sizeが12 gの実際の消費メモリは14 g+である可能性があります
二、事務ログの構成
innodb_log_file_size
デフォルト値48 MBの設定が小さすぎます.たとえば、デフォルト値48 MBでは、1つのログ・ファイルがいっぱいになると、innodbが自動的に別のログ・ファイルに切り替わり、データベースのチェックポイントがトリガーされます.これにより、innodbキャッシュの汚れたページの小ロット・リフレッシュが発生し、innodbのパフォーマンスが著しく低下します.
設定が大きすぎる:設定が大きくなるとcheckpointが減少し、redo logが順次I/Oであるため、I/O性能が大幅に向上する.しかし、データベースに予期せぬダウンタイムなどの問題が発生した場合、ログを再生し、コミットされたトランザクションをリカバリする必要があります.ログが大きい場合、リカバリ時間が長くなります.私たちが受け入れられないほどだ.
まとめ:innodb_log_file_sizeの設定が小さすぎてデータベースのパフォーマンスを解放できず、設定が大きすぎると、ダウンタイム後のログ再生のリカバリ時間が増加します.
innodb_log_files_in_group
REDOログ・グループのログ数、デフォルトは2です.一般的にはデフォルトでもかまいません.
innodb_log_buffer_size
ディスク・ログ・ファイルにログを書き込む前のバッファ・サイズは、デフォルト値8 MBで、一般的にはデフォルト値でもかまいません.
三、読み書きスレッドの増加
innodb_write_io_threads innodb_read_io_threads innodb_thread_concurrency
四、例
注:mysqlを再起動しても遅いsqlが有効にならない場合は、一時的に次のコマンドを有効にすることもできます.
1、innodb_buffer_pool_instances
範囲は1(the default)up to 64(the maximum)である.
innodb_buffer_pool_instancesの個数はbuffer pool sizeの10分の1に設定されています.例えばinnodb_buffer_pool_sizeは30 gでinnodb_buffer_pool_instancesは3に設定されています.
2、innodb_buffer_pool_size
追加メモリの使用があるためinnodb_を指定するとbuffer_pool_sizeが12 gの実際の消費メモリは14 g+である可能性があります
二、事務ログの構成
innodb_log_file_size
デフォルト値48 MBの設定が小さすぎます.たとえば、デフォルト値48 MBでは、1つのログ・ファイルがいっぱいになると、innodbが自動的に別のログ・ファイルに切り替わり、データベースのチェックポイントがトリガーされます.これにより、innodbキャッシュの汚れたページの小ロット・リフレッシュが発生し、innodbのパフォーマンスが著しく低下します.
設定が大きすぎる:設定が大きくなるとcheckpointが減少し、redo logが順次I/Oであるため、I/O性能が大幅に向上する.しかし、データベースに予期せぬダウンタイムなどの問題が発生した場合、ログを再生し、コミットされたトランザクションをリカバリする必要があります.ログが大きい場合、リカバリ時間が長くなります.私たちが受け入れられないほどだ.
まとめ:innodb_log_file_sizeの設定が小さすぎてデータベースのパフォーマンスを解放できず、設定が大きすぎると、ダウンタイム後のログ再生のリカバリ時間が増加します.
innodb_log_files_in_group
REDOログ・グループのログ数、デフォルトは2です.一般的にはデフォルトでもかまいません.
innodb_log_buffer_size
ディスク・ログ・ファイルにログを書き込む前のバッファ・サイズは、デフォルト値8 MBで、一般的にはデフォルト値でもかまいません.
三、読み書きスレッドの増加
innodb_write_io_threads innodb_read_io_threads innodb_thread_concurrency
四、例
[mysql]
# mysql
default-character-set=utf8
[mysqld]
bind-address = 193.193.193.41
skip-name-resolve
# 3306
port = 3306
# mysql
basedir=/opt/soft/mysql57
# mysql
datadir=/opt/soft/mysql57/data
#
max_connections=1000
# 8 latin1
character-set-server=utf8
#
default-storage-engine=INNODB
lower_case_table_names=1
max_allowed_packet=16M
# , :8G
innodb_buffer_pool_size=4096M
innodb_log_file_size = 512M
innodb_flush_log_at_trx_commit = 2
# ssl
skip-ssl
#
slow_query_log=ON
slow_query_log_file=/var/log/mysql/slow_query2.log
long_query_time=0.2 #
注:mysqlを再起動しても遅いsqlが有効にならない場合は、一時的に次のコマンドを有効にすることもできます.
mysql> set global slow_query_log=1;
#
mysql> show variables like '%query%';