모두의 SQL - 데이터베이스란?, SQL

-·2022년 6월 13일
0

정형데이터, 비정형데이터

  • 정형데이터

    틀, 규격이 정해져있는 데이터, 테이블형태로 사용하는것은 거의 이종류

    ex) 고객정보

  • 비정형데이터

    요즘 중요해지고있는 형태, 정형데이터를 제외한 모든데이터

    ex) 빅데이터, SNS포스팅내용, 각종 로그성 데이터

데이터베이스의 종류

  • 관계형 데이터베이스

    행,열로 구성된 우리가 익히아는 형태

  • 계층형 데이터베이스

    컴퓨터 폴더계층구조 형태

  • 객체지향 데이터베이스

  • XML 데이터베이스

사실상 관계형 데이터베이스만 알면됨

SQL?

관계형 데이터베이스를 조작하기위해 만든 언어

SQL문의 종류

  • DML

    select, insert, update, delete

  • DDL

    create, alter, drop, rename, truncate

  • DCL

    grant, revoke

  • TCL

    commit, rollback

삭제 명령어에 관해서

  • DELETE 명령어는 데이터는 지워지지만 테이블 용량은 줄어 들지 않는다. 원하는 데이터만 지울 수 있다. 삭제 후 잘못 삭제한 것을 되돌릴 수 있다.
  • TRUNCATE 명령어는 용량이 줄어 들고, 인덱스 등도 모두 삭제 된다. 테이블은 삭제하지는 않고, 데이터만 삭제한다. 한꺼번에 다 지워야 한다. 삭제 후 절대 되돌릴 수 없다.
  • DROP 명령어는 데이블 전체를 삭제, 공간, 객체를 삭제한다. 삭제 후 절대 되돌릴 수 없다.

여기서 데이터만 삭제하는 명령인 DELETE, TRUNCATE를 비교해보자

데이터를 초기화해야 할 경우에 TRUNCATE가 속도면에서 훨씬 이점이 있다.

데이터가 많으면 사실상 DELETE는 못쓴다고 보면된다. 오래걸려서 멈춘다.

TRUNCATE가 더 좋은 이유는

트랜잭션 로그 공간을 덜 사용합니다.

DELETE 문은 행을 한번에 하나씩 제거(이거때문에 엄청난 속도차이가 생긴다)하고 삭제된 각 행에 대해 트랜잭션 로그에 항목을 기록합니다.

반면 TRUNCATE TABLE은 테이블의 데이터를 저장하는 데 사용되는 데이터 페이지의 할당을 취소하는 방식으로 데이터를 제거하며 페이지 할당 취소만을 트랜잭션 로그에 기록합니다.

일반적으로 적은 수의 잠금이 사용됩니다.

행 잠금을 사용하여 DELETE 문을 실행하면 삭제를 위해 테이블의 각 행이 잠깁니다. TRUNCATE TABLE은 항상 테이블과 페이지를 잠그지만 각 행은 잠그지 않습니다.

빈 페이지는 예외 없이 테이블에 남습니다.

DELETE 문이 실행된 후에도 테이블은 계속 빈 페이지를 포함할 수 있습니다. 예를 들어 힙의 빈 페이지는 최소한 배타적인(LCK_M_X) 테이블 잠금이 있어야만 할당 취소할 수 있으므로 삭제를 위해 테이블 잠금을 사용하지 않는 경우 테이블(힙)에는 빈 페이지가 많이 남게 됩니다. 인덱스의 경우도 삭제 작업 후에 빈 페이지가 남을 수 있지만 이러한 페이지는 백그라운드 정리 프로세스에 의해 신속하게 할당 취소됩니다.

따라서 결론은

원하는 데이터만 골라서 삭제할 때에는 DELETE 사용

전체 데이터 삭제할 때에는 TRUNCATE 사용

관계형 데이터베이스의 객체

  • table

    데이터저장,관리

    하나의 열에는 하나의 타입, 행에는 각각의 값

  • view

    가상테이블

  • index

    검색용 색인

  • sequence

    번호를자동생성, 주로키에 사용

  • synonym

    별칭부여

profile
거북이는 오늘도 걷는다

0개의 댓글