重いInnoDBワークロードに合わせてMySQLをどのように調整しますか?


39

主にInnoDBテーブルを持つ本番OLTPシステムを想定

  • システムの調整ミス/構成ミスの一般的な症状は何ですか?
  • どの設定パラメーターをデフォルトから最もよく変更しますか?
  • 問題が発生する前に、潜在的なボトルネックをどのように見つけますか?
  • アクティブな問題をどのように認識してトラブルシューティングしますか?

特定のstatus変数と診断の詳細を示す逸話をいただければ幸いです。


2
この質問は非常に広範です。4つの質問に分けられますか?(そして、あなたの箇条書きの質問も信じられないほど広範です。特定の問題でそれらをインスタンス化できますか?)
ブライアンボールサン-スタントン

回答:


16

ここで彼女は(使用例、それのいくつかは、Solaris固有である、MySQLのについて多くのことをブログ- Sunのジェニー・チェンからのInnoDBのチューニングに良い記事ですDTraceの)が、全体のブログは興味深い情報がいっぱいです。


4
ジェニー・チェンとは誰ですか?
Pacerier

19

興味深いことに、MySQL 5.5では、複数のinnodbバッファープールを使用できるようになりました。

気にするパラメータは

約1か月で、クライアントに112個のinnodbバッファープールを実装する予定です。どのように行ったかをお知らせします。

更新2011-02-27 21:57 EDT

innodb_buffer_pool_instancesの最大値は64であることがわかりました。144GBを構成することにしました。そのため、innodb_buffer_pool_instancesを18に、innodb_buffer_pool_sizeを8に設定しています。

更新2011-04-28 13:44 EDT

複数のInnoDBバッファープールを試しました。スレッドのロックと競合が多すぎます。単一の162GBバッファープールに変更し、read_io_threadsとwrite_io_threadsを64(最大値)に設定しました。これはうまく機能しました。

更新2012-07-03 17:27 EDT

MySQLについて驚くべきことを学びました。物理CPUの数で割っ総インストール数よりも大きい単一のモノリシックInnoDBバッファープールを割り当てると、InnoDBバッファープールがいっぱいになったために、OSを定期的にメモリスワッピングに誘導します。innodb_buffer_pool_instancesとして知られるMySQL 5.5のオプションを使用して、バッファープールを分割できます。昨日、昨年の回答で言及したクライアントに対してこれを適切に実装しました。クライアントのバッファプール用にまだ162GBあります。各DBサーバーはデュアルヘキサコアであるため、サーバーのinnodb_buffer_pool_instancesオプションを2に設定しました。12に設定することを考えていましたが、同僚がMySQLとSwappinessに関するJeremy Coleのブログを見せてくれました。それを読んだ後、私はクライアントのためにすぐにそれを実践しました。このコマンドを実行しました

numactl --hardware

各物理コアに対して96 GBの192 GBのサーバーRAMのマッピングを見ました。そのため、innodb_buffer_pool_instancesを2に設定しました。今は順調です。回答を更新して、これが次の2か月のメモリスワッピングにどのように影響するかを確認します。


こんにちは、@ RolandoMySQLDBA、jeremyのブログから、innodbインスタンスが物理CPUの数に等しいという接続や結論を見つけることができず、スワッピングの問題を解決できます。複数のinnodbインスタンスは、numactl --interleave = allを設定したり、Linuxのバッファーキャッシュをフラッシュしたり、OSにInnoDBのバッファープールを割り当てさせることなく、メモリノード間で自動的にバランスを取りますか?
温家宝レン

@Rolando、ニース2x 100 GBラム。どのクライアントですか?
Pacerier

「インスタンス」は次のように実装されていると思いました:(ブロック番号)MOD(インスタンス数)->(ブロックを配置するインスタンス)。これはNUMAとは関係ありません
リックジェームズ


4

まず、my.cnfのデフォルトのInnoDBバッファープールサイズを増やします(デフォルトでは8MBであると思います)

おそらくこれをRAMサイズの75%に設定する必要があります(一般的に)


-1

どの設定パラメーターをデフォルトから最もよく変更しますか?

メモリ構成


もっと説明的な答えを提供できますか?それらについてはどうですか?なぜこれらの変更を行うのですか?上記の変更後の予想される観察は何ですか?どのようにそれらを変更するかをどのように知っていますか?
jcolebrand

mysql構成はすぐにmyisamテーブルをセットアップできるように準備されています(ほとんどのユーザーがそのように使用します)。さらに、最適化されたサーバーを使用するには、ブースエンジンの優秀パフォーマンスのためのコンフィギュレーションデータベースに硬く、MyISAMテーブルとInnoDBのエンジンの別々のバッファを持っているMYSQL
sbczk
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.