InnoDB エンジンのパフォーマンスを最適化するための my.cnf パラメータ構成

InnoDB エンジンのパフォーマンスを最適化するための my.cnf パラメータ構成

私はインターネット上で数え切れないほどの my.cnf 構成を読みましたが、言及されている構成のほとんどは次のようなものでした。

1. innodb_buffer_pool_size
2. innodb_log_file_size
3. innodb_log_buffer_size
4. innodb_flush_log_at_trx_commit

次に、シングルスレッドとマルチスレッドの 2 つの例を記述して、構成パラメータを変更することでパフォーマンスが向上するかどうかをテストしました。結果は、innodb_flush_log_at_trx_commit のみがパフォーマンスを向上できることを示しています。パラメータ 1、2、3 については、いずれか 1 つをオンにしても、3 つすべてを同時に調整しても、テストのパフォーマンスには影響しません。考えてみると、テスト データの量が十分ではなかったことが原因かもしれません。条件が許せば、より多くのデータを使用してこれら 3 つのパラメーターをテストします。

innodb_flush_log_at_trx_commit の詳細な説明は次のとおりです。

innodb_flush_log_at_trx_commit が 0 に設定されている場合、ログ バッファーは 1 秒ごとにログ ファイルに書き込まれ、同時にログ ファイルのフラッシュ (ディスクへの書き込み) 操作が実行されます。このモードでは、トランザクションがコミットされても、ディスクへの書き込み操作はアクティブにトリガーされません。
innodb_flush_log_at_trx_commit が 1 に設定されている場合、MySQL はトランザクションがコミットされるたびにログ バッファー内のデータをログ ファイルに書き込み、ディスクにフラッシュします。
innodb_flush_log_at_trx_commit が 2 に設定されている場合、MySQL はトランザクションがコミットされるたびにログ バッファー データをログ ファイルに書き込みます。ただし、フラッシュ操作は同時には発生しません。このモードでは、MySQL は 1 秒ごとにフラッシュ操作を実行します。

結果

0 に設定すると、このモードは最も高速になりますが、安全性は低くなります。mysqld プロセスがクラッシュすると、最後の 1 秒間のすべてのトランザクション データが失われます。
1 に設定すると、このモードは最も安全ですが、最も遅くなります。 mysqld サービスまたはサーバー ホストがクラッシュした場合、バイナリ ログでは最大 1 つのステートメントまたは 1 つのトランザクションが失われる可能性があります。
2 に設定すると、このモードは 0 よりも高速かつ安全になります。最後の 1 秒間のすべてのトランザクション データは、オペレーティング システムがクラッシュした場合、またはシステムの電源が失われた場合にのみ失われる可能性があります。

: プロセスのスケジュールの問題により、この「1 秒に 1 回のフラッシュ操作」は「1 秒あたり」100% であることが保証されません。

結論: innodb_flush_log_at_trx_commit を 0 または 2 に設定した場合の速度は同様であり、どちらも 1 に設定した場合よりもはるかに高速です。

これは、InnoDB エンジンと MyISAM エンジンの違いを思い出させます。InnoDB の利点は、並行処理が MyISAM よりも高速であることです。スレッド プールの数は、CPU スレッドの数に応じて設定されています。その後、スレッド プールの数を CPU スレッドの数よりも大きく、大きく、さらに大きく設定しました。その結果、テスト プログラムのパフォーマンスが再び向上しました。酔っていました。スレッド プールに対する私の理解はあまりにも浅すぎたことが判明しました。最適なスレッドプールサイズ

以下もご興味があるかもしれません:
  • MySQL5.6.17データベースをインストールするときにMy.iniファイルを構成する方法
  • MySql 5.7.20 のインストールとデータおよび my.ini ファイルの構成
  • MySQL 5.6 & 5.7 の最適な構成ファイル テンプレート (my.ini)
  • MySQL サービスのパフォーマンス最適化 - my.cnf_my.ini 構成手順 (16G メモリ)
  • MySQL 最適化設定ファイル my.ini (discuz フォーラム)
  • MySQL 構成パラメータ my.ini/my.cnf の詳細な分析
  • MySQL my.ini 設定ファイルの詳細な説明
  • 権限の問題によりMySQLの設定ファイルmy.cnfを起動できない問題の解決方法
  • 現在使用されている設定ファイル my.cnf を表示する mysql メソッド (推奨)
  • MySQL my.cnf 設定を変更しても効果がない問題の解決策
  • MySQL 5.5.x my.cnf パラメータ設定の最適化の詳細
  • MySQL 設定ファイル my.cnf の最適化の詳細な説明 (mysql5.5)
  • MySQL パフォーマンス最適化の道 --- 設定ファイル my.cnf を変更する
  • MariaDB (MySQL ブランチ) my.cnf 構成ファイルの中国語注釈付きバージョン
  • MySQL 設定ファイル my.cnf パラメータの最適化と中国語の詳細な説明
  • MySQL 設定ファイル my.cnf の中国語での詳細な説明と、MySQL パフォーマンスの最適化方法の共有
  • MySQL 設定ファイル my.cnf の中国語版の比較
  • MySQL 設定ファイル my.cnf の例の最も詳細な翻訳
  • MySql 最適化のための my.ini 中国語構成スキームの詳細な説明: InnoDB、4GB メモリ、および複数のクエリ

<<:  WeChatアプレットがテキストスクロールを実装

>>:  Linuxカーネルのアクセス制御セキュリティを強化する方法

推薦する

docker-compose が遅すぎる場合の解決策の詳細な説明

解決策はただ一つ、ソースを変更することです。 github からのソースは基本的にタイムアウトするの...

実用的なクイックスタートReactルーティング開発

インストールインストールするには、次のコマンドを入力します。 // ネプ npm で react-r...

CocosCreator ScrollView 最適化シリーズ: フレーム読み込み

目次1. はじめに2. 行き詰まった問題の分析3. 解決策(理論) 4. ソリューション(コード) ...

Vue でフルスクリーンを実装し、フルスクリーン終了を監視する

目次序文:実装手順:完全なソースコード:詳細情報:序文: vueでは、デフォルトページを実装し、di...

Ubuntu 18.04にPython仮想環境をインストールする

Ubuntu 18.04 を使用する Python 開発者向けの参考資料です。 1. Ubuntu ...

MySQL シャーディングの詳細

1. ビジネスシナリオの紹介MySQLを使用する電子商取引システムがあるとします。大量のデータを保存...

MySQL ユーザーと権限、およびルートパスワードをクラックする方法の例

MySQL ユーザーと権限MySQL には、MySQL と呼ばれるシステムに付属するデータベースがあ...

トップナビゲーションバー機能を実現するCSS+HTML

ナビゲーション バー、固定トップ ナビゲーション バー、およびセカンダリ メニューの実装効果図の実装...

CentOS7 カーネル カーネル5.0 バージョンアップグレード

アップグレードプロセス:元のシステム: CentOS7.3 [root@my-e450 ~]# un...

JavaScript ベースで年・月・日の 3 階層連携を実現

この記事では、年、月、日の3段階のリンクを実現するためのJavaScriptの具体的なコードを参考ま...

WeChatアプレットはユーザーログインモジュールサーバーの構築を実装します

サーバーの構築には node.js を選択しました。まだインストールしていない方は、私の他の nod...

WeChatアプレットAmapマルチポイントルート計画プロセス例の詳細な説明

電話Amap API を呼び出す方法は? Amap が https://lbs.amap.com/a...

JavaScript を使用してセカンダリ メニューを作成する

この記事では、セカンダリメニュー効果を実現するためのJavaScriptの具体的なコードを参考までに...

HTML テーブルタグチュートリアル (21): 行の境界線の色属性 BORDERCOLOR

テーブルを美しくするために、行ごとに異なる境界線の色を設定できます。基本的な構文<TR 境界線...

HTMLフォーム入力監視の詳細な理解

今日、入力イベントに関するブログ投稿を見て、気まぐれで関連情報を整理してみました。イベント:関数 c...