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

推薦する

jsはテーブルドラッグオプションを実装します

この記事の例では、テーブルドラッグオプションを実装するためのjsの具体的なコードを参考までに共有して...

WeChatアプレットがユーザーの移動軌跡を記録

目次設定を追加json 構成レイヤー構成の表示論理層の構成位置追跡をオンにする録音を開始開始座標を決...

10分でDockerを使ったマイクロサービスのデプロイ方法を学ぶ

Docker は 2013 年のリリース以来、広く注目され、ソフトウェア業界を変える可能性を秘めてい...

Docker を使用した nGrinder パフォーマンス テスト プラットフォームの導入プロセスの分析

nGrinderとは何ですか? nGrinder は、スクリプトの作成、テストの実行、監視、結果レポ...

MySQL が「operate_time」エラーのデフォルト値が無効であると報告する問題を解決する

データベースでcreate tableステートメントを実行する テーブル `sys_acl` を作成...

CSS 疑似要素を使用して複数の連続する要素のスタイルを制御する方法

CSS 疑似要素を使用して要素を制御する場合、一部の要素のスタイルを変更する必要があることがよくあり...

Linux での MySQL データベースのマスター スレーブ同期レプリケーション構成

Linux での MySQL データベースのマスター/スレーブ同期構成の利点は、この方法をバックアッ...

Linux環境でよく使われるMySQLコマンドの紹介

mysql コマンドを入力します: mysql -u+(ユーザー名) -p+(パスワード) mysq...

CSS でフッターの「下部吸収」効果を実現

よく遭遇する問題: 下部の要素を「下部に貼り付ける」効果を CSS でどのように実現するか。この記事...

MySQL 5.7 の Docker バージョンを MySQL 8.0.13 にアップグレードし、データを移行する

目次1. 古いMySQL5.7データをバックアップする2. MySQL8.0.13のイメージをプルし...

CentOS サーバーの時間を北京時間に変更する方法

1. VPSとCentOSシステムを購入しましたが、サーバーの時間が北京時間と一致せず、時差があるこ...

MySQL をベースにしたシンプルな検索エンジンを実装する

目次MySQL ベースの検索エンジンの実装1. ngram全文パーサー2. 全文インデックスを作成す...

Zabbix設定 DingTalkアラーム機能実装コード

必要Zabbix で DingTalk アラームを設定する方法は、Prometheus で Ding...

Mysql を 5.7 にアップグレードした後のグループ クエリの問題を解決する

問題を見つける最近MySQLをMySQL 5.7にアップグレードした後、次のようなクエリでグループ化...

フィールドの文字セットの違いによる MySQL のインデックス失敗の解決策

インデックスとは何ですか?なぜインデックスを作成するのですか?インデックスは、列に特定の値を持つ行を...