Major- (863) 썸네일형 리스트형 [Linux] 에러 해결 : There are unfinished transactions remaining There are unfinished transactions remaining. You might consider running yum-complete-transaction, or “yum-complete-transaction –cleanup-only” and “yum history redo last”, first to finish them. If those don’t work you’ll have to try removing/installing packages by hand (maybe package-cleanup can help). The program yum-complete-transaction is found in the yum-utils package yum install yum-utils yu.. [SQLP] 3-1. 테이블 액세스 최소화 SQL 성능 향상을 위한 느린 랜덤 I/O 극복하기 -> 테이블 램덤 액세스가 성능에 미치는 영향과 그에 따른 테이블 랜덤 액세스를 최소화하는 방법 1. 테이블 랜덤 액세스 인덱스에 대한 맹신 또는 섣부른 자신감 1. 대용량의 테이블에서 인덱스를 사용해 조회시 빠르다. 2. 대량 데이터 조회시 인덱스 사용하면 테이블 전체 스캔보다 느리다. 인덱스 ROWID의 실체 -> 물리적 주소와 논리적 주소 : 디스크 상에서 테이블 레코드를 찾아가기 위한 위치 정보를 담은 논리적 주소 인덱스를 이용해 테이블 액세스하는 실행계획 SELECT * FROM 고객 WHERE 지역 = '서울'; Execution Plan ----------------------------------------------------------.. [SQLP] 2-3. 인덱스 확장기능 사용법 인덱스 기본 사용법 Index Range Scan 중심 인덱스 확장기능 사용법 Index Full Scan, Index Unique Scan, Index Skip Scan, Index Fast Full Scan 1. Index Range Scan [B*Tree 인덱스의 가장 일반적인 형태의 액세스] 인덱스 루트에서 리프 블록까지 수직적으로 탐색한 후 필요한 범위만 스캔 SET AUTOTRACE TRACEONLY EXP SELECT * FROM emp WHERE deptno=20; Execution Plan ------------------------------------------------------------------ SELECT STAEMENT Optimizer=ALL_ROWS TABLE ACCE.. [SQLP] 2-2. 인덱스 기본 사용법 인덱스 기본 사용법 : 인덱스를 Range Scan 하는 방법 인덱스 확장기능 사용법 : Index Range Scan 이외의 다양한 스캔 방식 1. 인덱스를 사용한다는 것 수직적 탐색이 가능한 이유 : 색인이 가나다 순으로 정렬되어 찾고자 하는 단어들이 서로 모여있기 때문 시작하는 단어가 아닌 포함하는 단어 찾기 : 색인이 정렬되어 있음에도 불구하고, 시작점을 찾을 수 없고, 스캔하다가 중간에 멈출 수도 없다. -> 찾고자 하는 단어들이 흩어져 있기 때문 -> 따라서,색인을 사용하지 못하는 것이 아니라, 시작점을 찾을 수 없고 멈출 수 없기 때문에 색인 전체를 스캔해야 한다. 인덱스의 사용 : 인덱스 칼럼 [선두 칼럼]을 가공하지 않아야 사용 가능 = 리프 블록에서 스캔 시작점을 찾아 스캔하다가 중간에.. [SQLP] 2-1. 인덱스 구조 및 탐색 인덱스 구조 및 탐색 인덱스 탐색 과정 : 수직적 탐색과 수평적 탐색 1. 미리 보는 인덱스 튜닝 데이터를 찾는 두 가지 방법 1. 처음부터 끝까지 찾기 [모든 교실을 돌면서 학생 찾는 경우] 2. 기록을 조회해서 해당되는 곳에서 찾기 [이름순으로 정렬한 학생 명부 이용] -> 해당하는 내용이 많으면 1번이 빠르고, 수가 적으면 2번이 빠르다. 이름 ->이름으로 많이 찾기 때문에 이름순 정렬- 학년-반-번호 -> 인덱스 ROWID 강수지 4학년 3반 37번 홍길동 1학년 5반 15번 홍길동 2학년 6반 24번 홍길동 5학년 1반 16번 데이터베이스 테이블에서 데이터를 찾는 방법 : 테이블 전체 스캔 -> 모든 교실을 돌면서 학생 찾는 경우 : 인덱스 이용 -> 이름순으로 정렬한 학생 명부 이용 테이블 전.. [SQLP] SQL 처리과정과 I/O 연관된 오라클 파라미터 T 테이블에 통계정보를 수집하는 명령어 exec dbms_stats.gather_table_stats(user, 't'); 실행계획 확인하는 방법 [AutoTrace를 활성화해서 SQL 실행] SET AUTOTRACE TRACEONLY EXP; 데이터베이스의 블록 사이즈 확인 SHOW PARAMETER BLOCK_SIZE 또는 파라미터 뷰 직접 조회 SELECT VALUE FROM V$PARAMETER WHERE NAME='db_blck_size'; 손수레에 한 번에 담는 양 조회하고 변경 SHOW PARAMETER db_file_multiblock_read_count ALTER SESSION SET db_file_multiblock_read_count=128; [SQLP] 1-3. 데이터 저장 구조 및 I/O 메커니즘 데이터 저장 구조, 디스크 및 메모리에서 데이터를 읽는 메커니즘을 통해 I/O에 대한 이해 1. SQL이 느린 이유 : 디스크 I/O 때문 데이터베이스 서버와 스토리지 서버 간의 I/O 병목 I/O처리 하는 동안 프로세스가 잠을 자고있다. 프로세스가 갖는 생명주기에서 실행중인 프로세스는 인터럽트에 의해 수시로 실행 준비로 전환된다. [여러 프로세스가 하나의 CPU를 공유할 수 있지만, 특정 순간에는 하나의 프로세스만 CPU를 사용할 수 있기 때문에] 인터럽트 없이 실행중인 프로세스도 디스크에서 데이터를 읽어야 할 때 CPU를 OS에 반환하고 수면(waiting) [대기] 상태에서 I/O가 완료되기를 기다린다. [정해진 OS 함수를 호출 (I/O CALL)하고 CPU반환한 채 알람을 설정하고 대기 큐에서 .. [SQLP] 1-2. SQL 공유 및 재사용 1. 소프트 파싱과 하드 파싱의 차이점 라이브러리 캐시 : SQL 최적화 과정을 거쳐 생성한 내부 프로시저를 반복 재사용할 수 있도록 캐싱해두는 메모리 공간 라이브러리 캐시는 SGA 구성요소로, SGA는 System Global Area이며 서버 프로세스와 백그라운드 프로세스가 공통적으로 액세스하는 데이터와 제어 구조를 캐싱하는 메모리 공간이다. 사용자가 SQL문 전달 -> DBMS가 SQL파싱 후 해당 SQL이 라이브러리 캐시에 존재하는지 확인 -> 캐시 찾으면 실행 : 소프트 파싱 -> 캐시 못찾으면 최적화 단계를 거친다. : 하드 파싱 최적화 과정이 필요하면 하드 파싱인 이유 : 조인 순서, 조인 방식, 테이블 스캔할지 인덱스 스캔할지, 인덱스 스캔시 스캔 방식 결정 옵티마이저가 사용하는 정보 : .. 이전 1 ··· 72 73 74 75 76 77 78 ··· 108 다음