Mysql
 sql >> база данни >  >> RDS >> Mysql

Изтрийте огромни количества данни от огромна таблица

Всяко решение, което се опитва да изтрие толкова много данни в една транзакция, ще претовари сегмента за връщане назад и ще причини много проблеми с производителността.

Добър инструмент за помощ е pt-archiver . Той извършва постепенни операции върху средни по големина партиди редове, възможно най-ефективно. pt-archiver може да копира, мести или изтрива редове в зависимост от опциите.

Документацията включва пример за изтриване на осиротели редове, което е точно вашият сценарий:

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

Изпълнението на това ще отнеме значително повече време за изтриване на данните, но няма да използва твърде много ресурси и без да прекъсва услугата на съществуващата ви база данни. Използвах го успешно, за да изчистя стотици милиони редове с остарели данни.

pt-archiver е част от Percona Toolkit за MySQL , безплатен (GPL) набор от скриптове, които помагат при общи задачи с MySQL и съвместими бази данни.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Получаване на метаданни на таблицата в MySQL

  2. Как да използвам външно пълно присъединяване в laravel 5.0?

  3. изчисления на разстояние в mysql заявки

  4. Избиране на редове, където полето е нула, като се използват PHP PDO подготвени изрази и MySQL

  5. Недостатък на производителността на композитния първичен ключ в MySQL