MySQL之thread cache_MySQL

Jun 01, 2016 pm 01:18 PM
thread キーワード

bitsCN.com

  最近突然对MySQL的连接非常感兴趣,从status根据thread关键字可以查出如下是个状态

show global status like 'thread%';+-------------------+-------+| Variable_name     | Value |+-------------------+-------+| Threads_cached    | 57    || Threads_connected | 1268  || Threads_created   | 31715 || Threads_running   | 1     |+-------------------+-------+
ログイン後にコピー

Thread_cached:The number of threads in the thread cache

Thread_connected:The number of currently open connections.

Thread_created:The number of threads created to handle connections.

Thread_running:The number of threads that are not sleeping.

 

  以上是这4个状态的含义,thread_connected等于show processlist,thread_running代表真正在运行的(等于1一般就是这个show status命令本身),thread_cached代表mysql管理的线程池中还有多少可以被复用的资源,thread_created代表新创建的thread(根据官方文档,如果thread_created增大迅速,需要适当调高thread_cache_size)。

  我们先来实际看下这4个状态之间的直观关系。

  从上面这个图,我们可以总结出来一个公式:running和其他三个状态关系不大,但肯定不会超过thread_connected

  (new_con-old_con)=create+(old_cache-new_cache)

  从上面公式可以看出,如果create等于0,那么thread_connected减少的和thread_cached增加的相等,thread_connected增加的和thread_cached减少的相等。(其实这也就是thread_cached存在的意义,资源可以复用)

 

  我们来看眼影响thread_cached的参数thread_cache_size

How many threads the server should cache for reuse. When a client disconnects, the client's threads are put in the cache if there are fewer than thread_cache_size threads there. Requests for threads are satisfied by reusing threads taken from the cache if possible, and only when the cache is empty is a new thread created. This variable can be increased to improve performance if you have a lot of new connections. Normally, this does not provide a notable performance improvement if you have a good thread implementation. However, if your server sees hundreds of connections per second you should normally set thread_cache_size high enough so that most new connections use cached threads. By examining the difference between the Connections and Threads_created status variables, you can see how efficient the thread cache is. For details, see Section 5.1.6, “Server Status Variables”.
ログイン後にコピー

  众所周知,mysql建立连接非常消耗资源,所以就有了thread_cache,当已有连接不再使用之后,mysql server不是直接断开连接,而是将已有连接转入到thread_cache中,以便下次在有create thread的需求时,可以在cache中复用,提高性能,降低资源消耗。  

  当然,如果已经有了中间件或者其他的连接池管理,那么这个参数就没有那么重要了,但是如果没有其他的连接池管理,那么优化这个参数还是可以得到不错的回报的。

bitsCN.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

C 言語における static キーワードの役割と使用法の詳細な分析 C 言語における static キーワードの役割と使用法の詳細な分析 Feb 20, 2024 pm 04:30 PM

C 言語における static キーワードの役割と使用法の詳細な分析 C 言語では、static は関数、変数、データ型の定義に使用できる非常に重要なキーワードです。 static キーワードを使用すると、オブジェクトのリンク属性、スコープ、ライフサイクルが変更される可能性があるため、C 言語における static キーワードの役割と使用法を詳しく分析してみましょう。静的変数と関数: 関数内で static キーワードを使用して定義された変数は静的変数と呼ばれ、グローバルなライフサイクルを持ちます。

Java の Runnable と Thread の違いは何ですか? Java の Runnable と Thread の違いは何ですか? May 07, 2023 pm 05:19 PM

Java でマルチスレッドを実装するには 2 つの方法があり、1 つは Thread クラスを継承する方法、もう 1 つは Runnable インターフェイスを実装する方法で、Thread クラスは java.lang パッケージで定義されます。クラスが Thread クラスを継承し、このクラスの run() メソッドをオーバーライドする限り、マルチスレッド操作を実装できますが、クラスが継承できる親クラスは 1 つだけであり、これがこのメソッドの制限です。例を見てみましょう: packageorg.thread.demo;classMyThreadextendsThread{privateStringname;publicMyThread(Stringname){super();this

go は C 言語のキーワードですか?詳細な分析 go は C 言語のキーワードですか?詳細な分析 Mar 16, 2024 am 10:30 AM

タイトル: go は C 言語のキーワードですか?詳細な分析 C 言語では、「go」はキーワードではありません。 C 言語のキーワードは C 標準で指定されており、特定の文法構造または関数を表すために使用されます。コンパイラでは特別な意味を持ち、識別子や変数名として使用することはできません。たとえば、キーワード「int」は整数データ型を表し、「if」は条件ステートメントを表します。 「go」が C 言語のキーワードであるかどうかを確認したい場合は、それをテストするための簡単なプログラムを作成できます。以下に例を示します: #inc

PHP における var キーワードの役割と例 PHP における var キーワードの役割と例 Jun 28, 2023 pm 08:58 PM

PHP における var キーワードの役割と例 PHP では、var キーワードを使用して変数を宣言します。以前の PHP バージョンでは、var キーワードの使用がメンバー変数を宣言する慣用的な方法でしたが、その使用は推奨されなくなりました。ただし、場合によっては、引き続き var キーワードが使用されます。 var キーワードは主にローカル変数を宣言し、その変数をローカル スコープとして自動的にマークするために使用されます。これは、変数が現在のコード ブロック内でのみ表示され、他の関数やコード ブロックからはアクセスできないことを意味します。変数を使用する

C言語にはキーワードがいくつありますか? C言語にはキーワードがいくつありますか? Nov 22, 2022 pm 03:39 PM

C言語には32個のキーワードがあり、キーワードの機能によりデータ型キーワード、制御文キーワード、記憶型キーワード、その他のキーワードの4つに分類されます。 char、double、float、int などを含む 12 個のデータ型キーワードがあり、for、break、if、else、do などを含む 12 個の制御ステートメント キーワードがあり、auto、 static 、 extern など、他に const、sizeof などを含む 4 つのキーワードがあります。

JavaのThread.start()関数を使用して新しいスレッドを開始します。 JavaのThread.start()関数を使用して新しいスレッドを開始します。 Jul 24, 2023 pm 11:01 PM

新しいスレッドを開始するには、Java の Thread.start() 関数を使用します。Java では、マルチスレッドを使用して複数のタスクを同時に実行できます。 Java は、スレッドを作成および管理するための Thread クラスを提供します。 Thread クラスの start() 関数は、新しいスレッドを開始し、スレッドの run() メソッド内のコードを実行するために使用されます。コード例: publicclassMyThreadextendsThread{@Overr

go 言語のキーワードは while ですか? go 言語のキーワードは while ですか? Jun 04, 2021 pm 05:01 PM

Go 言語では、while はキーワードではありません。for ステートメントと Break を使用すると、「for {sum++ if sum>10{break}else{...}}」など、while ループの効果を得ることができます。 go 言語には、break、default、func、select、case、defer、go、map、else、goto、for、if、var など 25 のキーワードがあります。

Thread は Java でどのようにインターフェースを生成するのでしょうか? Thread は Java でどのようにインターフェースを生成するのでしょうか? May 17, 2023 pm 12:49 PM

Java では、スレッドに関して言えば、Thread が不可欠です。スレッドは、プロセスよりも軽量なスケジュールされた実行プログラムです。なぜスレッドを使用するのでしょうか?スレッドを使用すると、オペレーティング システム プロセスでのリソース割り当てと実行スケジュールを分離できます。各スレッドはプロセス リソース (メモリ アドレス、ファイル I/O など) を共有できるだけでなく、独立してスケジュールすることもできます (スレッドは CPU スケジューリングの基本単位です)。注 1. Thread はスレッドを作成するための最も重要なクラスであり、単語自体もスレッドを表します。 2. Thread クラスは Runnable インターフェイスを実装します。インスタンス publicclassThreadDemoextendsThread{publicvoidrun(){for(inti=0)

See all articles