2013年9月3日火曜日

MySQLの最適化ヒント - thread_cache_size

Original post: http://anothermysqldba.blogspot.com/2013/09/mysql-optimization-tip-threadcachesize.html

最近、私は簡単にPROCESSLISTで300から600行で実行されたMySQLデータベースを検出しました。 最大接続数は、同様に、この量を容易倍以上に設定された。 これは私がただに同意しないことをセットとなりました。 それはまた、非常にうまく動作していない自分自身を証明したので、私が呼ばれた。 だからここは私が発見し、プロセス上の私の思考の一部です。

私の考えでは、使用中のMySQLデータベースの大半は、最大接続または1500以上を必要としません。 より多くの接続があなたがあなたのサーバーにもたらす多くのオーバーヘッドを可能にします。 効率的にあなたの接続を使用します。
第二に、使用された接続に対してthreads_createdの%を理解する。 このスレッドがヒット率を作成し検討するかもしれない。 ところで.. これは新しい情報はありませんが、これはいくつかの時間のためにコミュニティに理解されている情報です。 私は他人を助けようとも他の方法でこれを提示するふりをするつもりはありません。 だからあなたの現在の%を理解するために次の手順を実行します。
'Threads_created'のような状態を示し;
セット@ Threads_created = <上記のクエリからの結果>;
'接続'のような状態を示し;
セット@接続= <上記のクエリからの結果>;
"接続のThreads_created%" \ Gとして((@ Threads_created / @接続)* 100) - 100を選択



だからあなたはあなたの割合が何であるか、上記のプロセスを実行した場合? あなたは、これがほぼ100できるだけなりたい。 だから、例えば、私が最近遭遇したサーバは10%未満%を持っていた。 それでは、どのようにこの問題を解決し、あなたの%を上げるのですか?


変数thread_cache_sizeはデフォルトの0を持っています。 あなたが気づくように起動した場合、プロセスが成長しますが、クエリがデッドロックやなどでブロックされていない、あなたは上記のように、あなたの "接続のThreads_created%"をチェックする必要があります。 それは今%が低くなる可能性がある。 あなたは%を上げ、大幅にあなたのサーバ環境に合わせてスイートスポットを見つけることによって、データベースのパフォーマンスを向上させることができます。 thread_cache_sizeはライブ環境で変更することができます。 だから、これは(値を取得するために上記を参照)を使用すると、 "Threads_created"のステータス値を監視し、変数を設定することができます。 これは値の増加し続ける場合は、次に上げるために引き続きthread_cache_sizeを 。 通常私は、一度に500に移行するためのいくつかの時点で25で価値を高めることを好む。 私は頻繁に "接続のThreads_created%"をチェックして 'Threads_created'。 一度あなたが行にドロップするように開始する得るために%とPROCESSLISTに気づくでしょうスイートスポットに近づく。 通常の1以上の調整thread_cache_sizeはスイートスポットにあなたを得るでしょう。

すべてのサーバーと環境が異なっています。
一部のサーバでは、と98%かもしれないthread_cache_size他人との98%を持っていながら、50のthread_cache_size 15000に設定されています。 最大値は16384です。

だから、何もない場合... 調整を行うことを検討まずあなたの割合が何であるかを調べる。