Quá trình tiêu diệt MySQL vẫn đang chạy

Khi nói đến việc loại bỏ các quy trình và truy vấn của MySQL, có một số điều bạn có thể thử. Dưới đây là một số cách tốt nhất để tiêu diệt các truy vấn và quy trình của MySQL. Lưu ý nhanh, nếu bạn sử dụng nhà cung cấp dịch vụ lưu trữ WooC Commerce tốt, bạn sẽ không phải điều chỉnh thủ công các quy trình MySQL để giữ cho trang web của mình trực tuyến

  1. Biết danh sách các quy trình
  2. Giết một chủ đề cụ thể
  3. Sử dụng CONCAT để tiêu diệt nhiều quy trình MySQL
  4. Giết tất cả các quy trình
  5. Sử dụng Tập lệnh PHP
  6. Sử dụng thủ tục được lưu trữ để loại trừ các quy trình hiện tại
  7. Thủ tục được lưu trữ để giết các quy trình của một người dùng cụ thể

1. Biết danh sách các Quy trình

Chạy lệnh sau

show processlist; 

Điều này sẽ hiển thị tất cả các kết nối mở đến máy chủ. Nó bao gồm ID luồng, Người dùng, Máy chủ, DB, Thời gian, Trạng thái, Thông tin, v.v.

Trước khi thực hiện lệnh này, hãy đảm bảo rằng bạn có quyền quản trị viên. Lệnh xuất ra các truy vấn hiện đang chạy

2. Giết một chủ đề cụ thể

Nếu bạn biết “ID luồng” thì bạn có thể hủy luồng cụ thể đó bằng lệnh kill

Chỉ cần thực hiện lệnh sau

 kill thread_id;

Ví dụ: nếu ID luồng là 33, bạn có thể thực hiện lệnh sau để tắt luồng này

 kill 33;

3. Sử dụng CONCAT để giết nhiều Quy trình MySQL

Vì MySQL không có lệnh kill lớn, bạn có thể sử dụng “concat” để tạo các lệnh kill từ bảng Process list

Có nhiều cách bạn có thể làm điều này

Phương pháp 1

Chạy lệnh sau

 mysql> SELECT GROUP_CONCAT(CONCAT('KILL ',id,';') SEPARATOR ' ') 
FROM information_schema.processlist WHERE user <> 'system user'; 

Điều này sẽ giết tất cả các truy vấn MySQL của bạn

Phương pháp 2

Bạn có thể tạo một bảng từ danh sách quy trình

Chạy

 SELECT * FROM processlist\G; 

Bây giờ, sử dụng như sau

 SELECT CONCAT('KILL ',id,';') AS kill_list FROM information_schema.processlist WHERE user='root' AND info = 'SELECT * FROM processlist';

Điều này sẽ cho một đầu ra trông giống như thế này

+------------------------+
| kill_list              |
+------------------------+
| KILL 1;                |
| KILL 2;                |
| KILL 3;                |
| KILL 4;                |
+------------------------+

Bây giờ bạn có thể sử dụng một trong các cách sau để giết tất cả các chủ đề

1. Bằng cách chỉnh sửa văn bản theo cách thủ công

Sao chép đầu ra này trong tệp văn bản và xóa dấu gạch ngang, dấu cộng và dấu gạch ngang. Sau đó chạy tất cả các lệnh kill trong MySQL. Điều này sẽ giết tất cả các quá trình

2. Bằng cách sử dụng một lệnh để tạo một tệp đầu ra

Chạy lệnh sau

 SELECT CONCAT('KILL ',id,';') AS run_this FROM information_schema.processlist WHERE user='root' 
AND info = 'SELECT * FROM processlist' INTO OUTFILE '/tmp/kill_list.txt' 

Thao tác này sẽ tạo một tệp văn bản có tên “kill_list”. Bạn chỉ cần xóa dòng đầu tiên khỏi tệp văn bản (kill_list) vì đây không phải là lệnh MySQL hợp lệ

Bây giờ bạn có thể chạy cái này trong MySQL. Nó sẽ thực thi tất cả các câu lệnh trong tệp sẽ giết tất cả các luồng

Bạn cũng có thể nhập tệp này để hủy nhiều truy vấn MySQL cùng một lúc

________số 8

4. Giết tất cả các quy trình

Bạn có thể thử sử dụng truy vấn sau để hủy tất cả các quy trình

 mysql -e "show full processlist;" -ss | awk '{print "KILL "$1";"}'| mysql 

5. Sử dụng tập lệnh PHP

Bạn có thể sử dụng tập lệnh PHP như sau

 kill thread_id;
0

6. Sử dụng thủ tục được lưu trữ để loại trừ các quy trình hiện tại

Bạn có thể tạo một thủ tục được lưu trữ để hủy từng quy trình một mà không hủy các quy trình hiện đang được sử dụng

 kill thread_id;
1

Bạn có thể gọi nó bằng cách sử dụng

 kill thread_id;
2

7. Thủ tục được lưu trữ để giết các quy trình của một người dùng cụ thể

Bạn có thể tạo một thủ tục được lưu trữ có thể hủy tất cả các quy trình của một người dùng cụ thể

 kill thread_id;
3

Bạn có thể gọi thủ tục bằng cách đề cập đến tên người dùng của người dùng cơ sở dữ liệu có quy trình bạn muốn hủy. Giả sử người dùng là 'bob', bạn có thể sử dụng

 kill thread_id;
4

 

 

Vì vậy, bạn có thể tắt các truy vấn, quy trình hoặc luồng của MySQL bằng cách chạy các lệnh này. Bạn có thể nhận thấy lệnh “show processlist” hữu ích như thế nào trong việc xác định các phương thức cần loại bỏ. Vì không có một lệnh nào trong MySQL để hủy tất cả các quy trình, chúng tôi phải giải quyết bằng một giải pháp thay thế. Chúng tôi hy vọng bài viết này đã giúp bạn. Nếu bạn có cách tiếp cận mới, hãy tham gia thảo luận trong phần bình luận.  

Các quy trình MySQL không cần thiết có thể gây ra các vấn đề về hiệu suất trên hệ thống của bạn. Theo thời gian, các luồng đang hoạt động chồng chất và làm ngưng trệ máy chủ của bạn, ngăn người dùng truy cập vào các bảng và thực hiện các yêu cầu

Khi mức sử dụng tài nguyên quá cao, bạn có thể cần phải tắt các tiến trình MySQL. Hướng dẫn này sẽ chỉ cho bạn cách xác định các quy trình MySQL và hủy một quy trình

tutorial on How to kill mysql process command line

điều kiện tiên quyết

  • Truy cập vào cửa sổ dòng lệnh/thiết bị đầu cuối
  • Đã cài đặt MySQL hoặc MariaDB
  • Người dùng có quyền sudo hoặc quyền root

Cách tìm danh sách quy trình MySQL

Trước khi bạn có thể định vị một tiến trình và giết nó, bạn phải truy cập máy chủ MySQL cục bộ hoặc từ xa. Để đăng nhập vào tài khoản cục bộ MySQL của bạn với quyền root, hãy mở terminal và nhập

 kill thread_id;
5

Nhập mật khẩu khi được nhắc. Khi trình bao MySQL tải, dấu nhắc hiển thị

 kill 33;
3

Để định vị quá trình cần hủy hoặc chấm dứt, hãy tải danh sách có tất cả các phiên đang hoạt động.
Trong MySQL shell, hãy sử dụng truy vấn này.

 kill thread_id;
6

Đầu ra hiển thị các thông tin sau

displaying all mysql processes output

Bạn có thể có nhiều mục hơn trong danh sách của mình. Lưu ý

 kill 33;
4 của quy trình bạn muốn hủy. Cột
 kill 33;
5 giúp bạn xác định quy trình chạy lâu nhất. Đó thường là những thứ bạn muốn chấm dứt trước

Làm thế nào để giết quá trình MySQL

Để hủy một phiên MySQL khỏi danh sách, hãy sử dụng truy vấn

 kill 33;
6 theo sau chuỗi
 kill 33;
4 mà bạn đã lưu ý trước đó

 kill thread_id;
7

Shell hiển thị trạng thái truy vấn và số lượng hàng bị ảnh hưởng. “Truy vấn OK, 0 hàng bị ảnh hưởng (0. 06 giây). ” Truy vấn này kết thúc kết nối đến cơ sở dữ liệu, bao gồm tất cả các hoạt động liên quan đến kết nối

Hãy nhớ rằng người dùng phải có đặc quyền thích hợp để có thể giết một tiến trình

Cách tiêu diệt tất cả các quy trình MySQL cho một người dùng cụ thể

MySQL không có một lệnh duy nhất để giết tất cả các quy trình

Để hủy tất cả các quy trình cho một người dùng cụ thể, hãy sử dụng

 kill thread_id;
61 để tạo tệp có danh sách các luồng và câu lệnh. Trong trường hợp của chúng tôi, chúng tôi đã nhập root với tư cách là người dùng. Để chỉ định người dùng khác, hãy thay thế root bằng tên người dùng mong muốn

 kill thread_id;
9

Truy vấn này đã tạo một tệp có tên process_list. txt. Bạn có thể chỉnh sửa tên theo ý thích của bạn. Mở tệp và xem lại xem đó có phải là các quy trình bạn muốn hủy không. Khi bạn đã sẵn sàng, hãy nhập

 kill 33;
0

Bạn có thể thêm điều kiện vào truy vấn để thu hẹp danh sách các quy trình trong tệp đầu ra. Ví dụ: thêm

 kill thread_id;
62 vào lệnh để chỉ bao gồm các quy trình có giá trị thời gian cao hơn 1000

 kill 33;
2

Phần kết luận

Hướng dẫn này đã vạch ra cách dễ nhất để tìm và tiêu diệt các tiến trình MySQL. Đảm bảo rằng bạn luôn kiểm tra kỹ xem bạn đang kết thúc quy trình nào trước khi chạy truy vấn MySQL

Làm thế nào giết quá trình máy chủ MySQL?

Cách tắt processlist trong MySQL .
Để bắt đầu, hãy đăng nhập vào cơ sở dữ liệu
Sau đó, chạy lệnh sau để xem id quá trình, trạng thái cũng như truy vấn gây ra sự cố giữ. hiển thị danh sách quy trình đầy đủ;
Next, choose the process id and run the KILL command to kill processlist MySQL as seen below: KILL .

Làm cách nào để hủy dòng lệnh truy vấn MySQL?

Giả sử bạn đang nhập một truy vấn dòng lệnh vào cơ sở dữ liệu MySQL và bạn cần hủy bỏ và bắt đầu lại. Từ bash shell, bạn chỉ cần gõ ctrl-c và nhận được lời nhắc mới. Trong MySQL, ctrl-c sẽ thoát khỏi ứng dụng khách và đưa bạn trở lại trình bao.