mysql: ดูการเชื่อมต่อที่เปิดอยู่ทั้งหมดไปยังฐานข้อมูลที่ระบุหรือไม่


123

ด้วยสิทธิ์ระดับผู้ดูแลระบบ im mysql ฉันจะดูการเชื่อมต่อที่เปิดทั้งหมดไปยังฐานข้อมูลเฉพาะในเซิร์ฟเวอร์ของฉันได้อย่างไร

คำตอบ:


169

คำสั่งคือ

SHOW PROCESSLIST

แต่น่าเสียดายที่มีพารามิเตอร์กวดขันไม่มี หากคุณต้องการคุณสามารถทำได้จากบรรทัดคำสั่ง:

mysqladmin processlist | grep database-name

23
mysqladmin -i 1 processlistเพื่อรีเฟรชเอาต์พุตทุกวินาที
chanux

5
หากคุณต้องการรับรองความถูกต้องmysqladmin --user=[USERNAME] --password=[PASSWORD] -i 1 processlist
Tom Jenkinson

2
@TomJenkinson ฉันมักจะไม่ใช้มันเพราะฉันไม่ต้องการให้รหัสผ่านปรากฏในประวัติบรรทัดคำสั่งหรือในรายการกระบวนการ (ps aux)
David Rabinowitz

เป็นอีกทางเลือกหนึ่งของ @chanux พร้อมด้วย imho ที่สะอาดกว่าเล็กน้อยwatch -n1 mysqladmin processlist
Josiah

64

คุณสามารถใช้:

mysql> show status like '%onn%';
+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| Aborted_connects         | 0     |
| Connections              | 303   |
| Max_used_connections     | 127   |
| Ssl_client_connects      | 0     |
| Ssl_connect_renegotiates | 0     |
| Ssl_finished_connects    | 0     |
| Threads_connected        | 127   |
+--------------------------+-------+
7 rows in set (0.01 sec)

อย่าลังเลที่จะใช้ Mysql-server-status-parametersหรือToo-many-connections-problem


2
มันไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่อยู่แล้วทำไมถึง%onn%เป็นเช่นนั้น%conn%?
Pacerier

แน่นอนว่าคุณสามารถใช้% conn% แทน% onn% ได้ และใช่ส่วนใหญ่ไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่ สำหรับความไวของตัวพิมพ์โปรดดูdev.mysql.com/doc/refman/5.0/en/…
wiseland

1
สิ่งนี้แสดงข้อมูลทางสถิติ / ประวัติ คำถามเกี่ยวกับการเชื่อมต่อที่เปิดอยู่ในปัจจุบัน
Matthew

32

ที่ควรทำเคล็ดลับสำหรับ MySQL เวอร์ชันล่าสุด:

SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST WHERE DB = "elstream_development";


3
นี้เป็นเพียงคนเดียวที่ถูกต้องนอกเหนือจากการเลือกหนึ่งซึ่งสามารถทำได้โดยใช้ SQL mysqladminแทน
dresende

2
ขอบคุณนี่คือคำตอบที่ฉันต้องการ

1
คำตอบนี้มีประโยชน์มากแสดงการเชื่อมต่อและคำถามทั้งหมดซึ่งจะช่วยได้มากในกรณีของฉัน
Hammad Khan

10

คุณสามารถเรียกใช้คำสั่งแสดงสถานะ MySQL

แสดงสถานะเช่น 'Conn%';

สำหรับข้อมูลเพิ่มเติมโปรดอ่านแสดงการเชื่อมต่อฐานข้อมูลแบบเปิด


3
ขออภัยโซลูชันนี้แสดงเพียงค่าเดียว ฉันชอบคำสั่ง "แสดงสถานะเช่น '% onn%';" ซึ่งอยู่ในหน้าเว็บอ้างอิงเดียวกัน
Raul Luna

@RaulLuna มันเป็นกรณีตายแล้วทำไม%onn%แทน%conn%?
Pacerier

@Pacerier มีมากกว่านั้น: ในกรณีที่คำ "connection" ปรากฏเป็นส่วนหนึ่งของคำที่ใหญ่กว่า (เช่น max_used_connections เป็นต้น) แน่นอนคุณสามารถใช้สถานะการแสดงเช่น '% conn%'
Raul Luna

@RaulLuna หากคำ "เชื่อมต่อ" ปรากฏเป็นส่วนหนึ่งของคำที่ใหญ่กว่าทั้งสอง%onn%และ%conn%จะยังคงใช้งานได้ ไม่แตกต่าง.
Pacerier

1
เหตุใดจึงมีการทำเครื่องหมายนี้ มันไม่แสดงการเชื่อมต่อที่เปิดอยู่ในปัจจุบัน
เจมส์


3

ใน MySql แบบสอบถามต่อไปนี้จะแสดงจำนวนการเชื่อมต่อที่เปิดอยู่ทั้งหมด:

show status like 'Threads_connected';

2

หากคุณใช้ระบบ * nix ให้พิจารณาmytopด้วย

หากต้องการ จำกัด ผลลัพธ์ไว้ที่ฐานข้อมูลเดียวให้กด "d" เมื่อกำลังทำงานจากนั้นพิมพ์ชื่อฐานข้อมูล


แอพนี้ไม่ใช้show processlistภายในด้วยเหรอ?
Pacerier

ฉันเชื่อว่ามันทำได้ mytop นำเสนอข้อมูลอย่างเรียบร้อยพร้อมตัวเลือกการกรอง ที่ผ่านมาฉันได้ใช้ประโยชน์มากมายในขณะที่วิเคราะห์ปัญหาด้านประสิทธิภาพ นอกจากนี้ยังเร็วกว่าในกรณีฉุกเฉินในการเข้าสู่ระบบเรียกใช้ mytop และดูว่าเกิดอะไรขึ้นทันที เหมือนกับการวิ่ง "ด้านบน"
Pryo

การใช้ส่วนประกอบมากขึ้นจะทำให้คุณได้รับข้อบกพร่องมากขึ้น เนื่องจากshow processlistผลลัพธ์เป็นที่น่าพอใจทำไมคุณถึงต้องการmytop?
Pacerier

2
ทำไมต้องใช้ "top" เมื่อ "ps aux" พอใจ
Pryo

-1

ในเบราว์เซอร์แบบสอบถามคลิกขวาที่ฐานข้อมูลและเลือกรายการกระบวนการ


เป็นข้อมูลเฉพาะสำหรับลูกค้า
Nino Škopac
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.