인덱스의 구조에는 B- Tree, B+ Tree, Hash, Bitmap 등 다양한 구조가 있습니다. 이번 글에서는 Bitmap 구조에 대해서 알아보도록 하겠습니다.비트맵 인덱스(Bitmap Index)인덱스 칼럼의 데이터를 Bit 값인 0 또는 1로 변환하여 인덱스 키로 사용하는 방법입니다.비트맵 인덱스의 목적은 키(Key) 값을 포함하는 행의 주소를 제공하는 것입니다.B-Tree 인덱스와 달리 카디널리터 값이 낮은 경우(특정 데이터 집합의 유니크한 값의 개수가 적은 경우. 즉, 중복도가 높은 경우)에 사용하기 좋습니다.비트 맵은 흔히 색상표를 예시로 많이 드는데, 아래와 같은 형태로 표현됩니다.분포도가 나쁜 Column에 사용하기 적합하며 성능 향상의 효과를 얻을 수 있습니다.데이터가 Bit로 구성되..
WAS(Web Application Server)WAS란 동적인 데이터를 처리하는 서버를 의미합니다.여기서 동적인 데이터란 데이터베이스와 연결되어 주고 받는 데이터를 의미합니다.게시판 웹사이트를 예로 들자면, 실시간으로 올라오는 게시글, 게시글 조회수, 게시글 이름 등의 계속해서 변화하거나 변화될 수 있는 값들을 의미합니다. 우리가 흔히 아는 WAS에는 Apache Tomcat이 있습니다. 여기서 Tomcat은 WAS를 말하고 Apache는 Web Server를 의미합니다. WAS의 내부에 Web Server가 존재하지만 별도의 Web Server와 WAS를 같이 사용하기도 합니다.그 이유는 WAS 하나가 동적/정적 데이터를 같이 처리한다면 과부하로 인해 사용자의 요청에 응답이 느려질 수 있기 때문입니다..
동시성 제어(Concurrency Control)동시성 제어란?동시성 제어란 DBMS가 다수의 사용자 사이에서 동시에 작용하는 다중 트랜잭션의 상호간섭 작용에서 데이터베이스를 보호하는 것을 의미합니다. 일반적으로 동시성을 허용하면 일관성이 낮아지게 됩니다. 그래서 DBMS는 동시성을 제어할 수 있도록 LOCK 기능과 트랜잭션의 격리성 수준을 조정할 수 있는 SET TRANSACTION 명령어를 제공하고 있습니다.이러한 동시성을 제어하는 방법에는 낙관적 동시성 제어와 비관적 동시성 제어가 있습니다.낙관적 동시성 제어사용자들이 같은 데이터를 동시에 수정하지 않을 것이라고 가정.데이터를 읽은 시점에 LOCK을 걸지 않는 대신 수정 시점에 값이 변경되었는지 반드시 검사해야 합니다.비관적 동시성 제어사용자들이 같..
JVM의 init 메서드, 객체 초기화를 위한 인스턴스 초기화 메서드인스턴스 초기화 메서드(instance initialization method)JVM은 객체 인스턴스를 초기화할 때 init 이라는 고유한 메서드를 활용합니다. 예를 들어, 다음과 같이 Object 객체를 생성하는 코드가 있다고 가정해보겠습니다.Object obj = new Object(); 해당 코드를 컴파일 한 후 Byte Code를 살펴보면 다음과 같습니다.0: new #2 // class java/lang/Object3: dup4: invokespecial #1 // Method java/lang/Object."":()V7: astore_1 JVM은 객체의 초기화를 위해 이라는 특별한 이름의 ..
백본여러 소형 네트워크들을 묶어 대규모 파이프라인을 통해 극도로 높은 대역폭으로 다른 네트워크들의 집합과 연결되는 네트워크를 백본망 또는 기간망이라고 합니다. 솔직히, 정의만 놓고 보면 조금 이해하기 어려우실 수도 있습니다. 예를 들어 설명해보겠습니다.우리가 집에서 인터넷을 사용하기 위해 먼저, 유/무선 공유기를 통해서 신호를 보내게 되는데, 이 때 유/무선 공유기에 연결되어 있는 케이블을 통해 신호를 전달하게 됩니다. 이 신호는 나아가 외부에 있는 인터넷 서비스 공급자(=통신사, SKT, KT, LG)의 거대한 네트워크 망으로 전달되어 집니다. 그리고 거대한 네트워크 망에서 처리된 신호가 반대로 사용자에게 전달됩니다. 여기서 다루는 거대한 네트워크 망, 사용자 신호들이 모이는 이 거대한 네트워크 망이..
Tablespace 확장 방법1. Resize 방법alter database datafile '+DATAC1/ORA19/DATAFILE/TS1_01' resize 10G;alter database tempfile '/u03/oradata/ORA10/TT_TEMP01.dbf' resize 1000M;TEMP_Tablespace: Sorting이나 GROUP BY 할 때 사용하는 임시적인 공간입니다.2. Add 방법alter tablespace TS1 add datafile size 10G; # Oracle Managed Filesystem의 경우 이렇게 파일 이름을 지정하지 않습니다.alter tablespace TS1 add datafile '+DATAC1/ORA19/DATAFILE/TS1_02' siz..
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..
- Total
- Today
- Yesterday