OSS 52

PostgreSQL 내부 아키텍처에 따른 성능 지연 이슈?

ORACLE과 비교하여 내용을 확인하시면 PostgreSQL의 내부 구조를 좀 더 이해하기 쉬울 겁니다. 1. PostgreSQL Object관리 - Object와 파일이 1:1 구조라 할 수 있어 이해하기 쉬운 구조 - 하나의 디렉토리에 여러개의 파일 I/O가 발생되어 처리지연이 심해질 수 있는 구조 - 따라서 I/O성능이 상용제품에 비해 하드웨어 의존도가 높은 구조임 2. 추기형 아키텍처 채택 - 데이터의 UPDATE/ DELETE 할 때 이전에 데이터를 남겨두고 새로운 데이터를 끝에 추가하는 구조 (참고로 상용제품의 경우 추기형 구조를 채택하고 있는 제품은 없음, ORACLE은 스냅샷형 구조) - 추기형 구조의 단점은 데이터의 변경이 빈번할 경우 File Size가 커져 심각한 성능 저하의 원인이 ..

[LINUX] CentOS 설치

1. 장비에 CentOS DVD를 넣으면 아래와 같은 화면이 보이고 Enter를 누르면 설치가 시작됨 2. OS 설치를 시작하기 전에 설치 media를 테스트하려면 'OK' 를, 그렇지 않으면 'Skip' 을 선택하고 Enter 3. 'Next' 를 누르면 설치 Wizard 가 시작됨 4. 설치를 위해 사용할 언어 선택 5. 키보드 선택 6. 파티션 설정 - 목적에 따라 적절한 항목을 선택. 여기서는 Create Custom layout 선택 7. Create Custom layout 7.1. Swap 파티션: 시스템의 물리적 메모리의 2배 정도 용량으로 생성 (파일시스템 타입에서 swap 선택) 7.2. /boot 파티션: Primary Partition으로 선택하고 512MB로 생성 (파일시스템 타입..

[UNIX/LINUX] Shell Script - sed 명령을 이용한 new line <-> 특정 문자열 (2)

지난 글에 이어서 이번에는 sed를 이용하여 new line을 특정 문자열로 변경하는 방법에 대해 말씀 드리도록 하겠습니다. (2) new line --> 특정 문자열 # cat test.txt1111122222333334444455555 위와 같은 컨텐츠를 가진 txt 파일이 있다고 가정합니다. 위 컨텐츠에서 Enter가 적용된 부분(new line)을 ':'(colon)으로 변경하고자 한다면 다음과 같이 수행합니다. # sed 'N;N;N;N;s/\n/:/g' test.txt sed 명령에서 'N' 옵션은 줄바꿈문자(\n)를 /A패턴/ 공간에 더하고 입력의 다음 줄을 읽어 패턴 스페이스에 덧붙이겠다는 뜻입니다. 무슨 말인지 이해가 잘 되시나요? 사실 저는 아직도 완전히 이해가 되지는 않습니다.;;;;..

[UNIX/LINUX] Shell Script - sed 명령을 이용한 new line <-> 특정 문자열 (1)

이번 글은 sed 명령어를 이용하여 new line(개행문자 \n)을 특정 문자열로 바꾸거나, 특정 문자열을 new line으로 변경하는 방법에 대한 글입니다. Shell Script를 작성하다 보면 한꺼번에 많은 내용을 바꾸어야 할 때가 종종 발생하는데, 그 때 유용하게 쓰이는 명령어가 바로 이 'sed' 명령어죠. sed와 비슷한 역할을 하는 명령어로 'tr' 이라는 명령어도 있습니다. 각자가 처한 상황에 맞게, 취향에 따라 골라 쓰시면 되는데요. 그러한 내용 변경 상황 중에서도 new line, 다시 말해 줄바꿈 상태를 특정 문자열로 변경하거나, 그 반대로 특정 문자열을 줄바꿈 상태로 바꿔야 하는 경우가 있습니다. 그럴 때 다음과 같이 사용하시면 되겠습니다. (1) 특정 문자열 --> new lin..

[UNIX/LINUX] Shell Script 기본 - 5.case문 (1) 기본 사용법 및 예제

5. case문 (1) 기본 사용법 및 예제 case 변수 in 경우1) ~ ;; 경우2) ~ ;; 경우3) ~ ;; ...esac case문의 사용법은 아주 간단합니다. shell script를 아무 생각없이 코딩하다 보면 무수히 많은 if문을 남발하게 되고 소스 자체가 지저분해 보이게 되는데 이 때 이 case문만 적절히 사용할 줄 알아도 훨씬 심플하고 보기 좋은 shell script를 작성할 수 있습니다. 그럼 바로 예제문을 통해 설명 드리겠습니다. 먼저 동일한 결과를 보여주는 if문부터 보도록 하겠습니다. tmpSize=`df -g /tmp | grep tmp | awk '{print $3}' | cut -d '.' -f 1` echo 'The size of /tmp filesystem '${t..

PostgreSQL (PPAS) PLAN 및 실행계획 보기 [2]

explain analyze를 통한 PLAN 분석 예제 입니다. 해당 명령은 PLAN확인 뿐만 아니라 실제 수행이 동반되므로 주의해야 합니다. 1. 테스트를 위한 테이블은 먼저 생성한 테이블을 기준으로 합니다. create table zz_test001 ( a varchar(5), b varchar(10) ); create table zz_test002 ( c varchar(5), a varchar(5), b varchar(10) ); 2. SQL PLAN 정보 보기 (실행계획 확인) explain analyze select * from zz_test001 a, zz_test002 b where a.a = '00001' and a.a = b.a; 3. SQL PLAN 결과 explain analyze을 ..

[UNIX/LINUX] Shell Script 기본 - 4.while문 (1) 기본 사용법 및 예제

4. while문 (1) 기본 사용법 및 예제 while [ 조건식 ]; do // while문 시작 ~done // while문 종료 for문과 마찬가지로 while문 또한 루프 처리를 담당합니다. 사용법이 다소 다르므로 상황에 따라 적절히 선택해서 사용해야 하는데요. 이 while문 역시 조건식 뒤에 세미콜론을 사용하지 않고 사용 가능합니다. while문의 조건식엔 보통 산술 비교 형태가 들어갑니다. 가령, 다음과 같은 식이지요. while [ ${index} -le 10 ] // index 변수값이 10보다 작거나 같은 동안 while문 수행do ~done 위와 같은 조건식으로 시작하여 '~' 로 처리한 컨텐츠 부분에 그 조건식에 위배되는 순간이 오게 되면 while문을 종료하는 식이지요. 헌데 f..

[UNIX/LINUX] Shell Script 기본 - 3.for문 (2) 예제

#!/bin/shif [ -d $1 ]; then cd $1 if [ -f $2 -a -s $2 ]; then echo $2' is file and has contents more than one character.' array=`cat $1/$2` for day in ${array}; do if [ -n ${day} ]; then if [ ${day} == "Fri" -o ${day} == "Sat" ]; then echo ${day}' is very happy day!!' else echo ${day}' is gloomy day.' fi fi done else echo $2' is not file or has zero character.' fifi 앞서 if문 예제 글에서 보여 드렸던 예제 스크립트보..

[UNIX/LINUX] Shell Script 기본 - 3.for문 (1) 기본 사용법

3. for문 (1) 기본 사용법 for 단일변수 in 리스트; do // for문 시작 ~done // for문 종료 for문의 용도에 대한 것을 모르시는 분은 없을 겁니다. C, Java 등 많은 language들에서 while문과 함께 가장 많이 쓰이는 루프 처리 구문이 바로 이 for문이기 때문이죠. 위 구문에서도 if문 처리에서 보았던 것처럼 세미콜론을 볼 수가 있는데, 마찬가지로 세미콜론을 사용하지 않으려면 다음과 같은 형태로 처리해야 합니다. for 단일변수 in 리스트 // for문 시작do ~done // for문 종료 '리스트' 자리에는 보통 배열 형태로 들어가게 되는데요. '리스트' 자리의 배열은 일일이 값을 나열할 수도 있고 배열 형태의 값을 가진 파일을 읽어들이는 형태일 수도 있습..