본문 바로가기

전체 글222

인덱스 구조 및 탐색 인덱스 탐색 과정은 수직적 탐색과 수평적 탐색 두 단계로 이루어진다. ◎ 데이터를 찾는 두 가지 방법 테이블 전체를 스캔 인덱스를 이용 ◎ 인덱스 튜닝의 두 가지 핵심요소 학생을 '학년-반-번호'로 분류하는 건 인덱스로 따지면 ROWID에 해당한다. 인덱스는 큰 테이블에서 소량 데이터를 검색할 때 사용된다. 온라인 트랜잭션 처리(Online Transaction Processing, 이하 OLTP) 시스템에서는 소량 데이터를 주로 검색하므로 인덱스 튜닝이 무엇보다 중요하다. 인덱스 튜닝의 핵심요소는 크게 두 가지로 나뉜다. 1. 인덱스 스캔 과정에서 발생하는 비효율을 줄이는 것 - 인덱스 스캔 효율화 튜닝 ex) 시력이 1.0~1.5인 홍길동을 찾는 경우. 1) 이름과 시력 순으로 정렬한 경우 - 소량만.. 2022. 10. 12.
회계 관련 프로세스 정리 회계 개시/마감 cf) 영업일 - 수탁시스템에서 영업일이라 하면 담당자가 현재 처리하는 날짜 ex) 10월 11일 - 현업 회계팀 FA : 오늘자 거래 안끝났으니 그전날짜 일어난 거래에 대해 회계처리 > 기준가검정 오늘 날은 11일이지만 회계담당자면 내 담당 운영사, 위탁사의 처리날짜는 10월 7일자일 것임. 따라서 영업일도 10월 7일. ex) 10월 6일자 거래를 빠뜨렸다면 회계 개시/마감 화면에서 담당 위탁사 회계처리 날짜를 10월 6일로 되돌려서 거래를 넣는다. 현재 담당자 영업일 10월 6일자가 됨. 실물 : 보통 다음날. 현재 날짜와 영업일이 일치하는 건 거의 자금. 나머지는 보통 다음날 검정. 10월 7일. 자금 : 그날그날 거래가 이루어지므로 자금을 바로바로 보내야함. 건건히 보내는 건 아.. 2022. 10. 11.
데이터 저장 구조 및 I/O 메커니즘 (2) ◎ Single Block I/O vs Multi Block I/O 데이터를 모두 캐시에 적재할 수는 없다. 캐시에서 찾지 못한 데이터 블록은 I/O Call을 통해 디스크에서 DB 버퍼캐시로 적재하고서 읽는다. I/O Call 할 때, 한 번에 한 블록씩 요청하기도 하고, 여러 블록씩 요청하기도 한다. 1. Single Block I/O - 한 번에 한 블록씩 요청해서 메모리에 적재하는 방식 인덱스를 이용할 때는 기본적으로 인덱스와 테이블 블록 모두 해당 방식을 이용한다. 인덱스는 소량 데이터를 읽을 때 주로 사용하므로 이 방식이 효율적이다. 2. Multi Block I/O - 한 번에 여러 블록씩 요청해서 메모리에 적재하는 방식 많은 데이터 블록을 읽을 때는 해당 방식이 효율적이다.따라서 인덱스를 .. 2022. 10. 10.
데이터 저장 구조 및 I/O 메커니즘 (1) ◎ SQL이 느린 이유 십중팔구 디스크 I/O로 인한 것이다. OS 또는 I/O 서브시스템이 I/O를 처리하는 동안 프로세스는 잠을 잔다. 프로세스(Process)는 '실행 중인 프로그램'이다. 프로세스는 생성(new) 이후 종료(terminated) 전까지 준비(ready)와 실행(running)과 대기(wating) 상태를 반복한다. 실행 중인 프로세스는 interrupt에 의해 수시로 실행 준비 상태(Runnable Queue)로 전환했다가 다시 실행 상태로 전환한다. 여러 프로세스가 하나의 CPU를 공유할 수 있으나, 특정 순간에는 하나의 프로세스만 CPU를 사용할 수 있기 때문에 이런 메터니즘이 필요하다. interrupt 없이 열심히 일하던 프로세스도 디스크에서 데이터를 읽어야 할 땐 CPU를.. 2022. 10. 9.
SQL 공유 및 재사용 ◎ 라이브러리 캐시(Library Cache) SQL 파싱, 최적화, 로우 소스 생성 과정을 거쳐 생성한 내부 프로시저를 반복 재사용할 수 있도록 캐싱해 두는 메모리 공간으로 SGA(System Global Area)의 구성요소다. SGA는 서버 프로세스와 백그라운드 프로세스가 공통으로 액세스하는 데이터와 제어 구조를 캐싱(명령어와 데이터를 캐시 기억 장치 또는 디스크 캐시에 일시적으로 저장하는 것)하는 메모리 공간이다. ◎ 소프트 파싱 vs 하드 파싱 사용자가 SQL문을 전달시 DBMS는 SQL을 파싱하고 해당 SQL이 라이브러리 캐시에 존재하는지 확인한다. 1. 소프트 파싱 사용자 > SQL 파싱 > 캐시에 존재 > 실행 2. 하드 파싱 사용자 > SQL 파싱 > 캐시에 존재 X > 최적화 > 로우 .. 2022. 10. 8.
SQL INDEX & INDEX HINT SELECT * FROM T; CREATE INDEX T_X01 ON T(DEPTNO, NO); CREATE INDEX T_X02 ON T(DEPTNO, JOB, NO); --통계 정보 수집 EXEC DBMS_STATS.GATHER_TABLE_STATS(USER, 'T'); --CTRL + E SELECT * FROM T WHERE DEPTNO = 10 AND NO = 1 ; --INDEX 힌트 지정 SELECT /*+ INDEX(T T_X02) */ * FROM T WHERE DEPTNO = 10 AND NO = 1 ; --FULL SCAN SELECT /*+ FULL(T) */ * FROM T WHERE DEPTNO = 10 AND NO = 1 ; ◎ 주의사항 1. ','(콤마) 사용 방법 -- 힌트.. 2022. 10. 7.
3. Update 심화 1. 기본 사용법 UPDATE emp SET job = 'MANAGER' , deptno = 20 WHERE empno = 7566 위는 WHERE 절의 empno에 해당하는 데이터의 job, deptno 컬럼을 수정하는 쿼리이다. empno는 PK이기 때문에 한건의 데이터만 수정되지만 PK가 아니고 여러 건이 조회되면 여러 건의 데이터가 한 번에 수정된다. 2. SET 절에 서브쿼리 사용법 UPDATE emp a SET a.sal = (SELECT MAX(aa.sal) FROM emp aa WHERE aa.job = a.job) , a.comm = (SELECT MAX(aa.comm) FROM emp aa WHERE aa.job = a.job) WHERE a.job = 'ANALYST' 다른 테이블에서.. 2022. 10. 6.
NULL은 IS NULL IS NOT NULL 로만 연산이 가능 출처 https://cafe.naver.com/sqlpd 데이터 전문가 포럼 (빅데이터분석기사... : 네이버 카페 빅데이터분석기사, ADP, ADsP, SQLP, SQLD, DAP, DAsP, 자격증 취득 등 데이터 전문가 커뮤니티입니다. cafe.naver.com 2022. 10. 5.
옵티마이저(Optimizer) & 프로시저(Procedure) 자료 ◎ 옵티마이저 https://coding-factory.tistory.com/743 [DB] 데이터베이스 옵티마이저(Optimizer)에 대하여 옵티마이저(Optimizer)란? 옵티마이저는 가장 효율적인 방법으로 SQL을 수행할 최적의 처리 경로를 생성해주는 DBMS의 핵심 엔진입니다. 컴퓨터의 두뇌가 CPU인 것처럼 DBMS의 두뇌는 옵티마이저라고 coding-factory.tistory.com ◎ 프로시저 https://fomaios.tistory.com/entry/PLSQL-%ED%94%84%EB%A1%9C%EC%8B%9C%EC%A0%80Procedure%EB%9E%80-feat-CRUD [Oracle] 프로시저(Procedure)란? (feat. C.R.U.D) 안녕하세요 Foma 💻 입니다! .. 2022. 10. 4.
2. INSERT문 심화 1. 기본 사용법 INSERT INTO emp (empno, ename, job, mgr, hiredate, sal, comm, deptno) VALUES (7788, 'SCOTT', 'ANALYST', 7566, '1987-04-19', 3000, NULL, 20) INTO 절의 컬럼 개수와 데이터 타입이 VALUES 절의 컬럼 개수와 데이터 타입이 동일해야 한다. VALUES 절에 테이블의 모든 컬럼이 나열되어 있다면, INTO 절의 컬럼을 생략할 수 있지만, INTO 절에 입력할 컬럼을 모두 나열하는 방식을 권장한다. 2. 기본 사용법 (컬럼명 생략) INSERT INTO emp VALUES (7788, 'SCOTT', 'ANALYST', 7566, '1987-04-19', 3000, NULL, 2.. 2022. 9. 29.
1. 카티션 제곱(cartesian product)이란? ◎ 카티션 제곱(cartesian product) 카티션 곱이란 엄밀히 말해 조인이라 할 수 없는 조인이다. 그 말인 즉슨 다른 조인절과 달리 WHERE 절에 별도의 조인 조건을 걸지 않는다. 쿼리 상 두 테이블 기준으로 FROM 절에는 각 테이블을 명시하나, WHERE 절에는 별도의 조건을 걸지 않는 것이다. (WHERE 절을 추가하지 않거나 WHERE 절을 추가해도 조인 조건을 주지 않는 경우). 그 결과 두 테이블의 데이터를 기준으로 가능한 모든 조합의 데이터가 조회된다. SELECT a.emp_id, a.emp_name, a.gender, a.age, a.dept_id, b.dept_id, b.dept_name, b.use_yn FROM emp_master a ,dept_master b ORDER.. 2022. 9. 28.
하룬 야히아 - 『새와 나』 새와 나 나는 언제나 궁금했다 세상 어느 곳으로도 날아갈 수 있으면서 새는 왜 항상 한곳에 머물러 있는 것일까 그러다가 문득 나 자신에게도 같은 질문을 던진다 2022. 6. 16.
2022년 6월 7일 ~ 6월 9일 - TEST 중 몰랐던 거 체크 ◎ 입력란 자릿수 제한 ※ format에 란을 입력 ※ Misc > limitbymask > both ◎ 그리드 컬럼 이동 ※ cellmovingtype을 col값으로 설정 ◎ SQL merge 참고 ※ merge의 기능은 조건에 따라 update, delete가 가능 https://lee-mandu.tistory.com/472 [오라클(oracle)] sql merge 기능 설명 및 예제 안녕하세요. 오늘은 sql 문법을 소개하고자 합니다. 바로 merge 문법 입니다. 제가 직접 실습한 위주의 포스팅을 하고자 하기때문에... 정의 및 문법은 간략하게 설명드리겠습니다. 설명 Merge 는 말 lee-mandu.tistory.com merge into Table1 using Table2 on (병합조건절.. 2022. 6. 9.
먼 훗날 묘비명 먼 훗날 묘비명 나는 이곳에 누워 바다의 소리를 듣습니다 육신에 붙어있던 험상궂은 미움들은 돌담 아래 숨어버리고 홍조 띤 사랑이 들어찹니다 나는 새벽에 일어나 당신이 남긴 쪽지를 펼쳐봅니다 색은 다양합니다 어느 하나 같지 않지만 모든 색이 사랑스럽습니다 석양이 질때면 당신이 남긴 발자취를 따라 춤을 춥니다 기쁨이 악보에 채워지고 노여움이 잠시간의 정적을 가져다 줄지라도 그 모두 선율이라는 단어에 담겨 정겹게 곡을 이룹니다 당신이 나를 추억할 때, 나도 당신을 추억하며 나는 오늘도 이곳에 누워 바다의 소리를 듣습니다 그 소리가 참으로 아름답습니다 2022. 6. 7.
2022년 5월 23일 ~ 5월 27일 - '단기자산보유현황 FrMnHoldSel - 2805' 화면 개발 중 미숙했던 부분 체크 보호되어 있는 글 입니다. 2022. 5. 26.