패스트캠퍼스 백엔드 부트캠프 3기

[패스트캠퍼스 백엔드 부트캠프 3기] 12주차

다름임 2025. 3. 10. 18:57

세션 : 저장소 , 응답과 요청의 묶음

사용 이유 --> R / W             

 

@SessionAttributes : R/W코드를 제거 --> 읽고쓰는 코드를 안써도 되게 해줌 

--> R / W에 사용한다 . 세션에서 읽어오기, 세션에 저장하기 

 

W ) session.getAttribute("id",id)

R ) session.getAttribute("id",id)

--> @SessionAttributes("id")

 

*String.getBoardList(Member member)에 사용가능한 애너테이션 

1. RequestParam

2. ModelAttribute

3. sessionAttribute

4.pathVariable

5.cookieValue

 

 

1장 SQL 처리 과정과 I/O

 

1.1 SQL 파싱과 최적화 

 

 

1. 구조적, 집합적, 선언적 질의 언어 

구조적 : 테이블이 2차원 배열

선언적 vs 명령적 

선언적 : select * from emp;          --> SQL,함수형(람다)

명령적 : for( Emp  e : emp)   print(e);      --> Java

 

2.SQL 파싱 - 트리 생성, 문법체크, 의미체크(말이되는지, 권한) 

3. SQL 최적화 : Optimizer (= 컴파일러) --> 최저 비용의 실행계획 찾기(트리 구조)

4. Optimizer 최적화 = Rule (규칙) --> 변경 어려움(항상 같은 최적화 기준) --> 사용 x

                                  Cost(통계) 이용 --> 통계가 변할수록 최적화 기준 변경

 

5. 비용(Cost) /= 실제 값 

                     = 예상 소요시간 또는 예상 I/O횟수


 

1.2 SQL 공유 및 재사용 

 

1. SGA :모든 사람이 공유 

2. 캐시의 종류 

    1. 데이터 캐시(DB Buffer Cache) 

    2. SQL 캐시(Library Cache) 

캐시 사용 이유 : 재사용 

캐시는 Map 으로 관리 -> 문자열에 해시코드(4byte)값을 넣어놓고 Key로 사용 

해시코드가 문자열보다 비교하기 쉽다

 

하드파싱 : CPU소모 ↑

컴퓨터 : CPU 와 I/O 중 어느 것을 더 부담시킬 것인지 선택하기

압축 -> CPU 부담 증가 

압축 x -> I/O  부담 증가 

sql은 이름 이 없다 

 

바인드 변수 = '?' = 계속 달라지는 부분을 추상화 , 쿼리의 재사용

 


 

 

1.3 데이터 저장 구조 및 메커니즘

데이터 저장구조는 논리적 저장구조(테이블스페이스)와 물리적 저장구조 존재 (실제 저장방식)

 

튜닝 : 디스크를 최대한 덜쓰는 방법 찾기 

데이터 파일 : 디스크 상의 물리적인 OS파일

테이블스페이스: 세그먼트를 담는 콘테이너 

세그먼트 : 테이블 스페이스를 종류별로 나눈 것 - 테이블, 인덱스, 파티션, LOB

익스텐트 : 세그먼트 확장 단위 

블록 : 최소 I/O 단위 

익스텐트는 필요에 따라 늘어난다. 

LOB : Large Object Block : 큰 객체를 저장. 따로 저장해서 참조 --> CLOB :Char.  BLOB : Binary

 

 

 

인덱스 : 테이블 데이터 읽기 위해 

읽기 1. 처음부터 읽기 : 시퀀셜 엑세스 (테이블 ) 

        2. 건너뛰어 읽기 : 랜덤 엑세스(인덱스) 

 

논리적 I/O : (SGA에서) 캐시 읽기 

물리적 I/O : 디스크 읽기 

디스크에서 읽어오는것은 메모리에서 읽어오는(캐시읽기)보다 1000배 느리다.

 

 

대용량 은 무조건 MAP으로 관리

 

I/O CALL : 전체 데이터 중 일부만 캐시에 적재해서 읽을수 있다

1. Single Block I/O  = 한번에 한블럭 요청

2. Multiblock I/O  = 한번에 여러블럭 요청 - 인덱스 사용하지 않을때 유리

 

Table full scan(순차) vs Index range scan(랜덤)