>  기사  >  데이터 베이스  >  mysql 연결 수는 무엇을 의미합니까?

mysql 연결 수는 무엇을 의미합니까?

WBOY
WBOY앞으로
2023-05-26 13:41:131644검색

mysql 연결 수는 데이터베이스가 동시에 허용할 수 있는 최대 고객 연결 수를 나타냅니다. MySQL 연결 수는 데이터베이스의 현재 성능을 최대화하면서 데이터베이스를 안전하게 실행하는 데 도움이 되는 구성 요소입니다. MySQL 연결 수는 데이터베이스에서 클라이언트 전송 및 처리에 영향을 줄 수 있는 중요한 구성입니다. 데이터의 양. 연결 수가 너무 적으면 연결 요청이 차단되고 시간이 초과될 수 있으며, 연결 수가 너무 많으면 많은 양의 메모리가 소비되어 성능이 저하됩니다.

mysql 연결 수 소개

데이터베이스 연결 수는 데이터베이스가 동시에 허용할 수 있는 최대 고객 연결 수입니다.

MySQL 연결 수는 데이터베이스의 현재 성능을 최대화하면서 데이터베이스를 안전하게 실행하는 데 도움이 되는 구성 요소입니다. "최대 연결"은 데이터베이스에 연결할 수 있는 클라이언트를 제어하는 ​​또 다른 용어입니다.

MySQL 연결 수 구성의 중요성은 데이터베이스 처리 및 클라이언트 데이터 전송 효율성에 직접적인 영향을 미친다는 것입니다. MySQL 연결 수가 너무 적으면 연결 요청이 차단되고 타임아웃이 발생할 수 있으며, MySQL 연결 수가 너무 많으면 많은 양의 메모리를 차지하여 성능이 저하될 수 있습니다. 따라서 MySQL 연결 개수를 합리적으로 설정해야 합니다.

MySQL 연결 수는 MySQL 구성 파일 my.cnf를 통해 조정하거나 다음 MySQL 명령을 사용하여 동적으로 조정할 수 있습니다.

SET GLOBAL max_connections=300;

위 명령은 최대 MySQL 연결 수를 300으로 설정할 수 있습니다. 해당 my.cnf에서 설정할 수 있습니다. 파일에서 이 매개변수를 설정합니다.

max_connections=300

MySQL 연결 수는 다음 MySQL 명령으로 확인할 수 있습니다.

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

이 문장은 다음과 같이 다시 작성할 수 있습니다. VW 시스템에서는 최대 동시에 123개의 연결이 MySQL에 액세스할 수 있습니다. 또한 시스템의 현재 최대 연결 수가 합리적인지 평가하는 데 도움이 됩니다.

  • 값이 높으면 시스템에 동시에 MySQL에 액세스하는 클라이언트가 많을 수 있음을 나타냅니다. , MySQL의 최대 연결 수를 조정하는 것이 가장 좋습니다.

  • 값이 작으면 시스템의 사용 가능한 리소스를 완전히 활용할 수 없음을 나타냅니다. MySQL 연결.

MySQL 연결 수는 시스템의 보안 및 성능에 중요한 영향을 미치므로 주의가 필요합니다. 따라서 MySQL 성능을 최대화하려면 적절하게 조정해야 합니다.

Mysql에서 연결 수를 확인하는 방법(총 연결 수, 활성 수, 최대 동시 수)

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: 이 값은 열린 연결 수를 나타냅니다.

  • Threads_running: 이 값은 활성화된 연결 수를 나타내며 일반적으로 연결 값보다 훨씬 낮습니다.

  • Threads_connected와 show processlist의 결과가 동일하면 현재 연결 수를 나타냅니다. 정확하게 말하면 Threads_running은 현재 동시성 수를 나타냅니다

  • 현재 데이터베이스에 설정된 최대 연결 수를 쿼리합니다

    rrreee
  • /etc/my.cnf
  • rrreee

    에서 데이터베이스의 최대 연결 수를 설정합니다. MySQL 서버의 안정적인 운영을 위해서는 스레드 수를 합리적인 범위 내에서 제어해야 합니다. Threads_created는 생성된 스레드 수를 나타냅니다. Threads_created를 보면 MySQL 서버의 프로세스 상태를 볼 수 있습니다.

    rrreee
  • MySQL 서버 구성 파일에 thread_cache_size를 설정하면 클라이언트 연결이 끊어질 때 이 클라이언트를 처리하는 서버의 스레드가 파괴되지 않고 다음 클라이언트에 응답하기 위해 캐시됩니다(캐시 수가 상한선에 도달하지 않은 경우) 한계).
  • Threads_created는 생성된 스레드 수를 나타냅니다. Threads_created 값이 너무 큰 것으로 확인되면 MySQL 서버가 상대적으로 리소스 집약적인 스레드를 생성했음을 나타냅니다. 구성 파일에서 thread_cache_size 값을 늘릴 수 있습니다. 적절하게 서버의 값을 쿼리합니다. thread_cache_size:

    rrreee
  • 명령: show processlist; <li> <p></p>루트 계정인 경우 모든 사용자의 현재 연결을 볼 수 있습니다. 다른 일반 계정인 경우에는 본인이 사용하고 있는 연결만 볼 수 있습니다. </li> <li>show processlist 명령은 처음 100개 항목만 나열합니다. 모두 나열하려면 <code>show full processlist를 사용하세요. <p></p>rrreee 명령: show status;<li> <p>rrreee</p> </li> <li> <p></p> Aborted_clients 클라이언트가 연결을 제대로 닫지 않아 중단되어 중단된 연결 수입니다. </li> <li> <p></p>Aborted_connects MySQL 서버 연결 시도에 실패한 횟수입니다. </li> <li> <p></p>Connections MySQL 서버에 연결을 시도한 횟수입니다. </li> <li> <p></p>Created_tmp_tables 문이 실행될 때 생성된 암시적 임시 테이블 수입니다. 🎜🎜🎜🎜Delayed_insert_threads 사용 중인 지연 삽입 프로세서 스레드 수입니다. 🎜🎜🎜🎜Delayed_writes INSERT DELAYED로 작성된 행 수입니다. 🎜🎜🎜🎜INSERT DELAYED 쓰기 중 오류(중복 키 값 등)가 발생한 행 수입니다. 🎜🎜🎜🎜Flush_commands FLUSH 명령이 실행된 횟수입니다. 🎜🎜🎜🎜Handler_delete 테이블에서 행 삭제를 요청한 횟수입니다. 🎜🎜🎜🎜Handler_read_first는 테이블의 첫 번째 행을 읽는 횟수를 요청합니다. 🎜🎜🎜🎜Handler_read_key 키를 기반으로 행을 읽으려면 숫자를 요청합니다. 🎜🎜🎜🎜Handler_read_next 키를 기준으로 행을 읽는 횟수를 요청합니다. 🎜</li> <li><p>Handler_read_rnd는 고정된 위치를 기준으로 한 줄을 읽는 횟수를 요청합니다. </p></li> <li><p>Handler_update 테이블의 행 업데이트가 요청된 횟수입니다. </p></li> <li><p>Handler_write 테이블에 행을 삽입하도록 요청한 횟수입니다. </p></li> <li><p>Key_blocks_used 키워드 캐싱에 사용되는 블록 수입니다. </p></li> <li><p>Key_read_requests 캐시에서 키 값을 읽기 위한 요청 수입니다. </p></li> <li><p>Key_reads 디스크에서 키 값을 물리적으로 읽는 횟수입니다. </p></li> <li><p>Key_write_requests 키워드 블록을 캐시에 써야 하는 횟수를 요청합니다. </p></li> <li><p>Key_writes 키-값 블록이 디스크에 물리적으로 기록되는 횟수입니다. </p></li> <li><p>Max_used_connections 동시에 사용되는 최대 연결 수입니다. </p></li> <li><p>Not_flushed_key_blocks 키 캐시에서 변경되었지만 아직 디스크에 플러시되지 않은 키 블록입니다. </p></li> <li><p>이 문장을 다시 표현하면 다음과 같습니다. "Not_flushed_delayed_rows"는 INSERT DELAY 큐에 기록되지 않은 행 수를 나타냅니다. </p></li> <li><p>Open_tables 열려 있는 테이블 수입니다. </p></li> <li><p>Open_files 열린 파일 수입니다. </p></li> <li><p>Open_streams 오픈 스트림 수(주로 로깅에 사용) </p></li> <li><p>Opened_tables 오픈된 테이블 수. </p></li> <li><p>Questions 서버로 전송된 쿼리 수입니다. </p></li> <li><p>Slow_queries long_query_time보다 오래 걸리는 쿼리 수입니다. </p></li> <li><p>Threads_connected 현재 열려 있는 연결 수입니다. </p></li> <li><p>Threads_running 절전 모드가 아닌 스레드 수입니다. </p></li> <li><p>Uptime 서버가 작동한 시간(초)입니다. </p></li>

위 내용은 mysql 연결 수는 무엇을 의미합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제