Trong PostgreSQL Tôi có một truy vấn như sau đó sẽ xóa 250k hàng từ một bảng hàng 1m:Xóa nhiều hàng mà không cần khóa chúng
DELETE FROM table WHERE key = 'needle';
Các truy vấn mất hơn một giờ để thực hiện và trong thời gian đó, hàng bị ảnh hưởng bị khóa để viết. Điều đó không tốt bởi vì nó có nghĩa là nhiều truy vấn cập nhật phải chờ truy vấn xóa lớn để hoàn thành (và sau đó chúng sẽ thất bại vì các hàng biến mất từ dưới chúng nhưng điều đó là ok). Tôi cần một cách để phân đoạn truy vấn lớn này thành nhiều phần để chúng có thể gây nhiễu ít nhất với các truy vấn cập nhật nhất có thể. Ví dụ: nếu truy vấn xóa có thể được chia thành từng phần với 1000 hàng trong chúng thì các truy vấn cập nhật khác sẽ phải chờ truy vấn xóa liên quan đến 1000 hàng.
DELETE FROM table WHERE key = 'needle' LIMIT 10000;
Truy vấn đó sẽ hoạt động tốt, nhưng cũng không tồn tại ở bưu điện.
Hoàn hảo! (Tôi không thể tin là mình không tự nghĩ về điều này) –