2009-04-06 29 views
7

Tôi có một quy trình chạy dài trong MySQL. Nó đã được chạy trong một tuần. Có một kết nối khác, với một bản sao chủ, nhưng tôi đã dừng chế biến nô lệ để có hiệu quả không có gì khác xảy ra.Làm cách nào để biết liệu một quá trình MySQL có bị kẹt không?

Tôi làm cách nào để biết quy trình này có đang hoạt động không? Tôi biết nó sẽ mất một thời gian dài đó là lý do tại sao tôi đặt nó trên cơ sở dữ liệu riêng của mình, nhưng điều này là dài hơn tôi dự đoán. Rõ ràng, nếu nó vẫn đang làm việc, tôi không muốn giết nó. Nếu nó được xây dựng, thì tôi không biết làm thế nào để hoàn thành công việc mà nó phải làm.

Nó đang ở trạng thái "Đang gửi dữ liệu". Bảng này là một InnoDB nhưng không có bất kỳ tham chiếu FK nào được truy vấn sử dụng. Trạng thái InnoDB không hiển thị lỗi hoặc khóa kể từ khi truy vấn bắt đầu.

Bất kỳ suy nghĩ nào được đánh giá cao.

Trả lời

3

Bạn cần phải giết nó và đưa ra các chỉ số tốt hơn.

Tôi đã làm một công việc cho một chàng trai. Đã có một bảng với khoảng 35 triệu hàng. Quy trình xử lý hàng loạt của anh ấy, giống như của bạn, đã chạy một tuần, không có kết thúc. Tôi đã thêm một số chỉ mục, thực hiện một số thay đổi đối với đơn đặt hàng và phương pháp của quy trình xử lý hàng loạt của mình và nhận toàn bộ chi tiết xuống còn khoảng một nửa rưỡi giờ. Trên máy chậm hơn.

+0

Bạn nói đúng là nó không được lập chỉ mục cũng như nó có thể. Nhưng chắc chắn nếu cải thiện các chỉ số sẽ làm cho quá trình chạy, cho phép nó chạy như là sẽ thành công, chỉ sau một thời gian dài hơn. Những gì tôi không thể nói là nếu nó là làm bất cứ điều gì cả, vào thời điểm này. – user87843

5

Hãy thử "SHOW PROCESSLIST" để xem những gì đang hoạt động.

Tất nhiên nếu bạn giết nó, có thể bạn sẽ muốn mất nhiều thời gian để quay trở lại.

+0

Hoạt động trong danh sách xử lý, trong trạng thái 'Đang gửi dữ liệu'. Số giây được kích hoạt tiếp tục tăng. Tôi chỉ không biết làm thế nào để biết nó có thực sự làm gì hay không. – user87843

+0

Kích thước tệp có thay đổi không? Ngoài ra, bạn sẽ thấy một số hiệu ứng trong SHOW STATUS (trong nhiều wrrite và cachees khác nhau). – dkretz

0

Cho những gì bạn đã nói, nó không bị kẹt. Tuy nhiên, hoàn toàn không đảm bảo rằng nó sẽ thực sự kết thúc trong bất cứ điều gì giống như một khoảng thời gian hợp lý. Thêm các dấu hiệu gần như chắc chắn sẽ giúp, và tùy thuộc vào loại truy vấn cấu trúc lại nó thành một loạt các truy vấn sử dụng bảng tạm thời có thể có thể cung cấp cho bạn một hiệu suất rất lớn. Tôi sẽ không đề nghị chờ đợi để nó có thể kết thúc.

1

Để có hiệu suất tốt hơn trên cơ sở dữ liệu có kích thước, bạn có thể muốn xem xét cơ sở dữ liệu dựa trên tài liệu như mongoDB. Nó sẽ mất nhiều không gian ổ đĩa cứng để lưu trữ cơ sở dữ liệu, nhưng tùy thuộc vào lược đồ hiện tại của bạn, bạn có thể nhận được hiệu suất tốt hơn nhiều.

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