2010-07-03 37 views
8

Tôi bắt đầu một giao dịch.Tôi có thể truy xuất các truy vấn đang chờ xử lý trong một giao dịch InnoDB không?

Sau đó, tôi cần khôi phục.

Bằng cách nào đó tôi có thể nhận được danh sách các truy vấn bị "loại bỏ" theo cách này?

(ps: tất nhiên Tôi có thể đăng nhập họ trước, tôi đã tự hỏi nếu điều này có thể được thực hiện một cách "tự nhiên" hơn)

+0

Tôi nghĩ cách tự nhiên là đăng nhập trước. Nếu bạn không biết những gì giao dịch đang làm, làm thế nào bạn có thể biết rằng bạn muốn quay trở lại? –

Trả lời

1

Nếu bạn đang sử dụng InnoDB, hãy nhìn vào các InnoDB monitor và stderr. Tôi nghĩ rằng thực hành tốt nhất là lưu trữ chúng trong ứng dụng (máy chủ), vì nó sẽ không phụ thuộc vào nền tảng này.

2

Nếu bạn đang ở trên một MySQL gần đây 5.1, điều này sẽ làm việc:

HIỂN THỊ ENGINE InnoDB TÌNH TRẠNG bao gồm một danh sách các giao dịch hoạt động cho động cơ InnoDB. Mỗi là tiền tố với một id giao dịch và một quá trình id, và trông hơi như thế này:

---TRANSACTION 0 290328284, ACTIVE 0 sec, process no 3195, OS thread id 
34831 rollback of SQL statement 
MySQL thread id 18272 
<query may be here> 

Các chủ đề MySQL id sẽ tương ứng với CONNECTION_ID() của phiên của bạn, mà bạn có thể nhận được từ HIỂN THỊ ĐẦY ĐỦ processlist hoặc information_schema .processlist, vì vậy bạn có thể xác định giao dịch nào là của bạn. Bạn sẽ phải phân tích cú pháp văn bản và phân tích cú pháp truy vấn ra khỏi nó, nếu nó hiện diện.

Nếu chưa đủ, bạn có thể thử hàm SET @PROGRESS = @PROGRESS + 1 trước mỗi câu lệnh ROLLBACK, sau đó chọn SELECT @PROGRESS từ DUAL ở cuối truy vấn của bạn để tìm hiểu xem giao dịch đã diễn ra như thế nào nhấn một rollback.

+0

unluckily 'ERROR 1227 (42000): Truy cập bị từ chối; bạn cần đặc quyền SUPER cho hoạt động này' :( –

+0

hơn nữa, không có truy vấn nào:/ –

+0

Nếu truy vấn của bạn nhanh, nó có thể bị trượt quá nhanh để phương thức này hoạt động. Bạn có thể thử màn hình InnoDB theo đề xuất của Marcus, nhưng nếu truy vấn của bạn nhanh, bạn có thể cần đặt khoảng thời gian giám sát là rất nhỏ! –

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