Винаги има и други варианти :).
В моя случай използването на dump не можеше да става, тъй като ние също имаме много голяма база данни (1,2 GB, когато се намали до най-важното,>250 GB на живо). Вместо това имам куп .sql файлове, които премахват всички записи които бяха въведени чрез специфичен тест.
Имам клас DbHelper, който има тази функция за изпълнение на заявки:
public function executeOnDatabase($path_to_sql_file)
{
$sql = file_get_contents($path_to_sql_file);
$dbh = $this->getModule('Db')->dbh;
$this->debugSection('Query', $sql);
$sth = $dbh->prepare($sql);
return $sth->execute();
}
Работи като талисман и няма повече излишни разходи за провеждане на тестовете.
Актуализация:
Ако се занимавате с потребители и свързаните с тях данни, обикновено е доста лесно да се насочите към всички записи, които трябва да премахнете. Най-вероятно потребителското име и имейл са уникални и можете да ги използвате, за да получите идентификатора (първичен ключ за автоматично увеличение) на потребителя. Този идентификатор вероятно се използва в свързаните таблици. Например така:
SET @user_id = (SELECT `id` FROM `users` WHERE `username` = 'rgsfdg');
SET @email = '[email protected]';
DELETE FROM `mail_queue` WHERE `send_to` = @email;
DELETE FROM `user_settings` WHERE `user_id` = @user_id;
DELETE FROM `users` WHERE `id` = @user_id;