2013-07-20 11 views
7

Używam obciętego tabela nazwa_tabeli; na stole z około 1 milionem wierszy, ale trwa to zbyt długo, działa od ostatnich 3 godzin.skrócić stół bardzo długo, czy to normalne?

Czy to normalne? Czy możesz zaproponować inny sposób usunięcia wszystkich wierszy z tabeli, co może być szybsze?

+2

Który silnik? MYISAM lub InnoDB – hjpotter92

+0

Sprawdź również: http://bugs.mysql.com/bug.php?id=68184 – hjpotter92

+0

Czy jest jakiś inny proces, który obecnie korzysta z tabeli? – Ben

Odpowiedz

30

Obetnij przyzwyczajenie pracować w niektórych przypadkach, takich jak

gdy masz rodzaj indeksu rzeczy i kilka kluczy obcych

Łatwy sposób zasugerować jest

RENAME TABLE table_name TO t1; 

CREATE TABLE table_name LIKE t1; 

DROP TABLE t1; 

lub można również użyć DELETE FROM table_name;

+2

brutalne ... Uwielbiam to :) Jeśli naprawdę nie potrzebujesz danych; jest to prawdopodobnie najlepszy sposób, aby to osiągnąć. – Trent

+0

zgodził się, to jest lepszy sposób –

+1

@smratikatiyar: Zaakceptuj odpowiedź, jeśli to działa dla ciebie. –

1

Uważam, że zakleszczenie występuje podczas wykonywania kwerendy, więc lepiej go zabić.

Zwykłem usuwać wiele danych, usuwając mały fragment w jednym zapytaniu (10k działa dobrze).

Więc może rację niektóre skrypt, który zrobi to za Ciebie

+1

Jeśli obcięcie jest wolne, myślę o utworzeniu nowego stołu o tej samej strukturze, a następnie upuszczeniu starego, myślę, że będzie to dość szybko. pls podziel się swoimi poglądami na ten temat. –

0

Po prostu miałem ucięte na zawsze (ponad 6 minut), a następnie anulowałem. Tak przynajmniej myślałem. Rzeczywiście, ten krok trwał znacznie krócej niż sekundę i anulowałem działania z kroku drugiego PÓŹNIEJ - okno wyniku działania nie zostało zaktualizowane.

0

Zaleca się również, aby raz uruchomić ponownie usługę MySQL lub cały system, jeśli żadne z powyższych rozwiązań nie działa.

Powiązane problemy