MySQL แสดงสถานะ - ใช้งานหรือเชื่อมต่อทั้งหมด?


206

เมื่อฉันรันshow status like 'Con%'มันจะแสดงจำนวนการเชื่อมต่อซึ่งก็คือ 9972 และเติบโตอย่างต่อเนื่อง นี่เป็นจำนวนการเชื่อมต่อหรือการเชื่อมต่อที่ใช้งานทั้งหมดหรือไม่?

คำตอบ:


401

ตามเอกสารหมายถึงจำนวนรวมตลอดประวัติศาสตร์:

Connections

จำนวนความพยายามเชื่อมต่อ (สำเร็จหรือไม่) ไปยังเซิร์ฟเวอร์ MySQL

คุณสามารถดูจำนวนการเชื่อมต่อที่ใช้งานผ่านThreads_connectedตัวแปรสถานะ:

Threads_connected

จำนวนการเชื่อมต่อที่เปิดอยู่ในปัจจุบัน

mysql> show status where `variable_name` = 'Threads_connected';
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| Threads_connected | 4     |
+-------------------+-------+
1 row in set (0.00 sec)

... หรือผ่านshow processlistคำสั่ง:

mysql> show processlist;
+----+------+-----------------+--------+---------+------+-------+------------------+
| Id | User | Host            | db     | Command | Time | State | Info             |
+----+------+-----------------+--------+---------+------+-------+------------------+
|  3 | root | localhost       | webapp | Query   |    0 | NULL  | show processlist | 
|  5 | root | localhost:61704 | webapp | Sleep   |  208 |       | NULL             | 
|  6 | root | localhost:61705 | webapp | Sleep   |  208 |       | NULL             | 
|  7 | root | localhost:61706 | webapp | Sleep   |  208 |       | NULL             | 
+----+------+-----------------+--------+---------+------+-------+------------------+
4 rows in set (0.00 sec)

การเชื่อมต่อแสดงถึงผู้ใช้หรือไม่? ดังนั้นหากมีผู้ใช้ 200 คนในหน้าเว็บที่สร้างการสืบค้นฐานข้อมูลจะเป็นการเชื่อมต่อ 200 ครั้ง
Diego Queiroz

ใช่ใครบางคนสามารถชี้แจงได้ ฉันก็มีคำถามเดียวกัน นอกจากนี้ตัวแปรเหล่านี้จะถูกรีเซ็ตหลังจากบริการ MySQL ทุกรีสตาร์ทหรือหลังจากเซิร์ฟเวอร์รีบูตหรือไม่
LonelyRogue

@Diego Queiroz มันไม่ง่ายเลย หากนักพัฒนาทั้งสองให้ความสนใจอย่างใกล้ชิดและหากมีเพียง 1 ฐานข้อมูลที่จำเป็นต้องเชื่อมต่อกับผู้ใช้ต่อคนใช่แล้วแต่ละคนจะเป็นผู้ใช้ แต่เป็นไปได้ว่ามีสาธารณูปโภคอื่น ๆ ที่ทำงานอยู่หรือบริการสำรองข้อมูลที่จะต้องเชื่อมต่อด้วย
Ryan Shillington

@LonelyRogue ใช่หลังจากเซิร์ฟเวอร์รีสตาร์ททุกการเชื่อมต่อจำเป็นต้องเชื่อมต่อใหม่ โปรแกรม / ไลบรารีจำนวนมากจะเชื่อมต่ออัตโนมัติเพื่อให้ # ของการเชื่อมต่ออาจเต็มอย่างรวดเร็วโดยไม่ต้องทำอะไรอย่างชัดเจน แต่ MySQL จะไม่เก็บการเชื่อมต่ออันเก่าไว้หลังจากรีสตาร์ท
Ryan Shillington

134
SHOW STATUS WHERE `variable_name` = 'Threads_connected';

นี่จะแสดงการเชื่อมต่อที่เปิดอยู่ทั้งหมดให้คุณ


17

นี่คือจำนวนการเชื่อมต่อทั้งหมดไปยังเซิร์ฟเวอร์จนถึงตอนนี้ เพื่อค้นหาสถานะ Conection ปัจจุบันคุณสามารถใช้

mysqladmin -u -p Extended-status | grep -wi 'threads_connected \ | threads_running' | awk '{พิมพ์ $ 2, $ 4}'

สิ่งนี้จะแสดง:

Threads_connected 12

Threads_running 1  

Threads_connected: Number of connections

Threads_running: connections currently running some sql

13

หากต้องการดูรายการที่สมบูรณ์ยิ่งขึ้นคุณสามารถเรียกใช้:

show session status;

หรือ

show global status;

ดูลิงค์นี้เพื่อทำความเข้าใจการใช้งานให้ดียิ่งขึ้น

หากคุณต้องการทราบรายละเอียดเกี่ยวกับฐานข้อมูลคุณสามารถเรียกใช้:

status;


3

เพื่อตรวจสอบการเชื่อมต่อสูงสุดที่อนุญาตคุณสามารถเรียกใช้แบบสอบถามต่อไปนี้:

SHOW VARIABLES LIKE "max_connections";

เพื่อตรวจสอบจำนวนการเชื่อมต่อที่ใช้งานอยู่คุณสามารถเรียกใช้แบบสอบถามต่อไปนี้:

SHOW VARIABLES LIKE "max_used_connections";

หวังว่ามันจะช่วย



-1

ควรเป็นจำนวนการเชื่อมต่อที่ใช้งานอยู่ในปัจจุบัน เรียกใช้คำสั่งprocesslistเพื่อให้แน่ใจ

URL สำหรับการอ้างอิง: http://www.devdaily.com/blog/post/mysql/how-show-open-database-connections-mysql

แก้ไข: จำนวนการเชื่อมต่อฐานข้อมูลที่เปิดอยู่โปรดดูที่นี่จำนวนเธรดที่แท้จริง (การเชื่อมต่อ) อธิบายไว้ที่นี่!


2
ฉันพบว่าลิงก์อ้างอิงมีประโยชน์ ตัวอย่างเช่นshow status like '%onn%';เป็นข้อความค้นหาที่มีประโยชน์มาก
viddik13

1
คำตอบนี้ผิดและควรลบ ดูคำตอบอื่น ๆ
dr_

จากdev.mysql.com/doc/refman/8.0/en/ … : "จำนวนครั้งในการพยายามเชื่อมต่อ (สำเร็จหรือไม่) ไปยังเซิร์ฟเวอร์ MySQL" ไม่ใช่จำนวนการเชื่อมต่อที่ใช้งานอยู่
PYB
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.