Tôi biết đây là một câu hỏi cũ, nhưng tôi đang tìm kiếm một câu trả lời tương tự, khi cố gắng tìm ra thời gian cập nhật của tôi cho một truy vấn 250 triệu hàng.
Nếu bạn chạy:
SHOW ENGINE INNODB STATUS \G
Sau đó trong GIAO DỊCH, tìm giao dịch được đề cập, kiểm tra phần này:
---TRANSACTION 34282360, ACTIVE 71195 sec starting index read
mysql tables in use 2, locked 2
1985355 lock struct(s), heap size 203333840, 255691088 row lock(s), undo log entries 21355084
Bit quan trọng là "hoàn tác các mục nhập nhật ký". Đối với mỗi hàng được cập nhật, trong trường hợp của tôi, nó dường như thêm một mục nhập nhật ký hoàn tác (thử chạy lại sau một vài giây và xem có bao nhiêu hàng đã được thêm vào).
Nếu bạn bỏ qua đến cuối báo cáo trạng thái, bạn sẽ thấy điều này:
Number of rows inserted 606188224, updated 251615579, deleted 1667, read 54873415652
0.00 inserts/s, 1595.44 updates/s, 0.00 deletes/s, 3190.88 reads/s
Ở đây, chúng ta có thể thấy rằng tốc độ cập nhật đang được áp dụng là 1595,44 hàng mỗi giây (mặc dù nếu bạn đang chạy song song các truy vấn cập nhật khác, thì tốc độ này có thể được tách biệt giữa các truy vấn của bạn).
Vì vậy, từ điều này, tôi biết 21m đã được cập nhật với (250m-21m) 229m hàng còn lại để đi.
229.000.000 / 1600 =143.125 giây để đi (143.125/60) / 60 =39,76 giờ để đi
Vì vậy, có vẻ như tôi có thể xoay ngón tay cái của mình trong vài ngày nữa. Trừ khi câu trả lời này sai, trong trường hợp đó, tôi sẽ cập nhật câu trả lời đó vào lúc đó!