2008-10-06 2 views

답변

0

TRUNCATE는 꽤 무거운 물건입니다. DELETE 쿼리로도 얻을 수 있습니까?

+0

아니요, 각각 40 개 이상의 테이블이있는 6 개의 DB가 있으며 일부 테이블에는 5 백만 개가 넘는 행이 있습니다. 삭제는 거의 불가능합니다. 감사합니다 –

2

명령을 사용하여 세션이 원하는대로 수행 할 수 있도록 바이너리 로깅을 비활성화 할 수 있습니다.

 
SET SQL_LOG_BIN = 0; 
TRUNCATE TABLE ; 
SET SQL_LOG_BIN = 1; 

이렇게하면 TRUNCATE를 슬레이브로 보내지 않아도 복제가 효과적으로 중단되므로 SUPER 권한이 필요합니다.

+0

좋아, 많이 감사합니다! 너 락! –

0

TRUNCATE는 실제로 데이터를 기록하지 않고 바닥에 데이터를 떨어 뜨리기 때문에 가볍게 사용하면 안됩니다. 트랜잭션 적으로 안전하지 않으며 복구가 불가능하므로 복제와 호환되지 않습니다. 복제 설정에서 TRUNCATE를 사용하더라도 복제 된 데이터는 손상되거나 잘못되었을 수 있습니다.

+0

예, Truncate가 복제 내에서 사용할 일반적인 문장이 아닙니다. 그러나이 특별한 경우에는 매력적입니다. 감사! –