Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Xóa một lượng lớn dữ liệu khỏi bảng khổng lồ

Bất kỳ giải pháp nào cố gắng xóa quá nhiều dữ liệu trong một giao dịch sẽ áp đảo phân đoạn khôi phục và gây ra nhiều vấn đề về hiệu suất.

Một công cụ hữu ích để trợ giúp là pt-archiver . Nó thực hiện các hoạt động gia tăng trên các lô hàng có kích thước vừa phải, càng hiệu quả càng tốt. pt-archiver có thể sao chép, di chuyển hoặc xóa các hàng tùy thuộc vào tùy chọn.

Tài liệu bao gồm một ví dụ về cách xóa các hàng không có, đây chính xác là tình huống của bạn:

pt-archiver --source h=host,D=db,t=VALUE --purge \
  --where 'NOT EXISTS(SELECT * FROM `KEY` WHERE key_id=`VALUE`.key_id)' \
  --limit 1000 --commit-each

Việc thực thi điều này sẽ mất nhiều thời gian hơn để xóa dữ liệu, nhưng nó sẽ không sử dụng quá nhiều tài nguyên và không làm gián đoạn dịch vụ trên cơ sở dữ liệu hiện có của bạn. Tôi đã sử dụng nó thành công để xóa hàng trăm triệu hàng dữ liệu lỗi thời.

pt-archiver là một phần của Bộ công cụ Percona cho MySQL , một bộ tập lệnh (GPL) miễn phí giúp thực hiện các tác vụ phổ biến với MySQL và cơ sở dữ liệu tương thích.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Toán tử MINUS trong MySQL?

  2. Trường 'id' không có giá trị mặc định?

  3. mysqli ::mysqli ():(HY000 / 2002):Không thể kết nối với máy chủ MySQL cục bộ thông qua socket 'MySQL' (2)

  4. Loại nào bạn sẽ ánh xạ BigDecimal trong Java / Hibernate trong MySQL?

  5. Làm thế nào để chèn dữ liệu json vào bảng?