본문 바로가기

ComputerScience/Database

[Database] SQL이란, 그리고 SQL문이 실행되는 과정과 원리

SQL

SQL(Structured Query Language)은 데이터베이스에서 데이터를 생성, 검색, 업데이트, 삭제하기 위한 표준 프로그래밍 언어입니다. SQL은 관계형 데이터베이스 관리 시스템(RDBMS)에 주로 사용되며, 1986년에 표준화되었습니다.

 

SQL의 주요 특징은 다음과 같습니다.

 

  1. DDL(Data Definition Language): 데이터베이스 구조를 정의하고 수정하기 위한 명령어를 포함합니다. CREATE, ALTER, DROP 등의 명령어가 여기에 속합니다.
  2. DQL(Data Query Language): 데이터베이스에서 특정 데이터를 조회하기 위한 명령어를 포함합니다. 가장 일반적인 예는 SELECT 문입니다.
  3. DML(Data Manipulation Language): 데이터베이스 내의 데이터를 추가, 수정, 삭제하기 위한 명령어를 포함합니다. INSERT, UPDATE, DELETE가 이에 해당합니다.
  4. DCL(Data Control Language): 데이터베이스의 접근 제어와 보안을 담당하는 명령어를 포함합니다. GRANT와 REVOKE가 이에 해당합니다.
  5. TCL(Transaction Control Language): 데이터베이스 내의 트랜잭션을 관리하는 명령어를 포함합니다. COMMIT, ROLLBACK 등이 여기에 속합니다.

아래는 SQL을 구성하는 특징들 입니다.

이미지 출처: https://github.com/ByteByteGoHq/system-design-101/raw/main/images/how-to-learn-sql.jpg

SQL문이 실행되는 순서

 

  1. SQL 문장을 구문 분석하고 유효성을 검사합니다.
  2. SQL을 내부 표현식으로 변환합니다. 예를 들어 관계 대수와 같은 것입니다.
  3. 내부 표현식을 최적화하고 인덱스 정보를 활용하는 실행 계획을 생성합니다.
  4. 계획을 실행하고 결과를 반환합니다.

SQL의 실행은 매우 복잡하며, 다음과 같은 여러 고려 사항을 포함합니다

 

  1. 인덱스와 캐시의 사용
  2. 테이블 조인의 순서
  3. 동시성 제어
  4. 트랜잭션 관리 이러한 모든 단계와 고려 사항은 데이터베이스 시스템이 효율적으로 작동하도록 하는 데 중요합니다.

SQL이 실행되는 원리

Step 1

SQL 문장이 전송 계층 프로토콜(예: TCP)을 통해 데이터베이스로 전송됩니다.

Step 2

SQL 문장이 명령 Parser로 전송되어, 구문 및 의미 분석을 거친 후 쿼리 트리가 생성됩니다.

Step 3

쿼리 트리가 Optimizer로 전송됩니다. Optimizer는 실행 계획을 생성합니다.

Step 4

실행 계획이 executer로 전송됩니다. executer는 실행에서 데이터를 검색합니다.

Step 5

Access methods는 실행에 필요한 데이터 추출 로직을 제공하며, 스토리지 엔진에서 데이터를 검색합니다.

Step 6

Access methods는 SQL 문장이 읽기 전용인지를 결정합니다. 만약 쿼리가 읽기 전용(SELECT 문장)이라면, 버퍼 관리자로 전송되어 추가 처리가 이루어집니다. 버퍼 관리자는 캐시나 데이터 파일에서 데이터를 찾습니다.

Step 7

만약 문장이 UPDATE 또는 INSERT라면, 추가 처리를 위해 transaction 관리자로 전송됩니다.

Step 8

트랜잭션 동안, 데이터는 Lock 모드에 있습니다. 이것은 Lock 관리자에 의해 보장됩니다. 또한 트랜잭션의 ACID 속성을 보장합니다.

참고 자료

https://github.com/ByteByteGoHq/system-design-101?tab=readme-ov-file#sql-language

 

GitHub - ByteByteGoHq/system-design-101: Explain complex systems using visuals and simple terms. Help you prepare for system des

Explain complex systems using visuals and simple terms. Help you prepare for system design interviews. - GitHub - ByteByteGoHq/system-design-101: Explain complex systems using visuals and simple te...

github.com