Heim  >  Artikel  >  Datenbank  >  Worauf bezieht sich die Anzahl der MySQL-Verbindungen?

Worauf bezieht sich die Anzahl der MySQL-Verbindungen?

WBOY
WBOYnach vorne
2023-05-26 13:41:131665Durchsuche

Die Anzahl der MySQL-Verbindungen bezieht sich auf die maximale Anzahl von Kundenverbindungen, die die Datenbank gleichzeitig akzeptieren kann. Die Anzahl der MySQL-Verbindungen ist eine Komponente, die berücksichtigt werden muss. Sie kann dazu beitragen, dass die Datenbank sicher läuft und gleichzeitig die aktuelle Leistung der Datenbank maximiert wird. Die Anzahl der MySQL-Verbindungen ist eine wichtige Konfiguration, die sich auf die Client-Übertragung und -Verarbeitung in der Datenbank auswirken kann. Datenvolumen. Wenn die Anzahl der Verbindungen zu gering ist, werden Verbindungsanforderungen möglicherweise blockiert und es kommt zu einer Zeitüberschreitung. Wenn zu viele Verbindungen vorhanden sind, wird viel Speicher verbraucht, was zu einer verringerten Leistung führt.

Einführung in die Anzahl der MySQL-Verbindungen

Die Anzahl der Datenbankverbindungen ist die maximale Anzahl von Kundenverbindungen, die die Datenbank gleichzeitig akzeptieren kann.

Die Anzahl der MySQL-Verbindungen ist eine Komponente, die berücksichtigt werden muss. Sie kann dazu beitragen, dass die Datenbank sicher läuft und gleichzeitig die aktuelle Leistung der Datenbank maximiert wird. „Maximale Verbindung“ ist ein anderer Begriff für die Steuerung, welche Clients eine Verbindung zur Datenbank herstellen können.

Die Konfiguration der Anzahl der MySQL-Verbindungen ist wichtig, da sie sich direkt auf die Effizienz der Datenbankverarbeitung und der Clientdatenübertragung auswirkt. Wenn die Anzahl der MySQL-Verbindungen zu gering ist, wird die Verbindungsanforderung möglicherweise blockiert und es kann zu einer Zeitüberschreitung kommen. Wenn die Anzahl der MySQL-Verbindungen zu groß ist, wird viel Speicher belegt, was zu einer geringen Leistung führt. Daher muss die Anzahl der MySQL-Verbindungen angemessen eingestellt werden.

Die Anzahl der MySQL-Verbindungen kann über die MySQL-Konfigurationsdatei my.cnf angepasst werden, oder Sie können den folgenden MySQL-Befehl zur dynamischen Anpassung verwenden:

SET GLOBAL max_connections=300;

Der obige Befehl kann die maximale Anzahl von MySQL-Verbindungen auf 300 oder Sie festlegen kann in der entsprechenden my.cnf eingestellt werden. Setzen Sie diesen Parameter in der Datei:

max_connections=300

Die Anzahl der MySQL-Verbindungen kann mit dem folgenden MySQL-Befehl überprüft werden:

SHOW STATUS LIKE 'Max_used_connections';
+-------------------------+-------+
| Variable_name           | Value |
+-------------------------+-------+
| Max_used_connections    | 123   |
+-------------------------+-------+

Dieser Satz kann wie folgt umgeschrieben werden: Im VW-System bis zu Es dürfen 123 Verbindungen gleichzeitig auf MySQL zugreifen. Es hilft auch zu beurteilen, ob die aktuelle maximale Anzahl von Verbindungen im System angemessen ist:

  • Wenn der Wert hoch ist, deutet dies darauf hin, dass zu diesem Zeitpunkt möglicherweise eine große Anzahl von Clients auf MySQL zugreift

  • Wenn der Wert klein ist, bedeutet dies, dass die verfügbaren Ressourcen des Systems nicht vollständig genutzt werden können. In diesem Fall können Sie eine Erhöhung der maximalen Anzahl in Betracht ziehen von MySQL-Verbindungen.

Sie müssen auf die Anzahl der MySQL-Verbindungen achten, da diese einen wichtigen Einfluss auf die Sicherheit und Leistung des Systems hat. Daher muss es entsprechend angepasst werden, um die MySQL-Leistung zu maximieren.

So überprüfen Sie die Anzahl der Verbindungen in MySQL (Gesamtzahl der Verbindungen, aktive Anzahl, maximale Anzahl gleichzeitiger Verbindungen)

show variables like '%max_connection%'; 查看最大连接数
set global max_connections=1000;        重新设置最大连接数
<pre class="brush:bash;gutter:true;">mysql&gt; show status like &amp;#39;Threads%&amp;#39;; +-------------------+-------+ | Variable_name | Value | +-------------------+-------+ | Threads_cached | 32 | | Threads_connected | 10 | | Threads_created | 50 | | Threads_rejected | 0 | | Threads_running | 1 | +-------------------+-------+ 5 rows in set (0.00 sec)</pre><code><pre class="brush:bash;gutter:true;">&lt;code&gt;mysql&gt; show variables like &amp;#39;%max_connection%&amp;#39;;&lt;br/&gt;+-----------------------+-------+&lt;br/&gt;| Variable_name | Value |&lt;br/&gt;+-----------------------+-------+&lt;br/&gt;| extra_max_connections | |&lt;br/&gt;| max_connections | 2512 |&lt;br/&gt;+-----------------------+-------+&lt;br/&gt;2 rows in set (0.00 sec)&lt;br/&gt;&lt;/code&gt;</pre><ul class=" list-paddingleft-2"> <li><p>Threads_connected :这个数值指的是打开的连接数.</p></li> <li><p>Threads_running :这个数值指的是激活的连接数,这个数值一般远低于connected数值.</p></li> <li><p>如果Threads_connected和show processlist的结果相同,则表明当前有多少个连接。准确的来说,Threads_running是代表当前并发数</p></li> </ul> <p>查询数据库当前设置的最大连接数</p><pre class="brush:js;toolbar:false">[mysqld] max_connections = 100 </pre><p>在/etc/my.cnf里面设置数据库的最大连接数</p><pre class="brush:bash;gutter:true;">&lt;code&gt;mysql&gt; show global status like &amp;#39;Thread%&amp;#39;;&lt;br/&gt;+-------------------------+-------+&lt;br/&gt;| Variable_name | Value |&lt;br/&gt;+-------------------------+-------+&lt;br/&gt;| Threadpool_idle_threads | 0 |&lt;br/&gt;| Threadpool_threads | 0 |&lt;br/&gt;| Threads_cached | 29 |&lt;br/&gt;| Threads_connected | 13 |&lt;br/&gt;| Threads_created | 50 |&lt;br/&gt;| Threads_rejected | 0 |&lt;br/&gt;| Threads_running | 1 |&lt;br/&gt;+-------------------------+-------+&lt;br/&gt;7 rows in set (0.00 sec)&lt;br/&gt;&lt;/code&gt;</pre><p>为了确保 MySQL 服务器的稳健运行,线程数应该控制在合理的范围内。Threads_created表示创建过的线程数,通过查看Threads_created就可以查看MySQL服务器的进程状态。</p><pre class="brush:bash;gutter:true;">&lt;code&gt;mysql&gt; show variables like &amp;#39;thread_cache_size&amp;#39;;&lt;br/&gt;+-------------------+-------+&lt;br/&gt;| Variable_name | Value |&lt;br/&gt;+-------------------+-------+&lt;br/&gt;| thread_cache_size | 100 |&lt;br/&gt;+-------------------+-------+&lt;br/&gt;1 row in set (0.00 sec)&lt;br/&gt;&lt;/code&gt;</pre><p>如果我们在MySQL服务器配置文件中设置了thread_cache_size,当客户端断开之后,服务器处理此客户的线程将会缓存起来以响应下一个客户而不是销毁(前提是缓存数未达上限)。</p> <p>Threads_created表示创建过的线程数,如果发现Threads_created值过大的话,表明MySQL服务器一直在创建线程,这也是比较耗资源,可以适当增加配置文件中thread_cache_size值,查询服务器thread_cache_size的值:</p><pre class="brush:php;toolbar:false">mysql&gt; show processlist; </pre><p>命令:<code>show processlist;

如果是root帐号,你能看到所有用户的当前连接。如果是其它普通帐号,只能看到自己占用的连接。

show processlist命令只列出前100条,如果想全列出请使用show full processlist;

mysql>show status like &#39;%变量名%&#39;;

命令:show status;

Threads_connected: Dieser Wert bezieht sich auf die Anzahl der offenen Verbindungen.

  • Threads_running: Dieser Wert bezieht sich auf die Anzahl der aktivierten Verbindungen, die im Allgemeinen viel niedriger ist als der verbundene Wert.

  • Wenn die Ergebnisse von Threads_connected und show Processlist gleich sind, gibt er an, wie viele Verbindungen derzeit vorhanden sind. Um genau zu sein, stellt Threads_running die aktuelle Anzahl der Parallelität dar

  • Fragen Sie die maximale Anzahl von Verbindungen ab, die derzeit in der Datenbank eingestellt sind

    rrreee
  • Legen Sie die maximale Anzahl von Verbindungen in der Datenbank in /etc/my.cnf fest
  • rrreee

    In der Reihenfolge Um den stabilen Betrieb des MySQL-Servers sicherzustellen, sollte die Anzahl der Threads innerhalb eines angemessenen Bereichs kontrolliert werden. Threads_created gibt die Anzahl der erstellten Threads an. Durch Anzeigen von Threads_created können Sie den Prozessstatus des MySQL-Servers anzeigen.

    rrreee
  • Wenn wir thread_cache_size in der MySQL-Serverkonfigurationsdatei festlegen und der Client die Verbindung trennt, wird der Thread des Servers, der diesen Client verarbeitet, zwischengespeichert, um auf den nächsten Client zu antworten, anstatt zerstört zu werden (vorausgesetzt, die Anzahl der Caches hat die Obergrenze nicht erreicht). Limit).
  • Threads_created gibt die Anzahl der erstellten Threads an. Wenn festgestellt wird, dass der Wert „Threads_created“ zu groß ist, bedeutet dies, dass der MySQL-Server Threads erstellt hat, was ebenfalls relativ ressourcenintensiv ist. Sie können den Wert „thread_cache_size“ in der Konfigurationsdatei erhöhen entsprechend und fragen Sie den Wert des Servers thread_cache_size ab:

    rrreee
  • Befehl: show processlist; <li> <p></p>Wenn es sich um ein Root-Konto handelt, können Sie die aktuellen Verbindungen aller Benutzer sehen. Wenn es sich um ein anderes normales Konto handelt, können Sie nur die von Ihnen belegten Verbindungen sehen. </li> <li>Der Befehl „show Processlist“ listet nur die ersten 100 Elemente auf. Wenn Sie sie alle auflisten möchten, verwenden Sie bitte <code>show full processlist;<p></p>rrreee Die Variablennamen sind wie folgt:
  • Aborted_clients Die Anzahl der abgebrochenen Verbindungen, die abgebrochen sind, weil der Client die Verbindung nicht ordnungsgemäß geschlossen hat.
  • Aborted_connects Die Anzahl der fehlgeschlagenen Versuche, eine Verbindung zum MySQL-Server herzustellen.
  • Connections Anzahl der Versuche, eine Verbindung zum MySQL-Server herzustellen.
  • Created_tmp_tables Die Anzahl der impliziten temporären Tabellen, die bei Ausführung der Anweisung erstellt wurden.
  • 🎜Delayed_insert_threads Anzahl der verwendeten Prozessorthreads mit verzögerter Einfügung. 🎜🎜🎜🎜Delayed_writes Die Anzahl der mit INSERT DELAYED geschriebenen Zeilen. 🎜🎜🎜🎜Die Anzahl der Zeilen, in denen beim Schreiben mit INSERT DELAYED Fehler (z. B. doppelte Schlüsselwerte) aufgetreten sind. 🎜🎜🎜🎜Flush_commands Die Häufigkeit, mit der FLUSH-Befehle ausgeführt werden. 🎜🎜🎜🎜Handler_delete Die Häufigkeit, mit der das Löschen einer Zeile aus einer Tabelle angefordert wird. 🎜🎜🎜🎜Handler_read_first fragt ab, wie oft die erste Zeile in der Tabelle gelesen werden soll. 🎜🎜🎜🎜Handler_read_key Fordert eine Zahl an, um Zeilen basierend auf dem Schlüssel zu lesen. 🎜🎜🎜🎜Handler_read_next Fordert die Häufigkeit an, mit der eine Zeile basierend auf einem Schlüssel gelesen werden soll. 🎜
  • Handler_read_rnd fordert die Häufigkeit an, mit der eine Zeile basierend auf einer festen Position gelesen werden soll.

  • Handler_update Die Häufigkeit, mit der eine Aktualisierung einer Zeile in der Tabelle angefordert wird.

  • Handler_write Die Häufigkeit, mit der das Einfügen einer Zeile in die Tabelle angefordert wird.

  • Key_blocks_used Anzahl der Blöcke, die für das Keyword-Caching verwendet werden.

  • Key_read_requests Die Anzahl der Anfragen zum Lesen eines Schlüsselwerts aus dem Cache.

  • Key_reads Die Häufigkeit, mit der ein Schlüsselwert physisch von der Festplatte gelesen wird.

  • Key_write_requests Fordert an, wie oft ein Schlüsselwortblock in den Cache geschrieben werden soll.

  • Key_writes Die Häufigkeit, mit der ein Schlüsselwertblock physisch auf die Festplatte geschrieben wird.

  • Max_used_connections Die maximale Anzahl gleichzeitig genutzter Verbindungen.

  • Not_lushed_key_blocks Schlüsselblöcke, die sich im Schlüsselcache geändert haben, aber noch nicht auf die Festplatte geleert wurden.

  • Wiederholung dieser Aussage: „Not_lushed_delayed_rows“ gibt die Anzahl der Zeilen an, die nicht in die INSERT DELAY-Warteschlange geschrieben wurden.

  • Open_tables Anzahl der offenen Tische.

  • Open_files Anzahl der geöffneten Dateien.

  • Open_streams Die Anzahl der offenen Streams (hauptsächlich für die Protokollierung verwendet)

  • Opened_tables Die Anzahl der geöffneten Tabellen.

  • Fragen Die Anzahl der an den Server gesendeten Abfragen.

  • Slow_queries Die Anzahl der Abfragen, die länger als long_query_time dauern.

  • Threads_connected Die Anzahl der aktuell offenen Verbindungen.

  • Threads_running Anzahl der Threads, die nicht schlafen.

  • Uptime Gibt an, wie lange der Server in Sekunden funktioniert.

Das obige ist der detaillierte Inhalt vonWorauf bezieht sich die Anzahl der MySQL-Verbindungen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen