MySQLのInnoDBエンジンのチューニング

説明:
  INNODB MYSQLを提供するためには、ロールバックをコミットしており、トランザクションセーフ(ACID準拠)のストレージエンジンのクラッシュ回復機能を提供します。また、InnoDBの行レベルロックのSELECT文とOracleスタイル一貫非ロック読み取りを提供します。これらの機能は、マルチユーザ展開とパフォーマンスを向上させます。非常に小さなスペースのためのInnoDBレベルロックで中国の銀行として、InnoDB内でロックされて拡大する必要はありません。InnoDBはまた、必須FOREIGN KEYをサポートしています。SQLクエリでは、あなたは自由にしても、同じクエリでも混合することができる、混同テーブルと他のテーブルのMYSQLのはInnoDBの種類を入力することができます。
 InnoDBの創設者:ヘイッキTuuri
 あなたは著者が答えを得る、バグも直接コミュニティに呼ばれることが発生した場合、バグコミュニティのヘイッキTuuri InnoDBは、非常に活発です。

なぜチューンのInnoDBを学ぶ:
  現在:InnoDBのMYSQLは、データの膨大な量の最大のパフォーマンスを処理するように設計されています。そのCPU効率は、おそらく他のディスクベースのリレーショナルデータベースエンジンは一致しないことができています。データやアプリケーションのInnoDBウェブサイトの大規模な量で高い評価を得ています。
  一方、コピー操作が首尾一貫したマスタとスレーブのデータは特定の役割を持っていることを確認するためにInnoDBデータベースです。

概要チューニングパラメーター:
  1.メモリの使用率
  2.日数を制御
  3.ファイルIOの割り当て、およびスペース
  4つの他の関連するパラメータを

1.メモリ使用率:
紹介InnoDBの最も重要なパラメータ:
innodb_buffer_pool_size
  このパラメータと似ていますkey_buffer_sizeはMyISAMテーブルが、違いがあります。INNODBメインテーブルパラメータこのキャッシュインデックス、バッファデータが挿入されているデータを、。主要パラメータの最適化を加速するためにはInnoDB。
  原則として、パラメータの割り当てメモリ:このパラメータは、デフォルトのみ8Mで割り当てられている、非常に小さな値であると言うことができます。あなたは、専用のDBサーバであれば、彼はメモリの70%-80%を占めることができます。必要性がより多くの対価を配分するように、このパラメータは、動的に変更することはできません。配布はMYSQL特に低速照会し、その結果、大きすぎる、あまりにも多くの占有スワップです。あなたのデータは、パラメータの値としてデータサイズ+約10%を割り当てることができますので、比較的小さい場合。たとえば、次のデータサイズは、次いで50M、64M Innodb_buffer_pool_size =に割り当てられた値である
設定:

Innodb_buffer_pool_size = 4G
この使用パラメータ値が割り当てられている係るINNODBステータス\ Gを示し、
----------------------
バッファメモリプールと
---- ------------------
総メモリは4668764894が割り当てられ、

確認の使用状況に。


第二:
Innodb_additional_mem_pool:
アクション:格納するために使用されるのInnoDB内部ディレクトリ
この値が割り当てられていない大きすぎると、システムが自動的に調整することができます。高すぎる設定しないでください。データの16Mセットは、テーブルを適切に増加させることができるより多くの場合、通常は十分な大きさです。この値が自動的に増加されている場合は、エラー・ログにが表示されます。
分布原理:
表示INNODB状態\ G、 DBの動作を表示するためには、どのような状態(段落BUFFER POOL AND MEMORYを参照)であり、次いで、適切な値に調整することができます。
----------------------
BUFFER POOL AND MEMORY
----------------------
合計メモリ4668764894割り当てられ、追加のプールに割り当てられ16777216
参照:割り当てられた追加のプール16777216に
状況のパラメータに応じて、適宜調整することができます。
設定方法:
Innodb_additional_mem_pool = 16M

 

Innodb_additional_pool_size

オペレーティングシステムは合理的にメモリを割り当てることができたときにこの効果は、少なくとも、明らかにされていません。しかし、あなたはまだInnoDBの他の目的が割り当てられますどのくらいのメモリを参照するためにもう少し20Mに設定する必要がありか。
 


:日数の側面について2.
innodb_log_file_sizeの
役割:指定した日付値のサイズ
配分の原則:数日はあなたのInnodb_buffer_pool_size同等のメンバーのほとんどのサイズと値まで追加。一般2G内、好ましくはいくつかのサイズを追加することによって制御さ毎日4G。ログファイルの最大サイズの上限値。あなたは、データサイズに基づいて、トランザクションサイズの特定の状況を見てする必要があります。
説明:この値が割り当てられている書き込み速度およびデータベースのサイズ、トランザクションサイズ、リブートした後の回復は素晴らしい関係を持っています。
設定方法:
innodb_log_file_size = 256M


Innodb_log_files_in_group
役割:あなたは、グループの値を指定するには数日を持っています。
配分の原則は:一般的に、我々は2〜3日に設定された値を使用することができます。デフォルトは2です。
設定方法:
。innodb_log_files_in_group 3 =


Innodb_log_buffer_size:
役割:メモリ内のトランザクションバッファ。
配分の原則:制御2-8M値ではありませんあまりにも。彼の記憶は、一般的に1秒に1回のディスクの内側に書かれています。具体的な方法や取引に関連したあなたの提出を書きます。Oracleとこのことについて、他のデータベースでは、一般的に、より適切な最大3Mに指定。
参考:Innodb_os_log_written(グローバルステータスが取得できることを示す)
、この値があまりにも急速に成長している場合は、Innodb_log_buffer_sizeを高めるために適切なことができ
ますが、ダリのTEXT、またはBLOBフィールドに対処する必要がある場合は、このパラメータの値を増やすことを検討することができ、また。
設定方法:
innodb_log_buffer_size = 3M

Innodb_flush_logs_at_trx_commit
役割:制御トランザクション提出
配分の原則:このパラメータは、3つの値のみ0,1,2、自分の許容レベルを確認してください。デフォルトでは、メインのライブラリを変更しない、1です。
高いパフォーマンスが0または2に設定しますが、2番目のトランザクションを失ったことができます。
説明:
この設定パラメータはので、ここで説明するのはより、InnoDBのパフォーマンスに大きな影響を与えます。
この値が1の場合:のInnoDBトランザクション値は、各提出後にログファイルに書き込まれ、日付値をディスクにフラッシュします。これは、任意のトランザクションを失うことなく行うことができます。
2の値は時:各ログバッファに提出がなく、ディスクへのログファイルのフラッシュに、ファイルに書き込まれ、リフレッシュログファイルも一度に毎秒2の値の場合に起こります。しかし、注目すべきプロセスにおける問題の通話のために、その、とあたりの発生を100%保証することはできません。だから、パフォーマンスは最速です。しかし、オペレーティングシステムのクラッシュや電源障害は、トランザクションの最後の秒を削除します。
この値が0の場合:1秒に1回のログバッファがログファイルに書き込まれ、ログファイルのディスク操作へのフラッシュが、トランザクションで何も操作を提出していません。折りたたみmysqldプロセスがクラッシュする前に、トランザクションの最後の秒を削除します。

この値が1でない時には、上記の分析から、それがより良い性能を達成することができますが、例外は、自分の状況に応じて測定する必要があるので、損失があるだろうに遭遇します。


設定方法:
。innodb_flush_logs_at_trx_commit 1 =

彼は加えました:

MyISAMテーブルよりも遅くInnoDBの100回文句を言いますか?そして、あなたはおそらく、この値を調整するのを忘れました。トランザクションログ外のすべてのトランザクションがコミットされた時間や命令は非常に時間がかかり、書き込み(フラッシュ)ハードドライブ、にする必要がありますことを1つの手段のデフォルト値。バッテリバックアップ式キャッシュを特に使用(電池は、キャッシュのバックアップ)
時間。2は、MyISAMテーブルが可能である裏返し特にから、たくさんのために使用するように設定されている、それはハードドライブを意味しますが、システムのキャッシュに書き込まれません。ログはまだハードドライブへの毎秒フラッシュ、あなたは一般的に失うより1〜2秒以上更新のないようです。0は少し速くなるように設定されますが、セキュリティはMYSQLも失われる可能性があるトランザクションデータにリンクされている場合でも、かなり貧弱です。2の値は、オペレーティングシステム全体かもしれのみ失うデータをハングします。
VIMな/etc/my.cnf
Innodb_flush_log_at_trx_commit = 2
また、mysqldのランタイムで実行することができます。
セットGLOBAL Innodb_flush_log_at_trx_commit = 2

3.ファイルIOの割り当て、およびスペース
innodb_file_per_tableを
効果:各のInnoDBテーブルには、自分の別の表スペースを持っています。このような空間の一部を回収することができ、ファイルの削除など。
配布原則:使用されていないだけで使用。DBだけでなく、一般的な表スペースを持っている必要があります。
設定方法:
。innodb_file_per_tableを1 =

Innodb_file_io_threadsの
アクション:ファイルが読み込まれ、IOの数を書き、このパラメータはWindows上でのみ動作します。4は、Linux上で等しくなる
設定方法:
innodb_file_io_threads = 4

Innodb_open_filesの
役割:InnoDBは開くことができるデータテーブルを制限します。
配布原則:ライブラリテーブル例、特に大規模な数が、この値を大きくした場合。デフォルト値は300です。
設定方法:
innodb_open_files = 800
してください適切な増加table_cacheの


4.その他の関連するパラメータは、
ここで説明するより重要なパラメータである:
innodb_flush_method
役割:モデルのInnoDB IOシステムとを扱う
流通の原則:Windowsの設定されていませんが。
Unixのを設定することができます。FSYNC()またはO_SYNC / O_DSYNCを
キャッシュシステムは彼にそれを禁止することができ、システムが禁止された場合。
Linuxが選択できます。O_DIRECT
ディスクに直接書き込まれ、システムキャッシュを禁止します

彼は加えました:

InnoDBのIOの同期方法を設定します:
1)デフォルト?の使用にfsync()。
2)同期モードでO_SYNC開いているファイルは、通常より遅く。
Linux上で直接IOを使用して3)O_DIRECT、。大きく、特に、スピードを向上させることができます
RAIDシステムでは。追加のデータ・レプリケーションおよびダブルバッファリング(mysqlのバッファリングを避けます
そして、OSのバッファリング)


:メソッドの設定
innodb_flush_method = O_DIRECTを

Innodb_max_dirty_pages_pct
役割:1〜100の範囲のパーセント値以下のバッファ内のコントロールのInnoDB汚れたページは、デフォルトは90です。
このパラメータの別の用途:のInnoDBメモリの割り当ては、深刻なスワップ職業にすることができ、その結果、大きすぎる場合この値は、適切にそのリリースのスワップ領域を達成すること、調整に低減されます。意味の構成:90%の最大値は、15%の最低。あまりにも、変更、あまりにも多くのデータを誘発し、各ページには、小さすぎると、データ・ページを入れるには小さすぎる、操作の更新は遅すぎるキャッシュを更新する必要があります。
設定方法:
Innodb_max_dirty_pages_pct = 90の
、動的に変化するスーパー権限が必要です。
設定されたグローバルInnodb_max_dirty_pages_pct = 50。

参考:https://imysql.com/node/609

        https://www.cnblogs.com/steven9898/p/11340764.html

    

おすすめ

転載: www.cnblogs.com/VicLiu/p/11810125.html