프로그래밍 79

SQL튜닝 입문 - NESTED LOOPS/SORT/MERGE/HASH

1. NESTED LOOPS JOIN- Driving Table: 옵티마이저가 결정 / outer table- Driven Table:Inner Table - 튜닝 포인트  1) 테이블 간 조인 횟수를 최소화 할 수 있도록 Driving Table을 선택 및 제어  2) Driven Table의 연결고리 칼럼에 대한 인덱스 구성2. NESTED LOOPS JOIN 장/단점1. 인덱스에 의한 랜덤 액세스에 기반하고 있어 대량의 데이터 처리 시 적합하지 않음2. Driving Table로는 테이블의 데이터가 적은 마스터 테이블이거나 where 절 조건으로 적절하게 row를 제어할 수 있어야 함.3. Driven Table에는 조인을 위한 적절한 인덱스가 있어야 함3. 조인 순서 제어 방법- 조인 순서 제어를..

프로그래밍 2025.01.19

SQL튜닝 입문 - INDEX 활용 불가능 케이스

1. 인덱스 사용하면 안되는 경우- 조건에 의한 처리 범위가 넓어짐으로써 분포도가 나빠지는 경우, 이 때 인덱스 스캔보다 FULL TABLE SCAN을 하는 것이 낫다 →FULL TABLE SCAN할 경우, 한 번의 I/O 때 마다 여러 개의 데이터 블록을 처리하기 때문에 I/O횟수가 감소함2. 인덱스 사용 불가능한 경우1) NOT 연산자 사용SELECT *FROM EMPWHERE EMPNO != '1234';SELECT *FROM EMPWHERE EMPNO '1234'; 2) IS NULL, IS NOT NULL 사용SELECT *FROM EMPWHERE EMPNO IS NULL; 3) 옵티마이저 취사 선택옵티마이저의 자의적 판단에 의해서 인덱스를 사용할 수도 있고, 사용하지 않을 수 있는 경우> 옵..

프로그래밍 2025.01.12

SQL튜닝 입문 - INDEX, 결합INDEX

1. 필요성- 일반적으로 테이블의 전체 데이터 중에서 10~15% 이하의 데이터를 처리하는 경우에 효율적2. B* TREE 구조- 가장 많이 사용되는 인덱스 구조, 데이터 저장 방식- ROOT/BRANCH/LEAF NODE 구성- BRANCH NODE: 조회하려는 값이 있는 LEAF 노드까지 도달하기 위해 비교/분기해야 될 값들이 저장됨LEAF NODE = 인덱스 칼럼의 값 + ROWID(저장위치정보) - ORDER BY에 의한 SORT를 피할 수 있음- MAX/MIN의 효율적 처리가 가능3. 인덱스 선정 절차1) 프로그램 개발에 이용된 모든 테이블에 대하여 Access Path 조사2) 인덱스 칼럼 선정 및 분포도 조사3) Critical Access Path 결정 및 우선순위 선정4) 인덱스 칼럼의 ..

프로그래밍 2025.01.12

SQL튜닝 입문 - 실행계획, 옵티마이저

1. 실행계획 정의사용자가 SQL을 실행하여 추출하려고 할 때, 옵티마이저가 수립하는 작업 절차- OPTIMZER: SQL 해석 -> 실행계획 수립 -> 실행 2. 실행계획 확인 방법1) EXPLAIN PLAN- SQL에 대한 실행계획만 확인 가능- 명령 사용 시 데이터 처리 X -> 이로 인한 부하가 없음, IO 관련 정보를 확인할 수 없음EXPLAIN PLANSET STATEMENT_ID = 'TEMP1' INTO PLAN_TABLEFOR/* SELECT 구문*/SELECT *FROM EMPWHERE DEPT_ID LIKE '%시스템'; - PLAN_TABLE에 저장된 결과를 확인해야 한다.SELECT *FROM TABLE(DBMS_XPLAN.DISPLAY('PLAN_TABLE', 'TEMP1', '..

프로그래밍 2025.01.12

스프링부트, REST, Token

※ Spring & Spring Boot 스프링부트는 스프링을 설정하고 사용하기 편하게 하기 위한 스프링 베스트 프랙티스를 모아놓은 스트링 래퍼 스프링의 특징: 범용, 경량급, 엔터프라이즈 기반 오픈소스 프레임워크 ㅁ 스프링 프레임워크의 특징 1) 컨테이너 역할 2) DI(Dependency Injection) 지원: Spring은 설정 파일이나 어노테이션을 통해 객체 간의 의존관계를 설정 3) AOP(Aspect Oriented Programming) 지원: 트랜잭션이나 로깅, 보안과 같이 공통적으로 필요로 하는 모듈들을 실제 핵심 모듈에서 분리해서 적용 4) POJO(Plain Old Java Object) 지원: 컨테이너에 저장되는 Java 객체는 특정한 인터페이스를 구현하거나, 특정 클래스를 상속..

프로그래밍 2023.01.15

Spring MVC 공부(5)

※ Cookie - 사용자 웹 브라우저에 저장되는 데이터 - 요청이 발생했을 때 웹 브라우저는 쿠키에 저장된 정보를 서버에 전달한다. - 브라우저가 전달해 줄 때만 쿠키 정보를 사용할 수 있다. - 서버측 코드로 쿠키에 데이터를 저장할 수 있는 방법은 없다. - 브라우저로 보낼 응답 결과에 저장할 쿠키 정보를 담아 보내면 브라우저에 의해 쿠키가 저장된다. - Spring MVC에서 쿠키 저장은 Servlet/JSP에서 사용하는 방법으로 처리한다. //Controller.java @GetMapping("/save_cookie") public String save_cookie(HttpServletResponse response){ try { String data1 = URLEncoder.encode("dat..

프로그래밍 2022.05.28

Spring MVC 공부(4)

※ URL Mapping Servlet/JSP URL 주소 - 사용자가 서버에 접속해서 서비스를 받기 위해 입력하는 주소 - 기본형식: [프로토콜://도메인주소(IP):포트번호/경로1/경로2/...] - 프로토콜: 서버와 클라이언트간의 통신을 위한 약속 - 도메인주소: 같은 네트워크 망에서 컴퓨터를 구분하기 위해 제공되는 숫자로 구성된 고유 주소 - 포트번호: 1~65535번으로 구성, 컴퓨터 내에서 프로그램을 구분하기 위해 사용 - 경로에 관하여: Servlet/JSP에서 첫번째 경로는 Context Path라고 부른다. ※ 요청방식 / Parameter Object GET,POST, PUT, DELETE, PATCH - @RequestMapping(value = ?, method = RequestMe..

프로그래밍 2022.05.28

Spring MVC 공부(3)

※ 동작방식 DispatcherServlet - Servlet/JSP에서 사용자 요청이 발생하면 정보를 해석하고, 개발자가 만든 코드를 동작시키는 첫 번째 서블릿 - Spring MVC는 DispatcherServlet을 확대하여 Spring이 가진 기능을 사용하도록 클래스 재정의함 SpringMVC 프로젝트 환경 조성 1. Dynamic Web Project 생성 2. Maven Project로 변경 [프로젝트 오른쪽 버튼 클릭] - [Configure] - [Convert to Maven Project] 3. Building 후, 라이브러리 설정(pom.xml) cf) Building -> ctrl+shift+enter cf) Line 정리 단축키 -> ctrl+shift+f cf) 자동완성 -> c..

프로그래밍 2022.05.18

Spring MVC 공부(2)

※ Controller의 역할 Main 페이지로 자동 실행 - index.jsp .mvc 파일을 받는 Controller 생성(Servlet으로 생성) - Controller 용도로 Package 생성 - 'HomeController' servlet 생성 - 초기 Annotation을 .mvc로 변경 - 에러 발생: The import java.io.IOException cannot be resolved JDK 버전이 맞지 않아서 build가 안 된듯..? 편집으로 jre 지정해줘서 문제 해결! protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ..

프로그래밍 2022.05.05

Spring MVC 공부(1)

※ 기본 내용 Spring Web MVC - 서블릿 API를 기반으로 만들어진 웹 프레임워크 - 서블릿이란? 웹서버 내부에서 작동하는 소규모 자바 프로그램 - API란? Application Prgramming Interface, 소프트웨어 인터페이스 - 특징 1) 웹 어플리케이션 개발을 위한 라이브러리가 있음 => 반복적인 작업을 줄일 수 있음(재활용성), 과정의 생산성 및 유지보수성을 높일 수 있음 2) XML, Java Annotation 제공 3) Project == Servlet/JSP + Spring MVC Library( jar 파일 import) MVC(Model-View-Controller) - 사용자 인터페이스와 애플리케이션 로직을 분리한 소프트웨어 공학 패턴 - Model: 애플리케이..

프로그래밍 2022.05.01