본문 바로가기

스터디69

04 쿼리변환 - 서브쿼리 Unnesting 쿼리변환이란? 결과가 동일하더라도 SQL문을 여떤 형태로 작성하느냐에 따라 성능에 차이가 날 수 있으며 쿼리 옵티마이저가 SQL을 분석해 의미적으로 동일하면서도 더 나은 성능이 개대되는 형태로 재작성하는 것을 말합니다. 옵티마이저의 서브엔진으로서 Query Transformer,Estimator,Plan Generator가 있는데 이중 Query Transformer가 그 역할을 담당합니다. 쿼리변환은 두가지 방식으로 작동합니다. 휴리스틱 쿼리변환 : 결과만 보장된다면 무조건 쿼리변환을 수행합니다. 일종의 규칙기반 최적화기법이라고 할 수 있습니다. 비용기반 쿼리변환 : 변환된 쿼리의 비용이 더 낮을 때만 그것을 사용하고, 그렇지 않을 때는 원본 쿼리 그대로 두고 최적화를 수행합니다. 서브쿼리 Unnest.. 2021. 8. 30.
2 데이터 모델링 기본 개념 2.1 관계형 데이터 모델링 관계형 모델이란? 함수 종속(Functional Dependency)에 의해 정규화(Nomalization)된 모델 관계형모델에서 기초가 되는 개념이 릴레이션 릴레이션 (테이블)은 가로 세로로 이루어 진 표 형태이고 머리부분인 어트리뷰트(컬럼)과 몸통부분인 튜플(로우)로 구성됩니다. 튜플의 집합이 릴레이션입니다. 어트리뷰트 중 튜플을 유일하게 식별할 수 있는 어트리뷰트를 식별자(PK)라고 합니다. 어트리뷰트의 수를 차수(Degree)라고 하며 튜플의 수를 카티널리티(Cardinality)라고 합니다. 특징 1.릴레이션에서 각 튜플을 유일해야 한다는 것 2.어트리뷰트는 유일한 값이 사용돼야 하며 다중 값이나 복합 값이 존재해서는 안됩니다. (한 로우에 여러 값이 들어가 있는 경.. 2021. 8. 17.
06.스토리지 엔진 - Aria 스토리지 엔진 6.1 Aria 스토리지 엔진 MyISAM 스토리지 엔진은 초창기부터 사용이 되어 왔습니다. 하지만 트랜잭션을 지원하지 않고 테이블 수준의 잠금을 사용한다는 단점이 있어서 주로 사용하지는 않게 되었습니다. Aria 스토리지 엔진은 MyISAM의 이런 단점을 보완하기 위해서 만들어진 스토리지 엔진입니다. MariaDB에서는 내부 임시 테이블을 생성해야 할 때에는 MyISAM이 아니라 Aria 스토리지 엔진을 사용하기 때문에 Aria 스토리지 엔진의 기본적인 내용을 알고 있다면 도움이 될 것입니다. MyISAM과 차별화되는 기능은 트랜잭션과 페이지 캐시기능입니다. 6.1.1 트랜잭션 Aria 스토리지 엔진을 사용하는 테이블을 생성할 때에는 TRANSACTIONAL 옵션을 명시할 수 있습니다. TRANSACT.. 2021. 7. 22.
4.3.10 Extra컬럼(2) 앞의 글에 이어서 실행계획의 Extra컬럼에 대해서 정리하는 두번째 글입니다. Using index 데이터 파일을 전혀 읽지 않고 인덱스만 읽어서 쿼리를 모두 처리할 수 있을때 표시됩니다. MariaDB [employees]> explain -> select first_name from employees where first_name between 'Balette' and 'Gad'; +------+-------------+-----------+-------+---------------+--------------+---------+------+-------+--------------------------+ | id | select_type | table | type | possible_keys | key.. 2021. 6. 4.