設定MySQLのパフォーマンスチューニング

目的

さまざまなビジネスシナリオでは、データベース構成のパラメータを調整することにより、効果的にサーバーのパフォーマンスを向上させることができます。

方法

データベースを起動するには、次のプロファイルパラメータを使用して、デフォルトの設定ファイルのパスな/etc/my.cnf、前記データ記憶装置とソフトウェアのインストールMySQLの経路変更実際の状況に応じて。

[mysqld_safeを】
ログエラー= /データ/ MySQLの/ログ/ mariadb.log 
PID = -ファイル/データ/ MySQLの/ RUN / mysqld.pid 

[クライアント] 
ソケット= /データ/ MySQLの/ RUN /にmysql.sock 
デフォルト-character- = UTF8 SET 

[mysqldを] 
BASEDIR =は/ usr / local / MySQLの
TMPDIR = /データ/ MySQLの/ tmpに
DATADIR = /データ/ MySQLの/データ
ソケット= /データ/ MySQLの/ RUN /にmysql.sock 
ポート= 3306 
ユーザー=ルート
default_authentication_plugin = mysql_native_password 
SSL#0 = SSLのオフ
=接続の最大数は#2000セットMAX_CONNECTIONS 
back_log = 2048#はセッション要求キャッシュの数設定
performance_schema = OFF#閉鎖性能モード
max_prepared_stmt_count = 128000 

#FILE 
各テーブルファイル位に設けられinnodb_file_per_tableをを 
innodb_log_file_size = 1500M#セットログファイルのサイズ
innodb_log_files_in_group = 32#組グループ番号のログファイル
innodb_open_files = 4000#は、開いているテーブルの最大数を設定

#buffersは
innodb_buffer_pool_size =セット#230Gは、バッファー・プール・サイズ、典型的には、サーバメモリ60%
innodb_buffer_pool_instances#16セット番号=、プール・インスタンスをバッファ並行性の向上させる
innodb_log_buffer_size = 64M#設定されたログ・バッファ・サイズのサイズを

#tune 
各トランザクションsync_binlog sync_binlog = 1#セットはブラシプレートコミット
MySQLは各ログバッファのデータがログファイルに書き込まれコミットし、フラッシュ(ディスクへのブラシが)行く時= 1#innodb_flush_log_at_trx_commitを
innodb_use_native_aio = 1#オープン非同期IO 
innodb_spin_wait_delay = 180 [#1 spin_wait_delayパラメータセットは、スピンの侵入を防止する
スピンのアクセスを防ぐ、innodb_sync_spin_loops = 25#組spin_loopsサイクル時間を
innodb_flush_method = O_DIRECT#セットのInnoDBとREDOログ・データ・ファイルを開き、ブラシライトモード 
ダーティページの各ブラシの数のスレッド= 9000#設定ページ・クリーナーinnodb_lru_scan_depth 
IOPSあたりのセットの最大限界にバックグラウンドスレッドのInnoDB innodb_io_capacity = 20000#
innodb_io_capacity_max = 40000#InnoDBのIOPSあたりの圧力の最大限界下バックグラウンドスレッド
innodb_page_cleaners = 16#は、ディスクスレッドにダーティデータを書き込むために提供される

特別#perf 
場合、すべてのページのinnodb_flush_neighbors#0 =ページここで、検出ゾーン(範囲)ダーティページは、リフレッシュして、SSDは、機能オフに
スレッドの数の書き込みに= 16#セットinnodb_write_io_threadsを
= 16#は、読み取りスレッド数を設定innodb_read_io_threads 
= 32#innodb_purge_threadsは回復がアンドゥページスレッドカウントの使用および割り当てられた設定

、sql_modeの= STRICT_TRANS_TABLES、NO_ENGINE_SUBSTITUTIONをNO_AUTO_VALUE_ON_ZERO、STRICT_ALL_TABLES
 

パラメータ名

パラメータ意味

最適化のヒント

innodb_thread_concurrency

InnoDBは、ユーザからのトランザクション要求を処理するために、オペレーティング・システムのスレッドを使用しています。

デフォルトでは、同時に実行するスレッドの数を制限しない示し0のデフォルト値からの推薦。

innodb_read_io_threads

スレッド数の読み出し動作要求の実行要求キュー。

CPUコア数と、読み取りと書き込みのパフォーマンスを改善するために更なる変化の割合に応じました。

innodb_write_io_threads

書き込みキューは、スレッド要求された操作要求を実行します。

CPUコア数と、読み取りと書き込みのパフォーマンスを改善するために更なる変化の割合に応じました。

query_cache_size

セットquery_cache_sizeサイズ。

クエリキャッシュ(クエリキャッシュ)は、よく知られたボトルネックの位置である、並行処理の量が高くない場合でも表示されます。最良のオプションは、最初からそれを無効にすることです。query_cache_size = 0を設定することで、クエリキャッシュを無効にすることを推奨しています。

innodb_buffer_pool_instances

メモリプールのオープン複数、並列にメモリを読み書きすることができ、異なるハッシュ・バッファ・プールにデータをバッファリングする必要があります。

16から8に設定することを推奨します。

innodb_open_files

もしinnodb_file_per_tableモードでは、InnoDBのを開くことができるファイルの数を制限します。

この値は、多数の、特にマルチテーブル特別な状況を転送することが推奨されます。

innodb_buffer_pool_size

ローカルキャッシュのデータとインデックス。

メモリは通常70%程度を推​​奨します。

innodb_log_buffer_size

キャッシュREDOログ。

デフォルト値は64Mで、innodb_log_waitを見ることで、推奨、innodb_log_buffer_sizeサイズを調整します。

innodb_io_capacity

InnoDBのバックグラウンドスレッドは、第2の最大限界あたりのIOPS。

75%IO QPSの総容量に対する提言。

innodb_log_files_in_group

REDOログ・グループの数。

-

innodb_log_file_size

ログファイルのサイズをやり直し。

書き込み操作の数が多い場合は、ログ・ファイルのサイズを大きくすることが推奨されますが、ログファイルが大きすぎる、それはデータの復旧時間に影響を与えます。

非本番環境ならば、限界性能をテストし、大きなログファイルを転送してみてください。

商用シーン場合は、データ復旧時間を考慮し、総合的な妥協した後、ログファイルのサイズを設定します。

innodb_flush_method

ログデータは、メソッドのディスクを更新します。

  1. datasyncモード:データを書き込む場合、このステップは、実際にディスクに書き込まれている必要はありません書き込みが完了していない(おそらく、オペレーティング・システム内のバッファに書き込まれたが、完全に戻ります)、真に完全なフラッシュ操作で、フラッシュへのオペレーティングシステムにバッファリングし、メタデータ情報ファイルは、ディスクに更新する必要があります。
  2. O_DSYNCモード:ログ操作書かれた書き込みで、このステップを完了すると、書き込みデータファイルは、フラッシュではfsyncこのステップによって達成されます。
  3. O_DIRECTモード:MySQLからの書き込みデータファイルをディスクに直接バッファInnoDBは、オペレーティングシステムがバッファを使用しませんが、またフラッシュで本当にこの手順を完了、またはOSのログバッファを通過します。

私たちは、O_DIRECTモードをお勧めします。

innodb_spin_wait_delay

ポーリング制御間隔。

無splin_lockホットスポット機能などまで、実際のシーンをデバッグするためによります。

innodb_sync_spin_loops

ポーリング制御幻想の数。

無splin_lockホットスポット機能などまで、実際のシーンをデバッグするためによります。

innodb_lru_scan_depth

使用可能なページLRUリストの数。

默认值是1024,非生产环境,测试极限性能可以适当调大,减少checkpoint次数。

innodb_page_cleaners

刷新脏数据的线程数。

建议与innodb_buffer_pool_instances相等。

innodb_purge_threads

回收undo的线程数。

-

innodb_flush_log_at_trx_commit

  • 0:不管有没有提交,每秒钟都写到binlog日志里.
  • 1:每次提交事务,都会把log buffer的内容写到磁盘里去,对日志文件做到磁盘刷新,安全性最好。
  • 2:每次提交事务,都写到操作系统缓存,由OS刷新到磁盘,性能最好。

非生产环境,测试极限性能,可以设置为0。

innodb_doublewrite

是否开启二次写。

非生产环境,测试极限性能,可以设置为0,关闭二次写。

ssl

是否开启安全连接。

安全连接对性能影响较大,非生产环境,测试极限性能,可以设置为0;商用场景,根据客户需求调整。

skip_log_bin

是否开启binlog。

非生产环境,测试极限性能在参数文件中增加此参数,关闭binlog选项。

innodb_checksum_algorithm

数据完整性校验。

非生产环境,测试极限性能设置成none,不启用算法校验。

binlog_checksum

Binlog完整性校验。

非生产环境,测试极限性能设置成none,不启用算法校验。

innodb_log_checksums

Log完整性校验。

非生产环境,测试极限性能设置成0,关闭log checksum。

foreign_key_checks

外键校验。

非生产环境,测试极限性能设置成0,关闭外键校验。

performance_schema

是否开启性能模式。

非生产环境,测试极限性能设置为OFF,关闭性能模式。

おすすめ

転載: www.cnblogs.com/myzan/p/12659461.html