티스토리 뷰

Soft Parsing과 Hard Parsing

데이터베이스에서의 쿼리 실행에는 Soft Parsing과 Hard Parsing이라는 두 가지 과정이 있습니다.

Soft Parsing

Soft Parsing은 쿼리가 이전에 실행되어 이미 Parsing 정보가 캐시에 저장된 경우를 의미합니다.
이런 경우에는 SQL 문장을 파싱하고 옵티마이저를 거치는 과정을 생략하고 바로 쿼리를 실행하게 됩니다
이를 통해 시스템 리소스를 절약하고 응답 시간을 단축시킬 수 있습니다.

Hard Parsing

Hard Parsing은 쿼리가 처음 실행되거나, 캐시에 파싱 정보가 없는 경우에 이루어집니다.
이 때는 SQL 문장을 파싱하고, 옵티마이저를 거쳐 실행 계획을 작성한 후 쿼리를 실행하게 됩니다.

이 과정은 시스템 리소스를 상당히 소모하며, 응답 시간도 길어질 수 있습니다.
또한, 쿼리의 문법적 올바름을 검사하고, 해당 SQL 문장의 실행 계획을 생성하며, 이는 SQL의 성능 최적화에 중요한 역할을 합니다.

쿼리 캐시의 역할과 한계

MySQL에서는 한 때 쿼리 캐시 기능이 있었습니다.

쿼리 캐시는 SQL 문장에 해당하는 데이터를 저장하여, 동일한 쿼리가 다시 요청될 때 빠르게 결과를 반환할 수 있도록 하는 기능이었습니다.
그러나 테이블의 데이터가 변경될 때마다 캐시도 함께 갱신해야 하므로 관리 비용이 높았습니다.
따라서 MySQL 8.0부터는 쿼리 캐시 기능이 제거되었습니다.

반면, Oracle에서는 Soft Parsing 기능을 제공합니다.
Oracle의 Soft Parsing은 SQL 문장과 실행 계획을 캐시하지만, 해당 쿼리의 결과 데이터까지는 캐시하지 않습니다.

이 방식은 조회 성능을 높이면서도 캐시 데이터 관리에 드는 비용을 낮출 수 있습니다.

결론적으로, 쿼리 캐시나 Soft Parsing 등의 기술은 성능 최적화를 위해 도입되지만, 각각의 기술이 가져오는 장점과 단점, 즉 트레이드오프가 존재합니다.
따라서 적절한 캐시 전략과 만료 정책을 설정하는 것이 중요합니다.

부족한 점이나 잘못 된 점을 알려주시면 시정하겠습니다 :>

728x90

'DEV > Backend' 카테고리의 다른 글

DTO(Data Transfer Object)  (0) 2023.06.02
정규화  (0) 2023.06.01
MySQL 아키텍처  (0) 2023.06.01
대용량 시스템 아키텍처  (0) 2023.06.01
서버의 스케일 업과 스케일 아웃  (0) 2023.06.01