2013-07-20 2 views
7

truncate table table_name을 사용하고 있습니다. 약 1 백만 행의 테이블에 있지만 지난 3 시간이 지나서 실행하는 데 너무 오래 걸렸습니다.테이블을 잘라내는 데 오랜 시간이 걸리므로 정상입니까?

정상입니까? 테이블에서 모든 행을 삭제하는 다른 방법을 제안 할 수 있습니까?

+2

어떤 엔진? MYISAM 또는 InnoDB – hjpotter92

+0

또한 다음을 확인하십시오. http://bugs.mysql.com/bug.php?id=68184 – hjpotter92

+0

현재 테이블을 사용하는 다른 프로세스가 있습니까? – Ben

답변

30
자르기 늘 같은 일부 경우에 작동

,

당신은

쉬운 인덱스 물건의 종류와 일부 외부 키 제한 조건이있을 때 내가 제안 방법은

RENAME TABLE table_name TO t1; 

CREATE TABLE table_name LIKE t1; 

DROP TABLE t1; 

또는 당신은 또한 DELETE FROM table_name;

을 사용할 수 있습니다 0
+2

잔인한 ... 나는 그것을 좋아한다. 정말로 데이터가 필요 없다면; 이것이 아마도 가장 좋은 방법 일 것입니다. – Trent

+0

동의 함, 더 좋은 방법입니다. –

+1

@smratikatiyar :이 방법이 도움이 될 경우 대답을 수락하십시오. –

1

쿼리 실행 중에 교착 상태가 발생한다고 생각하므로 죽이는 것이 좋습니다.

단일 쿼리에서 작은 청크를 삭제하여 많은 데이터를 삭제하는 데 사용되었습니다 (10k는 정상적으로 작동합니다).

그래서 수도 권리 이렇게 몇 가지 스크립트 당신

+1

truncate가 느린 경우 동일한 구조의 새 테이블을 만든 다음 이전 테이블을 삭제하려고 생각하고 있습니다. 꽤 빠를 것이라고 생각합니다. pls는 이것에 대한 의견을 공유합니다. –

0

난 그냥 잘라내어 (6 분 이상) 영원히 걸릴했다 그리고 나서 취소했습니다. 또는 그래서 나는 생각했다. 사실, 그 단계는 1 초보다 훨씬 적게 걸렸습니다. 그리고 나는 두 단계 뒤에있는 액션을 취소했습니다 - 액션 출력 창이 업데이트되지 않았습니다.

0

위의 해결 방법 중 어느 것도 작동하지 않으면 MySQL 서비스 또는 전체 시스템을 한 번 다시 시작하는 것이 좋습니다.

관련 문제