2012-04-27 27 views
120

có nghĩa là gì nếu truy vấn Mysql:Điều gì có nghĩa là khi MySQL ở trạng thái "Đang gửi dữ liệu"?

SHOW PROCESSLIST; 

lợi nhuận "Đang gửi dữ liệu" trong cột Nhà nước?

Tôi tưởng tượng nó có nghĩa là truy vấn đã được thực thi và MySQL đang gửi dữ liệu “kết quả” cho khách hàng nhưng tôi tự hỏi tại sao nó lại tốn quá nhiều thời gian (lên đến một giờ).

Cảm ơn bạn.

+1

Điều đó có nghĩa là nó đang truyền dữ liệu từ quá trình của nó đến khách hàng. Nếu bạn thấy 'Đang gửi dữ liệu' như là một bước cần có thời gian sau khi bạn chạy' SHOW PROFILE' thì thời gian tiêu thụ thực sự thuộc về bước trước đó. –

+0

Thật không may là tôi nhận được một tin nhắn, tính năng 'SHOW PROFILE' bị tắt, tôi phải xây dựng MySQL với 'enable-profiling'. Nhưng cảm ơn bạn đã trả lời. – user1345414

+0

Và đó là câu hỏi bổ sung. Các truy vấn đã hoàn thành nội bộ, nó là một vấn đề của các nguồn lực để truyền tải như mạng hoặc xe buýt? – user1345414

Trả lời

182

Đây là trạng thái khá gây hiểu lầm. Nó nên được gọi là "đọc và lọc dữ liệu".

Điều này có nghĩa là MySQL có một số dữ liệu được lưu trữ trên đĩa (hoặc trong bộ nhớ) chưa được đọc và gửi đi. Nó có thể là chính bảng, chỉ mục, bảng tạm thời, đầu ra được sắp xếp, v.v.

Nếu bạn có bảng bản ghi 1M (không có chỉ mục) mà bạn chỉ cần một bản ghi, MySQL sẽ vẫn xuất hiện trạng thái "gửi dữ liệu" trong khi quét bảng, mặc dù thực tế nó chưa gửi bất cứ điều gì.

+10

Tài liệu giải thích thêm rằng lý do có nhiều khả năng là do có nhiều thời gian truy cập đĩa: http://dev.mysql.com/doc/refman/5.0/en/general-thread-states.html –

+1

Và những gì nếu MySQL là "gửi dữ liệu" trong khi sử dụng CPU 99%, với rất ít đĩa I/O? – rustyx

+0

@RustyX Làm thế nào về dữ liệu đã có trong bộ đệm trong RAM và nó đang phân loại một số 100k hoặc 1M của hàng? – sjas

14

Trong trạng thái này:

Sợi chỉ là đọc và xử lý hàng cho một tuyên bố CHỌN, và gửi dữ liệu cho khách hàng.

Vì các hoạt động xảy ra trong trạng thái này có xu hướng thực hiện lượng lớn truy cập đĩa (đọc).

Đó là lý do tại sao phải mất nhiều thời gian để hoàn thành và do đó là trạng thái dài nhất chạy qua các đời của một truy vấn cụ thể.

Các vấn đề liên quan