Chúng tôi có một trang web mà sau một vài năm đã xây dựng được 10 triệu bản ghi trong bảngparagraphs_item. Đây là kết quả của rất nhiều lần di chuyển dữ liệu (có liên quan đến các đoạn văn) và hiện có rất nhiều trẻ mồ côi (có thể là 90% trong số đó).
Bản sửa đổi tham chiếu thực thể hiện có lệnh Drush để 'thanh lọc' các thực thể mồ côi. Điều này có vẻ hiệu quả - nhưng với nhiều thứ này để xem qua, có vẻ như sẽ mất rất nhiều thời gian để xem hết chúng. Cần lưu ý rằng chúng không phải mồ côi do thực thể máy chủ bị xóa. Do cách dữ liệu được di chuyển vào, các đoạn được xây dựng lại và thay thế do định nghĩa di chuyển. Chúng tôi không thể thay đổi điều này ngay bây giờ, cho đến khi có một số loại băm trên tập hợp con dữ liệu để cho biết liệu chúng tôi nên nhập hay bỏ qua.
Tôi nghi ngờ rằng điều này đang khiến truy vấn trên các biểu mẫu chỉnh sửa khi chỉnh sửa Đoạn trở nên chậm hơn theo thời gian, dẫn đến việc truy vấn đó không thể thực thi (MariaDB ngừng phản hồi). Mặc dù tất cả các trường đều được lập chỉ mục cho mỗi lược đồ Đoạn văn, nhưng hiệu quả đang giảm dần.
Ví dụ: nếu tôi thanh lọc và để nó xóa 200.000 mục - chạy một OPTIMIZE sql trên bảngparagraphs_item dường như hỗ trợ lý thuyết này. Lần chỉnh sửa đầu tiên mất 8 giây để tải một đoạn văn, sau đó gần như ngay lập tức. Vì vậy, xóa tất cả các đoạn không sử dụng là điều tôi nghĩ chúng ta nên làm. Tôi nhận thấy rằng TỐI ƯU HÓA trên InnoDB dẫn đến việc xây dựng lại chỉ mục, nhưng trong trường hợp bạn nâng cấp các phiên bản của cơ sở dữ liệu thì dữ liệu này quá lớn nên tôi nghĩ rằng nó không thể xây dựng lại ở một ngưỡng nhất định.
Có cách nào nhanh hơn để truy vấn và xóa các đoạn mồ côi ngoài thanh lọc không?