web-dev-qa-db-ja.com

MySQLのinnodb_buffer_pool_sizeとinnodb_buffer_pool_instancesの関係

Owncloudがインストールされた仮想サーバーを実行します。現在、Owncloudには、現時点で開発されている方法で、ファイルをアップロードするたびにMySqlのオーバーヘッドが少し発生するという問題があります。

したがって、MySqlデータベースをできる限り良好に保つには、非常に重要です。非常に大きなinnodb_buffer_pool_size最大4、5、またはそれ以上のギガバイト、はい、全RAMの80%まで最大70と言う人もいますね。

まあ、しかし、ほとんどの人はinnodb_buffer_pool_instances

それでは、私の状況を見てみましょう。仮想マシンのリソースは限られています。つまり、6400Gバイトの合計RAMであり、通常モードでは約3000です(libvirtによって処理されます)。したがって、innodb_buffer_pool_instancesが1以上の場合、または新しいMySqlサーバーのデフォルトの設定(8など)でそれを許可するということは、最悪の場合、たとえばinnodb_buffer_pool_instances = 4およびinnodb_buffer_pool_size = 4 => 4 * 4 =最大の状況で16GバイトのRAM使用。スワップディスクの使用状況が悪くなり、MySql innodbバッファのすべてのスワップ使用状況がパフォーマンスに影響します。

結論は簡単です。利用可能なバッファサイズは、少なくとも利用可能なRAMの約70%パーセントよりも小さくなければなりません。残りは、php、Apache、およびシステム自体に必要な場合があります。

それで、より良い決定は何でしょうか。可能なのは1つだけinnodb_buffer_pool_instancesが非常に大きいinnodb_buffer_pool_size以上の小さいinnodb_buffer_pool_size、したがってより多くのinnodb_buffer_pool_instances必要に応じて同時に。

私のサーバーは最大で約10〜30人で使用されています。

3
TheMAn

このためのベストプラクティスは、リンクで非常に明確であると思います: https://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_buffer_pool_instances

Innodb_buffer_pool_sizeの値が複数のGBにある場合、各インスタンスが少なくとも1 GBになるようにinnodb_buffer_pool_instancesを数値に増やすことができます。また、mysqlを実行している専用システムの場合-innodb_buffer_pool_sizeは、使用可能なシステムRAMに基づいて設定できます。 70〜80%の大まかなルールに正確に準拠しない場合があります。私はシステムRAMに基づいてこれの最適値を調査し、ブログの投稿の一部として利用できるinnod_db_buffer_pool_sizeを計算する計算機を構築しました: https://scalegrid.io/blog/calculating-innodb-buffer-pool-size-for-your-mysql-server /

0
Prasad Nagaraj