Oracle DB의 메모리 구조SGA 메모리어떠한 서버의 Memory(=RAM)가 있다고 하면, DB를 설치할 때 메모리에서 "내가 얼마만큼의 공간을 사용하겠다"라고 지정한 공간이 SGA(System Global Area)입니다. 따라서, 이 SGA는 오라클이 사용하는 영역이 됩니다. 그리고 SGA의 내부에는 Buffer Cache, Shared Pool, Large Pool 등의 여러 공간이 존재합니다. 그럼 이 공간들에 대해 하나씩 설명해 보겠습니다.Buffer Cache필요한 데이터를 가져올 때 매번 Disk를 통해 가져오는 것은 속도적인 측면에서 느리기 때문에, 서버 기동 시 필요한 데이터나 자주 사용하는 데이터들을 DB로부터 가져와, 임시적으로 Buffer Cache에 올려 사용합니다. 이후, ..
패킷(Packet)네트워크에서 데이터를 주고받을 때 사용되는 데이터 조각을 의미합니다. 패킷의 본 정의는 소포, 통이라는 뜻을 가지고 있습니다. 하나의 완전한 데이터를 나눠서 각 조각을 소포같이 포장한 것이 바로 네트워크에서 가리키는 패킷입니다. 인터넷을 통해 우리가 주고받는 데이터는 모두 패킷으로 전달되고 수신됩니다. 이메일을 보낼 때나, 웹페이지에 접속할 때, 영상을 스트리밍할 때 모두 패킷으로 데이터가 오고 가고 있습니다. 각 패킷에는 수신사자 요청한 데이터뿐만 아니라 데이터가 잘 도착하기 위해 필요한 IP 주소, 패킷의 개수, 인터넷 프로토콜 등 다양한 정보도 같이 있습니다. 이런 정보가 있어야 패킷으로 나뉜 데이터를 수신자가 다시 합칠 수 있습니다. 패킷의 구성일반적으로 패킷은 1,000 ~ ..
옵티마이저(Optimizer)란?옵티마이저는 가장 효율적인 방법으로 SQL을 수행할 최적의 처리 경로를 생성해주는 DBMS의 핵심입니다.컴퓨터 두뇌가 CPU라면, DBMS의 두뇌는 Optimizer입니다. 개발자가 SQL을 작성하고 실행하면 소프트웨어 실행 파일처럼 즉시 실행되는 것이 아니라 옵티마이저(Optimizer)에서 "이 쿼리문을 어떻게 실행 시키겠다" 라는 여러가지 실행 계획을 세우게 됩니다. 이렇게 실행 계획을 세운 뒤 시스템 통계정보를 활용하여 각 실행 계획의 예상 비용을 산정한 후 각 실행 계획을 비교하여 최고의 효율을 가지고 있는 실행 계획을 판별한 후 그 실행 계획에 따라 수행하게 됩니다. 옵티마이저의 종류옵티마이저는 규칙 기반 옵티마이저와 비용 기반 옵티마이저로 나뉩니다. 규칙 기..
Query Optimize Skill(Query 최적화 및 튜닝 기술)Tip 1. Use Column Names Instead of * in SELECT Statement단순히, 몇 개의 column만 조회하는 경우라면 * (Asterisk)를 사용할 필요가 없습니다. 비록 적기 편할 순 있겠지만, 쿼리를 완료하기 위해서 더 많은 시간을 필요로 합니다.일부 칼럼만 선택함으로써 결과 테이블의 크기를 줄이고, 네트워크 트래픽을 감소 시킴으로써 쿼리의 평균 속도를 높일 수 있습니다.Original: SELECT * FROM SH.Sales;Improved: SELECT s.PROD_ID FROM SH.Sales s;27% Time Reduction Tip 2. Avoid include HAVING clause..
WITHIN GROUPWITHIN GROUP은 ORACLE에서 주로 사용되는 구문으로, LISTAGG 함수를 사용할 때 함께 사용하는 것을 많이 볼 수 있습니다. WITHIN GROUP 절은 평소에 많이 사용하지 않기 때문에 조금 생소하게 느껴질 수 있습니다. WITHIN GROUP 절은 LISTAGG, RANK, DENSE_RANK 함수 등과 함께 사용할 수 있습니다.WITHIN GROUP 절과 같이 사용할 수 있는 함수LISTAGG: 그룹 내의 여러 행을 하나의 문자열로 연결합니다.RANK: 그룹 내에서 순위를 매깁니다.DENSE_RANK: RANK와 유사하지만 동일한 값에 대해 동일한 순위를 부여합니다.PERCENTILE_CONT: 연속 분포 모델을 가정하고 백분위수 값을 계산합니다.PERCENTI..
해당 게시글의 내용은'김영한의 실전 자바 - 중급편'을 기반으로 작성되었으며, 제가 학습한 내용을 토대로 다시 작성하게 되었습니다.익명 클래스(Anonymous Class)익명 클래스(Anonymous class)는 지역 클래스의 특별한 종류의 하나입니다. 익명 클래스는 지역 클래스인데 클래스의 이름이 없다는 특징이 있습니다. 다음 코드를 살펴보겠습니다.package chapter08.local;public class LocalOuterV2 { private int outInstanceVar = 3; public void process(int paramVar) { int localVar = 1; class LocalPrinter implements Printer { ..
해당 게시글의 내용은'김영한의 실전 자바 - 중급편'을 기반으로 작성되었으며, 제가 학습한 내용을 토대로 다시 작성하게 되었습니다.지역 클래스내부 클래스의 종류 중 하나로, 내부 클래스의 특징을 그대로 갖습니다. 따라서, 바깥 클래스의 인스턴스 멤버에 접근할 수 있습니다.class Outer { public void process() { //지역 변수 int localVar = 0; //지역 클래스 class Local {...} Local local = new Local(); }}위 코드 처럼 바깥 클래스의 메서드 안에 정의한 클래스를 지역 클래스라 합니다.특징지역 변수처럼 코드 블럭 안에 클래스를 선언합니다.지역 클래스는 지역 변수에 접근할 수 있습니다.package chapter0..
해당 게시글의 내용은 '김영한의 실전 자바 - 중급편' 을 기반으로 작성되었으며, 제가 학습한 내용을 토대로 다시 작성하게 되었습니다.내부 클래스package chapter08.inner;public class InnerOuter { private static int outClassValue = 3; private int outInstanceValue = 2; class Inner{ private int innerInstanceValue = 1; public void print(){ //자기 자신에 접근 System.out.println(innerInstanceValue); //바깥 클래스의 인스턴스 멤버..
- Total
- Today
- Yesterday