Tôi đã sao chép cấu trúc của một bảng lớn với (đó là bảng InnoDB btw)
CREATE TABLE tempTbl LIKE realTbl
Sau đó, tôi đã thay đổi một chỉ mục và điền vào nó để tôi có thể chạy thử nghiệm. Điền vào nó đã được thực hiện bằng cách sử dụng:
INSERT INTO `tmpTbl`
SELECT *
FROM `realTbl`
Việc này mất quá nhiều thời gian, vì vậy tôi muốn dừng bài kiểm tra này. 1
Tôi đã giết quá trình trong khi nó ở trạng thái "Gửi dữ liệu": hiện tại nó đã bị "giết" và vẫn ở trạng thái "Gửi dữ liệu".
Tôi biết một số quy trình bị giết cần hoàn nguyên các thay đổi và do đó có thể mất nhiều thời gian để giết so với thời gian chúng chạy, nhưng tôi không thể tưởng tượng được tại sao bây giờ lại xảy ra trường hợp này: Toàn bộ bảng cần phải được dọn sạch.
Tôi tò mò về những gì đang xảy ra sẽ dừng / giết một truy vấn đơn giản như thế này rất lâu. Để cung cấp cho bạn một số số: phần chèn đã chạy trong một hoặc 3 giờ, giờ đây, phần sát đã gần với 5 7. Có vẻ như nó chạy một cái DELETE
cho mọi thứ INSERT
nó đã làm, và việc xóa mất nhiều thời gian hơn thì chèn đã làm gì? Điều đó thậm chí sẽ hợp lý?
.
1) Tôi chưa biết tại sao (đó là một bảng lớn, 10 triệu hàng, nhưng sẽ mất nhiều thời gian như vậy?), Nhưng đó là một điều khác / không phải là một phần của câu hỏi này :). Có thể là bài kiểm tra của tôi có thể thông minh hơn hoặc nhanh hơn, nhưng đó không phải là câu hỏi bây giờ: D