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カーネルのアクセス制御セキュリティを強化する方法

推薦する

MySQL sql99構文の内部結合と非等価結合の詳細な説明

#事例: 従業員の給与水準を照会する 選択 給与、等級 から 従業員 参加する ジョブグレード g ...

Dockerを使用してSpring Bootプロジェクトをデプロイする手順

目次シンプルなSpringbootプロジェクトを作成する1. pom.xmlでSpring Boot...

MySQL 5.7 に組み込まれているストレス テストの mysqlslap コマンドと構文の詳細な説明

序文mysqlslap は、MySQL サーバーへのクライアント負荷をシミュレートし、各ステージの時...

Samba を使用して Linux サーバー上で共有ファイル サービスを構築する方法

最近、私たちの小さなチームは、サーバー上の共有フォルダーを共有して、全員がパブリックリソースドキュメ...

シンプルなアコーディオン効果を実現するjs

この記事では、アコーディオン効果を実現するためのjsの具体的なコードを参考までに共有します。具体的な...

Win10環境にMysql5.7.23をインストールする際の問題点と落とし穴

たくさんのチュートリアルを読みましたが、うまくインストールできませんでした。しばらく試行錯誤した後、...

LinuxでJenkinsのパスワードを忘れる方法

1.Jenkinsのインストール手順: https://www.jb51.net/article/1...

Linux に mysql をインストールするときに /etc に my.cnf ファイルがない問題を解決する

今日、mysql ポートを変更したいと思ったのですが、/etc/ ディレクトリに my.cnf ファ...

Linux での MySQL 5.7.18 バイナリ パッケージのインストール チュートリアル (デフォルトの構成ファイル my_default.cnf なし)

現在、MySQL を学習中です。私は完全な初心者で、Linux についてはあまり知りません。今後の作...

FirefoxでCookieとお気に入りをインポートおよびエクスポートする方法

Firefox は、多くの拡張機能とプラグインを備えた、よく使用されるブラウザです。IE に比べて多...

MySQL 5.6 圧縮パッケージのインストール方法

MySQL には、msi インストールと zip 解凍の 2 つのインストール方法があります。 zi...

docker compose を使用して FastDfs ファイル サーバーをインストールする詳細な例

ドッカーの作成 バージョン: '2' サービス: fastdfsトラッカー: ホスト...

vue backtop コンポーネントを実装するための完全なコード

効果: コード: <テンプレート> <div class="back-t...

MySQL エラー: 接続数が多すぎる場合の解決策

MySQLデータベースの接続が多すぎますこのエラーは明らかに、mysql_connect の後に m...