2. 손에 잡히는 물리적 용어 이해하기

JOY·2025년 3월 19일
0

2-1. 물리엔진

사용자 → (정보요청) → MySQL 엔진 → 스토리지 엔진 → (요청한 정보 제공) → 사용자

MySQL 엔진

사용자가 요청한 SQL문 전달 받음

→ 해당 SQL문 오류 확인 및 오브젝트 존재 여부 등 확인

Parsor 에서 SQL문에 대한 내용 최소 단위 분리 및 구성요소를 트리 형태로 생성

Optimizer 에서 생성된 트리를 기반으로 비용적 / 시간적 효율적인 경로 모색

스토리지 엔진

요구하는 데이터를 찾아서 도출해 냄

데이터의 성격에 따라 엔진이 여러가지로 나뉨

InnoDB / MyISAM / Memory 등

--MySQL
--정의된 스토리지 엔진 종류 확인하기
SELECT * FROM 'ENGINES';

InnoDB

  • 대부분 테이블 생성 시 사용 (일반적 사용)
  • 트랜잭션이 발생한 OLTP성 업무

MyISAM

  • 대량의 쓰기 연산 트랜잭션 업무

Memory

  • 메모리 내 올라간 데이터를 바탕으로 빠른 조회 업무

2-2. SQL문 수행 절차

사용자 - SQL 실행 → 파서(Parsor) → 전처리기(preprocessor) → 옵티마이저(Optimizer) - 실행계획전달 → 엔진실행기(스토리 엔진을 통해 데이터 가져오기) - 최종결과 전달 - 결과수신 → 사용자


2-3, 4. DB 오브젝트(1), (2)

  • 주요 DB 오브젝트
    1. Table
      • 데이터 항목들의 집합
    2. Row
      • 동일한 구조 데이터 항목 집합 ex) 홍길동 정보
    3. Column
      • 같은 데이터 유형(값) 항목 집합 ex) 생년월일에 저장된 모든 값
    4. 기본키 (PK)
      • 클러스터링 키/인덱스
      • 물리적으로 스토리지에 위치
    5. 외래키 (FK)
      • 항상 외부 테이블 참조
    6. 인덱스(Index)
      • 데이터 접근 속도 향상에 도움
      • 오름차순 정렬 기본ex) 이름으로 인덱스 생성 시, 이름 컬럼 기준 오름차순 정렬 및 위치 표기
    7. 뷰(View)
      • 테이블에서 필요한 컬럼만 사용하여 생성한 가상 테이블
    • 제한된 정보만 사용하여 보안적 측면에서 유리

      • SQL 튜닝 시 활용에 유리

        CREATE VIEW 학생_뷰 AS
        SELECT 학번, 이름 FROM 학생;
  • 인덱스 유형
    • 유니크 인덱스 (Unique Index, 고유 인덱스)
    • 컬럼의 중복을 허용하지 않는 인덱스
    • 유일한 컬럼으로 인덱스 구성
      --연락처(번호)는 유일한 값
      ALTER TABLE 학생
      ADD UNIQUE INDEX 연락처_인덱스(연락처);
    • 일반 인덱스 (Non-unique Index, 비고유 인덱스)
    • 컬럼의 중복을 허용한 인덱스
    • 고유성이 없어서 중복 데이터 존재
      ALTER TABLE 학생
      ADD INDEX 이름_인덱스(이름);
    ❓ PK 와 UI(Unique Index)
    • 공통점 : 중복이 없고 인덱스
    • 차이점 : PK - Null 불가능 / UI - Null 가능
profile
Just Do IT ------- 🏃‍♀️

0개의 댓글