MySQL Truncate 사용법 상세 설명

7680 단어 MySQLTruncate
표 의 데 이 터 를 삭제 하 는 방법 은 delete,truncate 가 있 습 니 다.그 중에서 TRUNCATE TABLE 은 표 의 모든 줄 을 삭제 하고 한 줄 의 삭제 작업 을 기록 하지 않 습 니 다.TRUncate TABLE 은 WHERE 자구 가 없 는 DELETE 문구 와 유사 합 니 다.그러나 TRUNCATE TABLE 은 속도 가 빠 르 고 사용 하 는 시스템 자원 과 트 랜 잭 션 로그 자원 이 적 습 니 다.다음은 SQL 의 Truncate 사용법 을 소개 합 니 다.
이 시계 가 더 이상 필요 하지 않 을 때 drop 을 사용 하 세 요.이 시 계 를 보존 하려 고 하지만 모든 기록 을 삭제 하려 면 truncate 를 사용 하 십시오.일부 기록 을 삭제 하려 면(always with a WHERE clause)delete 를 사용 하 십시오.
Truncate 는 자료 표 에 있 는 모든 자 료 를 빠르게 비 울 수 있 는 SQL 문법 입 니 다.또한 자동 부가 가치 가 있 는 필드 에 대해 0 으로 재 계산 하 는 역할 을 할 수 있다.
MySQL Truncate 사용법
Truncate 문법
[ { database_name.[ schema_name ]. | schema_name . } ]
table_name
[ ; ]
매개 변수
database_name
데이터베이스 이름.
schema_name
표 소속 구조의 이름.
table_name
차단 할 표 의 이름 이나 모든 줄 의 표 의 이름 을 삭제 합 니 다.
2.Truncate 사용 주의사항
1.TRUNCATE TABLE 은 기능 적 으로 WHERE 자구 가 없 는 DELETE 문구 와 같 습 니 다.둘 다 표 의 모든 줄 을 삭제 합 니 다.그러나 TRUNCATE TABLE 은 DELETE 보다 속도 가 빠 르 고 사용 하 는 시스템 과 트 랜 잭 션 로그 자원 이 적 습 니 다.
2.DELETE 문 구 는 한 줄 씩 삭제 하고 트 랜 잭 션 로그 에서 삭 제 된 줄 마다 한 줄 씩 기록 합 니 다.TRUNCATE TABLE 은 메모리 테이블 데이터 에 사용 되 는 데이터 페이지 를 방출 하여 데 이 터 를 삭제 하고 트 랜 잭 션 로그 에 만 페이지 의 방출 을 기록 합 니 다.
3.TRUNCATE TABLE 은 표 의 모든 줄 을 삭제 하지만 표 구조 와 그 열,제약,색인 등 은 변 하지 않 습 니 다.새 줄 표지 에 사 용 된 계수 값 을 이 열의 피 드 로 초기 화 합 니 다.표지 계수 값 을 유지 하려 면 DELETE 로 바 꾸 십시오.표 정의 와 데 이 터 를 삭제 하려 면 DROP TABLE 문 구 를 사용 하 십시오.
4.FOREIGN KEY 가 인용 을 제약 하 는 표 에 대해 서 는 TRUNCATE TABLE 을 사용 할 수 없고 WHERE 자구 가 없 는 DELETE 문 구 를 사용 해 야 합 니 다.TRUNCATE TABLE 이 로그 에 기록 되 어 있 지 않 기 때문에 트리거 를 활성화 할 수 없습니다.
5.TRUNCATE TABLE 은 색인 보기에 참여 한 표 에 사용 할 수 없습니다.
6.TRUNCATE TABLE 로 데 이 터 를 삭제 하 는 표 에 데 이 터 를 추가 할 때 UPDATE STATISTICS 를 사용 하여 색인 정 보 를 유지 해 야 합 니 다.
7.ROLLBACK 문구 가 있 으 면 DELETE 작업 은 취소 되 지만 TRUNCATE 는 취소 되 지 않 습 니 다.
3.아래 표 에 TRUNCATE TABLE 을 사용 할 수 없습니다.
1.FOREIGN KEY 에서 인용 을 제약 하 는 표 입 니 다.(자신 을 참조 하 는 외부 키 가 있 는 시 계 를 차단 할 수 있 습 니 다.)
2.색인 보기 에 참여 하 는 표 입 니 다.
3.트 랜 잭 션 을 통 해 발 표 된 표를 복사 하거나 통합 합 니 다.
4.상기 하나 이상 의 특징 을 가 진 표 에 대해 DELETE 문 구 를 사용 하 십시오.
5.TRUNCATE TABLE 은 트리거 를 활성화 할 수 없습니다.이 동작 은 각 줄 의 삭 제 를 기록 하지 않 기 때 문 입 니 다.
4.TRUNCATE,Drop,Delete 의 차이 점
1.drop 과 delete 는 표 의 데이터(정의)만 삭제 하고 drop 문 구 는 표 의 구조,의존 하 는 제약(constrain),트리거(trigger),색인(index)을 삭제 합 니 다.이 표 에 의존 하 는 저장 과정/함 수 는 유지 되 지만 invalid 상태 로 변 합 니 다.
2.delete 문 구 는 DML 언어 입 니 다.이 동작 은 rollback segement 에 놓 여 있 고 사물 을 제출 한 후에 야 유효 합 니 다.해당 트리거(trigger)가 있 으 면 실행 할 때 트리거 됩 니 다.truncate,drop 은 DDL 언어 로 조작 후 효력 이 발생 합 니 다.원래 데 이 터 는 rollback 에 넣 지 않 고 스크롤 백 할 수 없습니다.조작 은 trigger 를 촉발 하지 않 습 니 다.
3.delete 문 구 는 표 가 사용 하 는 extent,고수 선(high watermark)이 원래 의 위 치 를 유지 하 는 데 영향 을 주지 않 습 니 다.drop 문 구 는 표 가 사용 하 는 공간 을 모두 방출 합 니 다.truncate 문 구 를 절약 하지 않 은 상태 에서 minextents 의 extent 에 공간 을 방출 합 니 다.reuse storage 를 사용 하지 않 는 한.truncate 는 고수 선 을 복원 합 니 다.
4.효율 성:drop>truncate>delete
5.안전성:drop 과 truncate 를 조심 하 세 요.특히 백업 이 없 을 때 일부 데 이 터 를 삭제 하려 면 delete 를 사용 할 수 있 습 니 다.where 자 구 를 가 져 가 야 합 니 다.스크롤 백 을 삭제 하려 면 drop 을 사용 할 수 있 습 니 다.시 계 를 삭제 하려 면 drop 을 사용 할 수 있 습 니 다.표 의 모든 데 이 터 를 삭제 하려 면 delete 를 사용 할 수 있 습 니 다.사물 과 관련 이 있 거나 trigger 를 촉발 하려 면 delete 를 사용 하 십시오.표 내부 의 조각 을 정리 하 는 경우 truncate 로 reuse stroage 를 따라 가서 데 이 터 를 다시 가 져 오고 삽입 할 수 있 습 니 다.
6.delete 는 DML 구문 으로 자동 으로 제출 되 지 않 습 니 다.drop/truncate 는 모두 DDL 문장 으로 실행 되면 자동 으로 제출 됩 니 다.
7.drop 은 표,패턴,색인,보기,완전 성 제한 등 전체적인 데 이 터 를 삭제 하 는 데 사 용 됩 니 다.delete 는 표 의 한 원 그룹 과 같은 부분 적 인 데 이 터 를 삭제 하 는 데 사 용 됩 니 다.
8.DROP 는 표 구 조 를 모두 삭제 했다.DELETE 는 데 이 터 를 지 울 뿐 입 니 다.
9.이 시계 가 더 이상 필요 하지 않 을 때 drop 을 사용 합 니 다.이 시 계 를 보존 하려 고 하지만 모든 기록 을 삭제 하려 면 truncate 를 사용 하 십시오.일부 기록 을 삭제 하려 면(always with a WHERE clause)delete 를 사용 하 십시오.
MYSQL 에서 TRUncate 와 DELETE 의 차이 점
MYSQL 에서 TRUncate 와 DELETE 는 표 의 데 이 터 를 정리 할 수 있 지만 그들 은 어떤 차이 가 있 습 니까?우 리 는 아래 의 몇 가지 점 에서 분석한다.

1.조건 삭제
이것 은 DELETE 가 WHERE 를 가 져 올 수 있 기 때문에 조건 삭 제 를 지원 합 니 다.TRUNCATE 는 표 전 체 를 삭제 할 수 밖 에 없습니다.

# delete -     
DELETE FROM student WHERE id = 1;
# delete -         
DELETE FROM student;
# truncate -         
TRUNCATE TABLE student;
2.트 랜 잭 션 스크롤 백
DELETE 는 데이터 조작 언어(DML-Data Manipulation Language)이기 때문에 조작 할 때 원래 의 데 이 터 는 rollback segment 에 넣 어 스크롤 백 할 수 있 습 니 다.반면 TRUNCATE 는 데이터 정의 언어(DDL-Data Definition Language)로 조작 시 저장 되 지 않 고 스크롤 백 을 할 수 없습니다.

DELETE 를 볼 수 있 습 니 다.스크롤 백 에 성공 할 수 있 습 니 다.

TRUncate 는 스크롤 백 에 성공 할 수 없 음 을 볼 수 있 습 니 다.
3.청소 속도
데이터 양 이 비교적 적은 상황 에서 DELETE 와 TRUNCATE 의 청소 속도 차 이 는 크 지 않다.하지만 데이터 양 이 많 을 때 차 이 를 알 수 있다.두 번 째 항목 에서 말 한 TRUNCATE 는 스크롤 백 을 지원 할 필요 가 없 기 때문에 사용 하 는 시스템 과 트 랜 잭 션 로그 자원 이 적 습 니 다.DELETE 문 구 는 매번 한 줄 을 삭제 하고 트 랜 잭 션 로그 에서 삭 제 된 줄 마다 하 나 를 기록 합 니 다.느 리 지만 상대 적 으로 안전 합 니 다.
4.높 은 수위 초기 화
표 에 기 록 된 DML 조작 이 계속 진행 되면 서 표 의 높 은 수위 선(HWM)을 계속 높 일 것 이다.DELETE 조작 후 표 의 데 이 터 는 삭 제 했 지만 표 의 높 은 수 위 를 낮 추 지 않 았 고 DML 조작 데이터 베이스 용량 도 상승 할 뿐 떨 어 지지 않 을 것 이다.따라서 DELETE 를 사용 하면 표 의 데 이 터 를 많이 줄 여도 조회 할 때 DELETE 작업 전 속도 와 같 습 니 다.
반면 TRUNCATE 작업 은 높 은 수위 선 을 리 셋 하고 데이터베이스 용량 도 리 셋 되 며 이후 DML 작업 속도 도 향상 된다.
MySQL Truncate 용법 보충
선언:
우리 가 어떤 시 계 를 비우 고 싶 을 때,종종 truncate 문 구 를 사용한다.대부분 우 리 는 수 요 를 만족 시 킬 수 있 는 지 에 만 관심 을 가지 고 이런 문장의 사용 장면 과 주의사항 을 생각 하지 않 는 다.이 글 은 주로 truncate 문장의 사용 방법 과 주의사항 을 소개 한다.
1.truncate 사용 문법
truncate 의 역할 은 시 계 를 비우 거나 시 계 를 절단 하 는 것 으로 표 에 만 작용 할 수 있다.truncate 의 문법 은 매우 간단 합 니 다.뒤에 표 이름 을 직접 따 르 면 됩 니 다.
예 를 들 어truncate table tbl_name또는truncate tbl_name truncate 문 구 를 실행 하려 면 표 의 drop 권한 이 있어 야 합 니 다.논리 적 으로 truncate table 은 delete 가 모든 줄 의 문 구 를 삭제 하거나 drop table 을 삭제 한 다음 에 create table 문 구 를 조합 하 는 것 과 유사 합 니 다.고성능 을 구현 하기 위해 서 는 데 이 터 를 삭제 하 는 DML 방법 을 우회 하기 때문에 되 돌 릴 수 없다.truncate table 은 delete 와 비슷 하지만 DML 구문 이 아 닌 DDL 구문 으로 분 류 됩 니 다.
2.truncate 와 drop,delete 의 대비
위 에서 말 했 듯 이 truncate 는 delete,drop 과 비슷 하 다.사실은 이 세 가 지 는 매우 큰 차이 점 과 다르다.아래 에서 세 사람의 공통점 과 차이 점 을 간단하게 비교 해 보 자.
4.567917.truncate 와 drop 은 DDL 문장 으로 실행 후 스크롤 백 할 수 없습니다.delete 는 DML 구문 으로 스크롤 백 이 가능 합 니 다4.567917.truncate 는 표 에 만 작용 할 수 있다.delete,drop 은 표,보기 등에 작용 할 수 있 습 니 다4.567917.truncate 는 표 의 모든 줄 을 비우 지만 표 구조 와 제약,색인 등 은 변 하지 않 습 니 다.drop 은 표 의 구조 와 의존 하 는 제약,색인 등 을 삭제 합 니 다4.567917.truncate 는 표 의 자체 가치 상승 을 리 셋 합 니 다.delete 아니..4.567917.truncate 는 표 와 관련 된 삭제 트리거 를 활성화 하지 않 습 니 다.delete 가능 합 니 다4.567917.truncate 후 표 와 색인 이 사용 하 는 공간 을 초기 크기 로 복원 합 니 다.delete 작업 은 표 나 색인 이 사용 하 는 공간 을 줄 이지 않 습 니 다.drop 문 구 는 표 가 사용 하 는 공간 을 모두 방출 합 니 다.
3.truncate 사용 장면 및 주의사항
앞에서 소개 한 바 와 같이 우 리 는 truncate 문장의 사용 장면 을 쉽게 얻 을 수 있다.즉,이 표 의 데이터 가 전혀 필요 하지 않 을 때 truncate 를 사용 할 수 있다.일부 데 이 터 를 삭제 하려 면 delete 로 where 자 구 를 가 져 가세 요.시 계 를 삭제 하려 면 drop 을 사용 하 십시오.표를 보존 하고 모든 데 이 터 를 삭제 하고 업무 와 무관 하 게 truncate 를 사용 하면 됩 니 다.트 랜 잭 션 과 관련 이 있 거나 trigger 를 실행 하려 면 delete 를 사용 하 십시오.표 내부 의 조각 을 정리 하 는 것 이 라면 truncate 로 데 이 터 를 다시 삽입 할 수 있 습 니 다.
어쨌든 truncate 표 는 고위 험 조작 입 니 다.특히 생산 환경 에 서 는 더욱 조심해 야 합 니 다.아래 에 몇 가지 주의사항 을 열거 하 였 으 니 사용 할 때 참고 하 시기 바 랍 니 다.
  • truncate 는 binlog 를 통 해 스크롤 백 할 수 없습니다
  • 4.567917.truncate 는 모든 데 이 터 를 비우 고 실행 속도 가 빠르다4.567917.truncate 는 외부 키 제약 참조 표 에 사용 할 수 없습니다
  • truncate 를 실행 하려 면 drop 권한 이 필요 합 니 다.계 정 drop 권한 을 권장 하지 않 습 니 다
  • 4.567917.truncate 를 실행 하기 전에 반드시 재삼 확인 하고 표 데 이 터 를 미리 백업 하 는 것 이 좋 습 니 다이상 은 MySQL Truncate 용법 에 대한 상세 한 내용 입 니 다.MySQL Truncate 에 관 한 자 료 는 저희 의 다른 관련 글 을 주목 해 주 십시오!

    좋은 웹페이지 즐겨찾기