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
Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Analyse approfondie du rôle et de l'utilisation du mot-clé static en langage C. En langage C, static est un mot-clé très important, qui peut être utilisé dans la définition de fonctions, de variables et de types de données. L'utilisation du mot-clé static peut modifier les attributs de lien, la portée et le cycle de vie de l'objet. Analysons en détail le rôle et l'utilisation du mot-clé static en langage C. Variables et fonctions statiques : les variables définies à l'aide du mot-clé static à l'intérieur d'une fonction sont appelées variables statiques et ont un cycle de vie global.

Il existe deux façons d'implémenter le multithreading en Java, l'une consiste à hériter de la classe Thread et l'autre à implémenter l'interface Runnable ; la classe Thread est définie dans le package java.lang. Tant qu'une classe hérite de la classe Thread et remplace la méthode run() dans cette classe, elle peut implémenter des opérations multithread. Cependant, une classe ne peut hériter que d'une seule classe parent, ce qui constitue une limitation de cette méthode. Regardons un exemple : packageorg.thread.demo;classMyThreadextendsThread{privateStringname;publicMyThread(Stringname){super();this

Titre : Go est-il un mot-clé en langage C ? Analyse détaillée En langage C, "go" n'est pas un mot-clé. Les mots-clés en langage C sont spécifiés par le standard C et sont utilisés pour représenter des structures ou des fonctions grammaticales spécifiques. Ils ont des significations particulières dans le compilateur et ne peuvent pas être utilisés comme identifiants ou noms de variables. Par exemple, le mot clé « int » représente un type de données entier, « if » représente une instruction conditionnelle, etc. Si nous voulons vérifier si « go » est un mot-clé en langage C, nous pouvons écrire un programme simple pour le tester. Voici un exemple : #inc

Le rôle et les exemples du mot-clé var en PHP En PHP, le mot-clé var permet de déclarer une variable. Dans les versions précédentes de PHP, l'utilisation du mot-clé var était la manière idiomatique de déclarer les variables membres, mais son utilisation n'est plus recommandée. Cependant, dans certains cas, le mot-clé var est toujours utilisé. Le mot-clé var est principalement utilisé pour déclarer une variable locale et marquer automatiquement la variable comme portée locale. Cela signifie que la variable n'est visible que dans le bloc de code actuel et n'est pas accessible dans d'autres fonctions ou blocs de code. Utiliser var

Il existe 32 mots-clés en langage C. Selon la fonction des mots-clés, ils peuvent être divisés en quatre catégories : mots-clés de type de données, mots-clés d'instructions de contrôle, mots-clés de type de stockage et autres mots-clés. Il existe 12 mots-clés de type de données, dont char, double, float, int, etc. ; il existe 12 mots-clés d'instruction de contrôle, dont for, break, if, else, do, etc. ; il existe 4 mots-clés de type de stockage, dont auto, static , extern, etc. ; il y a 4 autres mots-clés, dont const, sizeof, etc.

Utilisez la fonction Thread.start() de Java pour démarrer un nouveau thread En Java, nous pouvons utiliser le multithreading pour exécuter plusieurs tâches simultanément. Java fournit la classe Thread pour créer et gérer des threads. La fonction start() de la classe Thread est utilisée pour démarrer un nouveau thread et exécuter le code dans la méthode run() du thread. Exemple de code : publicclassMyThreadextendsThread{@Overr

Dans le langage Go, while n'est pas un mot-clé. Vous pouvez utiliser l'instruction for plus break pour obtenir l'effet d'une boucle while, telle que "for {sum++ if sum>10{break}else{...}}". Le langage go contient 25 mots-clés tels que break, default, func, select, case, defer, go, map, else, goto, for, if, var, etc.

En Java, lorsqu'il s'agit de threads, Thread est essentiel. Un thread est un exécuteur planifié plus léger qu’un processus. Pourquoi utiliser des fils de discussion ? En utilisant des threads, vous pouvez séparer l'allocation des ressources et la planification de l'exécution dans les processus du système d'exploitation. Chaque thread peut non seulement partager des ressources de processus (adresse mémoire, E/S de fichier, etc.), mais peut également être planifié indépendamment (les threads sont l'unité de base de la planification du processeur). Remarque 1. Thread est la classe la plus importante pour créer des threads, et le mot lui-même représente également thread. 2. La classe Thread implémente l'interface Runnable. Instance publicclassThreadDemoextendsThread{publicvoidrun(){for(inti=0
