본문 바로가기

Programming83

[Oracle] Delete, Truncate, Drop 비교 + HWM(High Water Mark) DELETE FROM table_name; TRUNCATE TABLE table_name; DROP TABLE table_name [CASCADE CONSTRAINT]; DELETE TRUNCATE DROP 데이터 삭제 삭제 삭제 테이블 구조 존재 존재 삭제 저장 공간 존재 해제 해제 ※ TRUNCAT, DROP 하면 rollback을 할 수 없음. ※ '저장공간이 해제된다'는 것은 HWM(High Water Mark)까지 0번째 블록으로 당기는 것. 저장공간이 존재한다는 것은 HWM을 원래의 위치에 둔다는 것. 따라서 delete를 한 후에 full table scan 하면, 데이터가 없어도 hwm 지점까지 scan을 하기 때문에 시간이 오래 걸린다. ※※ HWM(High Water Mark) : 한 .. 2019. 12. 24.
[Oracle] sqlplus 치환변수 single ampersand(&), double ampersand(&&), / single ampersand(&) : where절에 들어갈 값을 입력 받아서 (java scanner, c scanf...) 쿼리를 실행 2. double ampersand(&&) : &와 같이 where절에 들어갈 값을 입력 받아서 쿼리를 실행하는데, 동일한 세션 안에서는 최초 입력받은 값을 저장해뒀다가 동일하게 실행함 (전역변수와 같은 개념) 3. / : 직전에 실행된 쿼리를 불러와 다시 실행함 2019. 12. 24.
[Oracle] view, inlineview 구조 상의 차이점 view : 이미 파싱되어 분석이 끝난 데이터이므로 권한 체크만 하고 바로 접근이 가능, data masking의 역할. 권한이 다른 각 사용자들에게 맞는 데이터를 제공하기 위해 사용한다. (단, materialized view는 물리적으로 존재하는 테이블로, 원격지에서 테이블 복제 시에 사용한다.) inlineview(from절의 서브쿼리) : 쿼리가 실행될 때마다 매번 분석을 해야함 * 어떤 원리인가? 오라클DB에서는 쿼리가 문법적으로 이상이 없다는 것이 확인되면 해시 값을 붙혀서 Library Cash에 저장해두고, 나중에 같은 쿼리가 들어왔을 때 따로 분석을 하지 않고 해시값만 호출해서 사용한다. 2019. 12. 24.
[Oracle] 쿼리로 코드를 줄여보자! GROUP BY 함수 with ROLLUP, CUBE 연산자 ROLLUP 연산자로 부서별 연봉 합계 구하기 SELECT deptno, job, sum(sal) FROM emp GROUP BY ROLLUP (deptno, job); CUBE 연산자로 직무별 연봉 합계 구하기 SELECT deptno, job, sum(sal) FROM emp GROUP BY CUBE (deptno, job); 2019. 12. 24.
[SQL] varchar, char 성능 상의 차이점 varchar 가변길이 → 실제 문자 값만 저장 char 고정길이 → 선언한 문자열 자릿수로 저장 SQL에서 문자열 데이터 타입에는 varchar, char 두 가지가 있다. DB를 설계할 때 둘 중 어떤 것을 써야할지 고민할 때가 있다. 메모리 상의 문제가 없다고 무조건 varchar를 쓰는게 맞는 것인가? Q) 실제 성능 상에서는 어떤 차이가 있을까? DB의 구조를 알아보자. DB는 Block > Extent > Segment > Table Space로 이루어져 있다. 메모리 상으로는 varchar 타입이 우수한 것을 볼 수 있다. aaa → bbbbbb로 데이터의 변경이 일어났다. char는 입력이 허용되는 길이까지만 데이터를 받지만, 가변인 varchar의 경우 Block을 추가로 생성하기 때문에.. 2019. 12. 23.
[SQL] 유용한 sqlpus 편집 명령어 A[PPEND] test C[HANGE] / old / new C[HANGE] / text / CL[EAR] BUFF[ER] DEL DEL n DEL m n I[NPUT] I[NPUT] text L[IST] L[IST] n L[IST] m n RUN n n text 2019. 12. 23.
[Oracle] DB 연동 시 host, port 번호 조회 및 원격 접속하기 (window - oracle 12g 기준) 1. host, port 번호 조회 oracle db가 설치되어있는 폴더를 찾아 위의 경로로 따라 들어간다. tnsnames.ora 파일을 찾았다면 열어본다. 여기에 DB 주소가 저장되어 있다. 2. 원격 접속하기 - listner.ora : 내가 서버이고 다른 클라이언트가 나에게 접속하려고 할 때 - tnsname.ora : 내가 클라이언트이고 다른 서버로 접속하고자 할 때 상황에 따라 각각의 파일에 ip, port, service name을 알맞게 수정한다. tnsping [service name] sqlplus [user name]/[password]@[service name] ex) tnsping corcl sqlplus scott/tiger@corcl.. 2019. 12. 23.
[Oracle] sqlplus 화면 크기 관련 명령어 linesize, pagesize 위와 같이 줄이 더럽게 나올때 정리할 수 있는 명령어가 있다. SET LINESIZE 200; pagesize도 위와 같이 사용하면 된다. 2019. 12. 23.
[Spring] 하나의 requestMapping으로 여러개의 request 받기 스프링의 컨트롤러 단에서 구현부가 동일하거나 거의 유사한 requestMapping을 여러 개 만들어야 하는 상황이 발생한다. 이때 중복코드를 줄이기 위해 하나의 requestMapping에서 여러 요청을 처리하는 방법이 있다. 1. 먼저 요청을 병렬로 받는다. @RequestMapping(value = {"/boardUpdateForm", "/boardDelete"}) cs 2. 그리고 아래 문법을 사용하면 요청이 들어오는 url을 뽑아주므로 처리와 return을 다르게 하고 중복코드를 줄일 수 있다. (String)request.getAttribute(HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE); cs 3. 예시는 다음과 같다. @RequestMap.. 2019. 12. 20.