구조적 질의어란?
- 관계형 데이터베이스에 정보를 저장하고 처리하기 위한 질의 언어(Query Language)이다.
☆ 그렇다면 질의 언어(Query Language)와 프로그래밍 언어(Programming Language) 는 뭐가 다른 걸까? ☆
- 크게 나누면 Non Programming Language 에 질의 언어(Qeury Langauge)가 속하고 프로그래밍 언어가 있는 것이다!
질의 언어(Query Language) | 프로그래밍 언어(Programming Language) | |
목적 | 데이터 베이스와 상호작용 하기 위해서 | 애플리케이션을 개발하기 위해서 |
특징 | DB에서 정보를 질의 & 관리 용이 | 다양하고 복잡한 로직을 구현하기 용이 |
주 사용 예시 | SQL, CQL | Java, Python, C++ |
SQL의 역할
- 데이터 베이스에 정보를 조회, 저장, 삭제, 수정 등을 할 수 있다.
- 데이터베이스의 성능을 유지관리하고, 최적화할 수 있다.
☆ 1번은 그렇다 치고, 2번은 당최 무슨 소리인가? ☆
- 뭔소리긴 성능 유지관리와 최적화가 가능하다는 소리지~ 아래의 표를 보면 알 수 있다.
인덱스 최적화 | 최적의 탐색 경로로 최적화 (그러나 남발하면 오히려 성능이 저하된다.) |
쿼리 최적화 | 필요 없는 데이터를 가져오지 않을 수 있다. ex) SELECT name, age FROM user -> name과 age만 가져오고 다른 속성의 데이터는 가져오지 않는다. |
조인 최적화 | 서브 쿼리가 많아지면 성능이 저하되는데 조인을 통해 서브쿼리를 줄여 성능을 개선할 수 있다 |
분석과 모니터링 | 분석과 모니터링이 가능한 쿼리를 제공하여 이를 가능케한다. ex) EXPLAIN -> 이 SQL문을 사용하면 선행 계획과 최적의 포인트를 분석할 수 있다. |
SQL의 작동 과정
- 구문 분석기 - SQL Layer
- MySQL에서 SQL Parser가 해당 역할을 한다.
- SQL문을 DB가 읽기 쉽게 토큰화를 해준다.
- 문법 오류를 검사하고, 해당 기능 사용을 위해 사용자를 식별한다.
- 관계형 엔진
- MySQL 에서 SQL Optimizer가 해당 역할을 한다.
- DB가 데이터를 찾기 최적의 경로를 탐색해 준다.
- 탐색된 경로를 바탕으로 조회, 저장등의 기능을 위한 계획을 세운다.
- 스토리지 엔진
- MySQL 에는 InnoDB, Memory 등의 스토리지 엔진이 있다.
- 실제 물리 저장 장치에 접근하여 관계형 엔진에서 만든 계획대로 작업을 수행한다.
- 물리 저장 장치에 있는 파일에 데이터를 저장하고 조회한다.
- 완료시에 스토리지 엔진이 SQL Layer에 반환하면 SQL Layer에서 에플리케이션에 결과를 반환한다.
참고 자료 : https://solt.tistory.com/29,
https://aws.amazon.com/ko/what-is/sql/
'DB' 카테고리의 다른 글
구조적 질의어 (SQL, Structured Query Language) ( 3 ) (1) | 2024.11.08 |
---|---|
구조적 질의어 (SQL, Structured Query Language) ( 2 ) (0) | 2024.11.06 |
MySQL - InnoDB (2) | 2024.11.01 |
MySQL Server (0) | 2024.11.01 |
RDBMS (Relationa DataBase Management System) (0) | 2024.11.01 |