MySQL之thread cache_MySQL
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
Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Eingehende Analyse der Rolle und Verwendung des Schlüsselworts „static“ in der Sprache C. In der Sprache C ist „static“ ein sehr wichtiges Schlüsselwort, das bei der Definition von Funktionen, Variablen und Datentypen verwendet werden kann. Die Verwendung des Schlüsselworts static kann die Linkattribute, den Umfang und den Lebenszyklus des Objekts ändern. Lassen Sie uns die Rolle und Verwendung des Schlüsselworts static in der C-Sprache im Detail analysieren. Statische Variablen und Funktionen: Variablen, die mit dem Schlüsselwort static innerhalb einer Funktion definiert werden, werden als statische Variablen bezeichnet, die einen globalen Lebenszyklus haben

Es gibt zwei Möglichkeiten, Multithreading in Java zu implementieren: Eine besteht darin, die Thread-Klasse zu erben, und die andere darin, die Runnable-Schnittstelle zu implementieren. Die Thread-Klasse ist im Paket java.lang definiert. Solange eine Klasse die Thread-Klasse erbt und die run()-Methode in dieser Klasse überschreibt, kann sie Multithread-Operationen implementieren. Eine Klasse kann jedoch nur eine übergeordnete Klasse erben, was eine Einschränkung dieser Methode darstellt. Schauen wir uns ein Beispiel an: packageorg.thread.demo;classMyThreadextendsThread{privateStringname;publicMyThread(Stringname){super();this

Titel: Ist go ein Schlüsselwort in der C-Sprache? Detaillierte Analyse In der C-Sprache ist „go“ kein Schlüsselwort. Schlüsselwörter in der C-Sprache werden vom C-Standard spezifiziert und zur Darstellung spezifischer grammatikalischer Strukturen oder Funktionen verwendet. Sie haben im Compiler eine besondere Bedeutung und können nicht als Bezeichner oder Variablennamen verwendet werden. Beispielsweise stellt das Schlüsselwort „int“ einen ganzzahligen Datentyp dar, „if“ stellt eine bedingte Anweisung dar und so weiter. Wenn wir überprüfen möchten, ob „go“ ein Schlüsselwort in der C-Sprache ist, können wir ein einfaches Programm schreiben, um es zu testen. Hier ist ein Beispiel: #inc

Die Rolle und Beispiele des Schlüsselworts var in PHP In PHP wird das Schlüsselwort var zum Deklarieren einer Variablen verwendet. In früheren PHP-Versionen war die Verwendung des Schlüsselworts var die idiomatische Methode zum Deklarieren von Mitgliedsvariablen, seine Verwendung wird jedoch nicht mehr empfohlen. In einigen Fällen wird jedoch weiterhin das Schlüsselwort var verwendet. Das Schlüsselwort var wird hauptsächlich verwendet, um eine lokale Variable zu deklarieren und die Variable automatisch als lokalen Bereich zu markieren. Dies bedeutet, dass die Variable nur innerhalb des aktuellen Codeblocks sichtbar ist und nicht in anderen Funktionen oder Codeblöcken darauf zugegriffen werden kann. Verwenden Sie var

Es gibt 32 Schlüsselwörter in der C-Sprache. Je nach Funktion können Schlüsselwörter in vier Kategorien unterteilt werden: Schlüsselwörter für Datentypen, Schlüsselwörter für Steueranweisungen, Schlüsselwörter für Speichertypen und andere Schlüsselwörter. Es gibt 12 Schlüsselwörter für Datentypen, einschließlich char, double, float, int usw.; es gibt 12 Schlüsselwörter für Steueranweisungen, einschließlich for, break, if, else, do usw.; es gibt 4 Schlüsselwörter für Speichertypen, einschließlich auto, static , extern usw.; es gibt 4 weitere Schlüsselwörter, einschließlich const, sizeof usw.

Verwenden Sie die Thread.start()-Funktion von Java, um einen neuen Thread zu starten. In Java können wir Multithreading verwenden, um mehrere Aufgaben gleichzeitig auszuführen. Java stellt die Thread-Klasse zum Erstellen und Verwalten von Threads bereit. Die Funktion start() in der Klasse Thread wird verwendet, um einen neuen Thread zu starten und den Code in der Methode run() des Threads auszuführen. Codebeispiel: publicclassMyThreadextendsThread{@Overr

In der Go-Sprache ist while kein Schlüsselwort. Sie können die for-Anweisung plus break verwenden, um den Effekt einer while-Schleife zu erzielen, z. B. „for {sum++ if sum>10{break}else{...}}“. Die Go-Sprache verfügt über 25 Schlüsselwörter wie break, default, func, select, case, defer, go, map, else, goto, for, if, var usw.

Wenn es in Java um Threads geht, ist Thread unerlässlich. Ein Thread ist ein leichter geplanter Executor als ein Prozess. Warum Threads verwenden? Durch die Verwendung von Threads können Sie die Ressourcenzuweisung und die Ausführungsplanung in Betriebssystemprozessen trennen. Jeder Thread kann nicht nur Prozessressourcen (Speicheradresse, Datei-E/A usw.) gemeinsam nutzen, sondern auch unabhängig geplant werden (Threads sind die Grundeinheit der CPU-Planung). Hinweis 1: Thread ist die wichtigste Klasse zum Erstellen von Threads, und das Wort selbst steht auch für Thread. 2. Die Thread-Klasse implementiert die Runnable-Schnittstelle. Instanz publicclassThreadDemoextendsThread{publicvoidrun(){for(inti=0
