Hướng dẫn how do i check if a mysql query is running? - làm cách nào để kiểm tra xem truy vấn mysql có đang chạy không?

grep --line-buffered -o '".\+[^"]"' | grep --line-buffered -o '[^"]*[^"]' | while read -r line; do printf "%b" $line; done | tr "\r\n" "\275\276" | tr -d "[:cntrl:]" | tr "\275\276" "\r\n" 4

Cách nhanh nhất để xem các truy vấn MySQL/MARIADB trực tiếp là sử dụng trình gỡ lỗi. Trên Linux, bạn có thể sử dụng

grep --line-buffered -o '".\+[^"]"' | grep --line-buffered -o '[^"]*[^"]' | while read -r line; do printf "%b" $line; done | tr "\r\n" "\275\276" | tr -d "[:cntrl:]" | tr "\275\276" "\r\n"
4, ví dụ:

sudo strace -e trace=read,write -s 2000 -fp $(pgrep -nf mysql) 2>&1

Vì có rất nhiều ký tự đã thoát ra, bạn có thể định dạng đầu ra của Strace bằng đường ống (chỉ cần thêm

grep --line-buffered -o '".\+[^"]"' | grep --line-buffered -o '[^"]*[^"]' | while read -r line; do printf "%b" $line; done | tr "\r\n" "\275\276" | tr -d "[:cntrl:]" | tr "\275\276" "\r\n"
6 giữa hai lớp lót này) ở trên vào lệnh sau:

grep --line-buffered -o '".\+[^"]"' | grep --line-buffered -o '[^"]*[^"]' | while read -r line; do printf "%b" $line; done | tr "\r\n" "\275\276" | tr -d "[:cntrl:]" | tr "\275\276" "\r\n"

Vì vậy, bạn sẽ thấy các truy vấn SQL khá sạch sẽ không có thời gian, mà không cần chạm vào các tệp cấu hình.

Rõ ràng điều này sẽ không thay thế cách cho phép ghi nhật ký tiêu chuẩn, được mô tả bên dưới (liên quan đến việc tải lại máy chủ SQL).

grep --line-buffered -o '".\+[^"]"' | grep --line-buffered -o '[^"]*[^"]' | while read -r line; do printf "%b" $line; done | tr "\r\n" "\275\276" | tr -d "[:cntrl:]" | tr "\275\276" "\r\n" 7

Sử dụng các đầu dò MySQL để xem các truy vấn MySQL trực tiếp mà không cần chạm vào máy chủ. Kịch bản ví dụ:

#!/usr/sbin/dtrace -q
pid$target::*mysql_parse*:entry /* This probe is fired when the execution enters mysql_parse */
{
     printf("Query: %s\n", copyinstr(arg1));
}

Lưu tập lệnh trên vào một tệp (như

grep --line-buffered -o '".\+[^"]"' | grep --line-buffered -o '[^"]*[^"]' | while read -r line; do printf "%b" $line; done | tr "\r\n" "\275\276" | tr -d "[:cntrl:]" | tr "\275\276" "\r\n"
8) và chạy:

pfexec dtrace -s watch.d -p $(pgrep -x mysqld)

Tìm hiểu thêm: Bắt đầu với Dtraces MySQL

Gibbs Mysql Spylass

Xem câu trả lời này.

Nhật ký

Dưới đây là các bước hữu ích cho đề xuất phát triển.

Thêm các dòng này vào

grep --line-buffered -o '".\+[^"]"' | grep --line-buffered -o '[^"]*[^"]' | while read -r line; do printf "%b" $line; done | tr "\r\n" "\275\276" | tr -d "[:cntrl:]" | tr "\275\276" "\r\n"
9 hoặc toàn cầu
#!/usr/sbin/dtrace -q
pid$target::*mysql_parse*:entry /* This probe is fired when the execution enters mysql_parse */
{
     printf("Query: %s\n", copyinstr(arg1));
}
0:

[mysqld]
general_log=1
general_log_file=/tmp/mysqld.log

Đường dẫn:

#!/usr/sbin/dtrace -q
pid$target::*mysql_parse*:entry /* This probe is fired when the execution enters mysql_parse */
{
     printf("Query: %s\n", copyinstr(arg1));
}
1 hoặc
#!/usr/sbin/dtrace -q
pid$target::*mysql_parse*:entry /* This probe is fired when the execution enters mysql_parse */
{
     printf("Query: %s\n", copyinstr(arg1));
}
2 cũng có thể hoạt động tùy thuộc vào quyền tệp của bạn.

Sau đó khởi động lại MySQL/Mariadb của bạn bằng (tiền tố với

#!/usr/sbin/dtrace -q
pid$target::*mysql_parse*:entry /* This probe is fired when the execution enters mysql_parse */
{
     printf("Query: %s\n", copyinstr(arg1));
}
3 nếu cần thiết):

killall -HUP mysqld

Sau đó kiểm tra nhật ký của bạn:

tail -f /tmp/mysqld.log

Sau khi kết thúc, thay đổi

#!/usr/sbin/dtrace -q
pid$target::*mysql_parse*:entry /* This probe is fired when the execution enters mysql_parse */
{
     printf("Query: %s\n", copyinstr(arg1));
}
4 thành
#!/usr/sbin/dtrace -q
pid$target::*mysql_parse*:entry /* This probe is fired when the execution enters mysql_parse */
{
     printf("Query: %s\n", copyinstr(arg1));
}
5 (vì vậy bạn có thể sử dụng nó trong tương lai), sau đó xóa tệp và khởi động lại SQL Server:
#!/usr/sbin/dtrace -q
pid$target::*mysql_parse*:entry /* This probe is fired when the execution enters mysql_parse */
{
     printf("Query: %s\n", copyinstr(arg1));
}
6.

Hiển thị và tiêu diệt các quá trình chạy trong MySQL

Lệnh Kill chấm dứt một luồng kết nối bằng ID cùng với truy vấn hoạt động liên quan, nếu có. Sau đó, để xác định các truy vấn để xóa, bạn cần xem các quy trình trên máy chủ - và lệnh Danh sách xử lý hiển thị sẽ là một giải pháp tốt. Đây không phải là một cách thanh lịch để khắc phục các vấn đề cơ sở dữ liệu, mà là một công cụ nghỉ dưỡng cuối cùng hiệu quả. Có 4 lý do chính cho điều đó:

  • Nếu một truy vấn chạy dài giữ các giao dịch khác thực hiện truy vấn phù hợp hơn của bạn
  • Nếu một số lượng lớn các truy vấn bị lỗi chặn các truy vấn khả thi
  • Nếu có các quy trình mồ côi sau khi khách hàng bị ngắt kết nối với máy chủ
  • 'Quá nhiều thông báo kết nối'

Không có kịch bản nào trong số này là tuyệt vời, vì vậy trước khi thực hiện tiêu diệt, hãy đảm bảo các giải pháp khác đã được thử. Nhưng một khi bạn biết phương pháp tiêu diệt là cần thiết, bạn sẽ có một vài tùy chọn khác nhau. Nhưng trong hướng dẫn cụ thể này, chúng tôi sẽ tập trung vào cách thể hiện và giết chết và giết các truy vấn bị lỗi hơn bằng cách sử dụng các lệnh đơn giản. Bạn nên nhớ rằng Kill có hai công cụ sửa đổi - kết nối và truy vấn. Kết nối tiêu diệt về cơ bản giống như Kill, trong khi Kill truy vấn chỉ chấm dứt truy vấn cho ID kết nối được chỉ định và khiến bản thân kết nối vẫn còn nguyên.

MySQL hiển thị danh sách quy trình

Để giết một truy vấn, trước tiên chúng ta cần theo dõi truy vấn đang làm chậm hiệu suất - thường là trò chơi mất nhiều thời gian nhất để chạy. Đối với biện pháp đó, chúng ta cần xem bảng sẽ hiển thị chạy các truy vấn MySQL được thực hiện bởi lệnh Danh sách xử lý:

show full processlist;

Trình sửa đổi đầy đủ cho phép chúng ta xem toàn bộ văn bản truy vấn thay vì 100 ký hiệu đầu tiên chúng ta sẽ nhận được mà không có công cụ sửa đổi này. Trong cột ID, bạn sẽ thấy ID luồng kết nối của bất kỳ truy vấn hiện đang chạy nào - sau đó bạn có thể sử dụng ID này trong lệnh Kill.

Bạn cũng có thể truy xuất thông tin chi tiết về các kết nối bằng các truy vấn sau:

SELECT * FROM information_schema.PROCESSLIST p;
SELECT * FROM performance_schema.threads t;

Hướng dẫn how do i check if a mysql query is running? - làm cách nào để kiểm tra xem truy vấn mysql có đang chạy không?

Giết lệnh

Vì vậy, sau khi chúng tôi định vị, giả sử, truy vấn tốn nhiều thời gian nhất bằng cách xem lại cột thời gian, chúng tôi thực thi lệnh giết trên truy vấn mong muốn:

grep --line-buffered -o '".\+[^"]"' | grep --line-buffered -o '[^"]*[^"]' | while read -r line; do printf "%b" $line; done | tr "\r\n" "\275\276" | tr -d "[:cntrl:]" | tr "\275\276" "\r\n"
0

Ở đây, 'ID' là số truy vấn bạn cần chấm dứt.

Hướng dẫn how do i check if a mysql query is running? - làm cách nào để kiểm tra xem truy vấn mysql có đang chạy không?

Quản lý phiên trong DBForge Studio

Chúng tôi đã thấy cách xác định và tiêu diệt các truy vấn bằng cách sử dụng bảng điều khiển MySQL thông thường. Bây giờ chúng ta hãy làm điều đó trong DBForge Studio cho MySQL - các chương trình tùy chỉnh đã được xây dựng để làm cho quản trị cơ sở dữ liệu đơn giản, trực quan và đơn giản. Giả sử, chúng tôi đang sử dụng phiên bản Amazon RDS SQL và chạy nó như một người dùng chính. Vì vậy, chúng tôi chạy cùng một tập lệnh trong cửa sổ truy vấn quản trị (SQL mới ở góc trên bên trái) để lấy danh sách quy trình MySQL:

show full processlist;

hoặc chỉ đơn giản là mở cơ sở dữ liệu> Trình quản lý phiên trong menu trên.

Ngoài ra, các lệnh sau hoạt động ở đây:

  • Kill Truy vấn là một chất tương tự để giết truy vấn
  • Giết phiên là một sự tương tự để tiêu diệt kết nối
  • Giết phiên người dùng giết tất cả các phiên của người dùng được chọn trong lưới

Hướng dẫn how do i check if a mysql query is running? - làm cách nào để kiểm tra xem truy vấn mysql có đang chạy không?

Giới thiệu lý do tại sao tiêu diệt là cần thiết

Để giới thiệu vòng đời truy vấn từ đầu đến cuối, chúng ta có thể tạo và sau đó xóa nó bên trong tài liệu SQL bằng các lệnh. Đối với biện pháp đó, chúng tôi sử dụng MySQLSLAP và chạy các câu lệnh SQL (tự động tạo SQL) tự động cũng chỉ định 50 kết nối đồng thời (đồng thời = 50) trong 10000 lần (lặp = 10000).

Hướng dẫn how do i check if a mysql query is running? - làm cách nào để kiểm tra xem truy vấn mysql có đang chạy không?

Truy vấn Rogue trong Trình quản lý phiên

Sau khi chúng tôi quay lại Trình quản lý phiên và làm mới màn hình, chúng tôi có thể thấy ID quy trình '28' mà chúng tôi chỉ tạo trong MySQLSLAP. Nó đang tải rất nhiều máy chủ và không cho phép người dùng khác kết nối, trong khi các truy vấn hiện tại bị chậm lại. Vì vậy, chúng ta hãy giết nó.

Hướng dẫn how do i check if a mysql query is running? - làm cách nào để kiểm tra xem truy vấn mysql có đang chạy không?

Giết một truy vấn bằng DBForge Studio

Vì vậy, để giết truy vấn đang tải máy chủ, bạn cần quay lại cửa sổ truy vấn quản trị và chạy lệnh sau:

grep --line-buffered -o '".\+[^"]"' | grep --line-buffered -o '[^"]*[^"]' | while read -r line; do printf "%b" $line; done | tr "\r\n" "\275\276" | tr -d "[:cntrl:]" | tr "\275\276" "\r\n"
2

trong đó 28 là ID của truy vấn.

Nhưng nếu bạn đang sử dụng Amazon RDS, bạn có thể thấy thông báo "Bạn không phải là chủ sở hữu của luồng".

Hướng dẫn how do i check if a mysql query is running? - làm cách nào để kiểm tra xem truy vấn mysql có đang chạy không?

Đặc quyền

Chỉ có Quản trị viên là Superuser thực sự, trong khi đó, Master không có cùng một đặc quyền gốc. Vì vậy, trừ khi bạn muốn chạy toàn bộ quá trình trong một phiên bản MySQL không được quản lý, bạn nên chạy lệnh sau:

grep --line-buffered -o '".\+[^"]"' | grep --line-buffered -o '[^"]*[^"]' | while read -r line; do printf "%b" $line; done | tr "\r\n" "\275\276" | tr -d "[:cntrl:]" | tr "\275\276" "\r\n"
3

Trong tab đầu ra, chúng ta thấy rằng lần thử trước đó để tiêu diệt truy vấn bằng lệnh Kill đã bị cản trở bởi việc thiếu đặc quyền gốc. Nhưng một khi chúng tôi đã nhập lệnh mysql.rds_kill, hành động đã thành công.

Connection_admin hoặc siêu đặc quyền sẽ cho phép bạn giết các truy vấn không chỉ cho các kết nối của bạn, mà còn cho các kết nối của bạn. Đặc quyền System_user cũng có thể cần thiết trong một số trường hợp. Tương tự, đặc quyền quy trình cho phép bạn xem các kết nối nước ngoài ngoài bạn khi sử dụng Danh sách xử lý hiển thị.

Hướng dẫn how do i check if a mysql query is running? - làm cách nào để kiểm tra xem truy vấn mysql có đang chạy không?

Kiểm tra kết quả trong Trình quản lý phiên

Sau khi hoàn thành, chúng tôi có thể truy cập Trình quản lý phiên và kiểm tra kết quả bằng cách nhấn làm mới. Bạn sẽ nhận thấy một số truy vấn mới từ quy trình làm việc thường xuyên, nhưng truy vấn '28' lừa đảo không còn ở đó nữa.

Hướng dẫn how do i check if a mysql query is running? - làm cách nào để kiểm tra xem truy vấn mysql có đang chạy không?

Kiểm tra kết quả trong mysqlslap

Đồng thời, nếu chúng tôi truy cập MySQLSLAP, bạn sẽ thấy kết nối đó với máy chủ MySQL đã bị mất trong quá trình truy vấn. Điều này có nghĩa là truy vấn đã biến mất sau khi chúng tôi thực hiện một lệnh thích hợp.

Hướng dẫn how do i check if a mysql query is running? - làm cách nào để kiểm tra xem truy vấn mysql có đang chạy không?

Hướng dẫn video: Kiểm tra các truy vấn và quy trình đang chạy trong DBForge Studio cho MySQL

Cuối cùng, chúng tôi khuyên bạn nên xem video hiển thị chi tiết cách sử dụng DBForge Studio để xem và quản lý các quy trình chạy trên máy chủ MySQL.

Sự kết luận

Trình quản lý phiên là một phần tuyệt vời của DBForge Studio cho MySQL để thực hiện quản trị cơ sở dữ liệu của bạn. Trong giao diện người dùng thân thiện với người dùng, bạn có thể theo dõi và xử lý các quy trình thông qua các nhấp chuột đơn giản thay vì thực hiện các lệnh phức tạp. Cho dù bạn phát hiện ra một truy vấn xử lý lâu dài hoặc thông báo 'quá nhiều kết nối', hãy chắc chắn rằng người quản lý phiên sẽ giải quyết vấn đề trong chớp mắt. Thật thuận tiện cho những người đã quen với bảng điều khiển CMD thông thường và những người thích làm mọi thứ thông qua các nhấp chuột.

MYSQL IDE tiên tiến để phát triển và quản lý cơ sở dữ liệu

Tính khả dụng trong các phiên bản của DBForge Studio cho MySQL

Tính năng

Doanh nghiệp

Chuyên nghiệp

Tiêu chuẩn

Thể hiện

Làm cách nào để kiểm tra xem truy vấn SQL có đang chạy không?

Sử dụng SQL Server Profiler (Menu Công cụ) để giám sát các truy vấn thực thi và sử dụng Trình giám sát hoạt động trong Studio quản lý để xem cách kết nối và nếu kết nối của chúng chặn các kết nối khác. Lưu câu trả lời này. and use activity monitor in Management studio to see how is connected and if their connection is blocking other connections. Save this answer.

Các truy vấn MySQL đang chạy ở đâu?

Bạn có thể thực hiện truy vấn MySQL đối với cơ sở dữ liệu đã cho bằng cách mở cơ sở dữ liệu bằng phpmyadmin và sau đó nhấp vào tab SQL. Một trang mới sẽ tải, nơi bạn có thể cung cấp truy vấn mong muốn. Khi sẵn sàng nhấp vào GO để thực hiện thực thi. Trang sẽ làm mới và bạn sẽ thấy kết quả từ truy vấn bạn cung cấp.opening the database with phpMyAdmin and then clicking on the SQL tab. A new page will load, where you can provide the desired query. When ready click on Go to perform the execution. The page will refresh and you will see the results from the query you provided.

Làm cách nào để đảm bảo MySQL đang chạy?

Chúng tôi kiểm tra trạng thái với lệnh mysql trạng thái SystemCTL.Chúng tôi sử dụng công cụ mysqladmin để kiểm tra xem máy chủ MySQL có đang chạy không.Tùy chọn -U chỉ định người dùng pings máy chủ.Tùy chọn -P là mật khẩu cho người dùng.use the mysqladmin tool to check if MySQL server is running. The -u option specifies the user which pings the server. The -p option is a password for the user.

Làm cách nào để kiểm tra truy vấn MySQL?

Làm thế nào để kiểm tra các truy vấn MySQL trực tuyến ?..
Nhập truy vấn SQL của bạn vào trình chỉnh sửa, cuối cùng nhấp vào "Chạy" để thực thi nó.Kết quả truy vấn sẽ được hiển thị bên dưới trình chỉnh sửa ..
Bạn cũng có thể chỉ chạy một truy vấn được nhập trong trình soạn thảo.....
Nếu bạn muốn xuất các kết quả ở định dạng CSV, hãy nhấp vào "Xuất" ..