database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
ㆍDB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
DB2 Q&A 1095 게시물 읽기
No. 1095
Private Sort heap과Shared Sort heap 차이점은?
작성자
dbman
작성일
2006-09-04 23:32
조회수
7,734

둘다 소트 힙인데 정확히 어떤것이며 둘의 차이점은 무엇입니까?

Private Sort heap은 다른 app는 사용을 못하고 Shared Sort heap 서로 공유가

가능한 힙 영역입니까?

도무지 문서를 봐도 이해가 안가네여?

그리고 db snapshot 모니터 요소중 Total Private Sort heap allocated,Total Shared Sort heap allocated이 의미하는 바는 무엇인지요?

위와 관련이 있는겁니까?

이 글에 대한 댓글이 총 1건 있습니다.



sheapthres
- 정렬 힙 임계값
구성 매개변수

구성 유형
데이터베이스 관리 프로그램
적용 대상
  • 로컬 및 리모트 클라이언트가 있는 데이터베이스 서버
  • 로컬 클라이언트가 있는 데이터베이스 서버
  • 로컬 및 리모트 클라이언트가 있는 파티션된 데이터베이스 서버
매개변수 유형
구성 가능
디폴트 [범위]
UNIX 32비트 플랫폼
20 000 [ 250 -- 2 097 152 ]
Windows 플랫폼
10 000 [ 250 -- 2 097 152 ]
64비트 플랫폼
20 000 [ 250 -- 2 147 483 647 ]
측정 단위
페이지(4KB)

개별 및 공유 정렬에서는 두 개의 서로 다른 메모리 소스에서 메모리를 사용합니다. 공유 정렬 메모리 영역의 크기는 sheapthres 의 값을 기초로 데이터베이스에 처음으로 연결될 때 통계적으로 사전에 결정됩니다. 개별 정렬 메모리 영역의 크기에는 제한이 없습니다.

sheapthres 매개변수는 개별 정렬과 공유 정렬에 대해 다르게 사용됩니다.

  • 개별 정렬의 경우, 이 매개변수는 주어진 시간에 개별 정렬에 소요될 수 있는 총 메모리 양에서의 인스턴스 전반의 소프트 한계입니다. 인스턴스의 개별 정렬 메모리 소요량이 이 한계에 도달하면 들어오는 추가 개별 정렬 요청에 대해 할당되는 메모리는 감소될 것으로 간주됩니다.
  • 공유 정렬의 경우, 이 매개변수는 주어진 시간에 공유 정렬에 소요될 수 있는 총 메모리 양에서의 데이터베이스 전반의 하드 한계입니다. 이 한계에 도달하면 어떠한 추가 공유 정렬 요청도 허용되지 않습니다(총 공유 정렬 메모리 소요량이 sheapthres에 지정된 한계치 이하가 될 때까지). (특정 상황에서 공유 정렬 최대값을 구성하는 다른 방법은 sheapthres_shr 데이터베이스 구성 매개변수를 사용하는 것입니다.)

정렬 힙을 사용하는 조작의 예에는 정렬, 해시 조인, 동적 비트맵(인덱스 AND 작업 및 Star Join에 사용) 및 테이블이 메모리에 있는 조작이 있습니다.

임계값을 명시적으로 정의하면 데이터베이스 관리 프로그램이 많은 수의 정렬에 과다한 메모리를 사용하는 것을 방지할 수 있습니다.

파티션되지 않음에서 파티션된 데이터베이스 환경으로 이동할 때 매개변수의 값이 증가할 이유는 없습니다. 단일 데이터베이스 파티션 환경에서 데이터베이스와 데이터베이스 관리 프로그램 구성 매개변수를 조정한 적이 있으면, 대부분의 경우 같은 값은 파티션된 데이터베이스 환경에서도 제대로 작동합니다.

데이터베이스 관리 프로그램 구성 매개변수와 같은 정렬 힙 임계값 매개변수는 전체 DB2 인스턴스에 적용됩니다. 이 매개변수를 다른 노드 또는 파티션에서 다른 값으로 설정하는 방법은 둘 이상의 DB2 인스턴스를 작성하는 것입니다. 이러한 경우에 다른 데이터베이스 파티션 그룹에서 다른 DB2 데이터베이스를 관리해야 합니다. 이러한 배열은 파티션된 데이터베이스 환경의 여러 가지 이점을 무효하게 만듭니다.

권장사항: 데이터베이스 관리 프로그램 인스턴스에 있는 가장 큰 정렬 힙 매개변수의 합당한 배수로 이 매개변수를 설정하는 것이 가장 좋습니다. 이 매개변수는 인스턴스 내의 데이터베이스에 정의되어 있는 최대 정렬 힙 최소 두 배는 되어야 합니다.

개별 정렬을 수행하고 시스템 메모리가 제한되지 않을 경우에는 다음 단계를 통해 이 매개변수에 맞는 최적의 값을 계산할 수 있습니다.

  1. 각 데이터베이스에 대해 일반적인 정렬 힙 사용 계산은 다음과 같습니다.
         (데이터베이스에 대해 실행되는 동시 에이전트의 일반적인 수)
       * (정렬 힙(해당 데이터베이스에서 정의됨)) 
  2. 위 결과의 합계를 계산하면 인스턴스 내에서 모든 데이터베이스의 일반적인 환경에서 사용할 수 있는 총 정렬 힙이 제공됩니다.

정렬 성능과 메모리 사용 사이의 적절한 균형을 위해 이 매개변수를 조정하려면 벤치마킹 기법을 사용해야 합니다.

포스트 임계값 정렬( post_threshold_sorts ) 모니터 요소를 사용하여 정렬 활동을 추적하는 데 데이터베이스 시스템 모니터를 사용할 수 있습니다. 


sortheap - 정렬 힙 크기 구성 매개변수

구성 유형
데이터베이스
매개변수 유형
구성 가능한 온라인
전파 클래스
명령문 바운더리
디폴트 [범위]
32비트 플랫폼
256 [ 16 - 524 288 ] 2 2
64비트 플랫폼 2
256 [ 16 - 4 194 303 ] 2
측정 단위
페이지(4KB)
할당 시기
정렬을 수행해야 할 때
해제 시기
정렬이 완료될 때

이 매개변수는 개별 정렬에 사용될 개인용 메모리 페이지의 최대수나, 공유 정렬에 사용될 공유 메모리 페이지의 최대수를 지정합니다. 개별 정렬의 경우, 이 매개변수는 에이전트 개인용 메모리에 영향을 줍니다. 공유 정렬의 경우, 이 매개변수는 데이터베이스 공유 메모리에 영향을 줍니다. 정렬마다 필요한 만큼 데이터베이스 관리 프로그램에 의해 할당되어 개별 정렬 힙이 있습니다. 정렬 힙은 데이터가 정렬되는 영역입니다. 옵티마이저에 의해 지정될 경우, 매개변수에 의해 지정된 힙보다 더 작은 힙이 옵티마이저에 의해 제공된 정보를 사용하여 할당됩니다.

권장사항: 정렬 힙(heap)으로 작업할 때 다음 사항을 고려하십시오.

  • 적합한 인덱스로 정렬 힙 사용을 최소화할 수 있습니다.
  • 해시 조인 버퍼와 동적 비트맵은 (AND 작업 인덱스와 Star 조인을 사용하는) 정렬 힙(heap) 메모리를 사용하십시오. 이들 기술을 사용할 때 이 매개변수의 크기를 늘리십시오.
  • 자주 많은 데이터를 정렬해야 하는 경우, 이 매개변수의 크기를 늘리십시오.
  • 이 매개변수의 값을 증가시키면 데이터베이스 관리 프로그램 구성 파일에 있는 sheapthres 매개변수도 조정해야 하는지를 조사해야 합니다.
  • 정렬 힙의 크기는 옵티마이저가 액세스 경로를 결정할 때 사용됩니다. 이 매개변수를 변경한 후에는 (REBIND 명령을 사용하여) 응용프로그램을 리바인드해야 합니다.


정렬 성능에 대한 지침

쿼리가 정렬되거나 그룹화된 결과를 자주 요구하기 때문에, 정렬은 쿼리에 대해 자주 요구되고 적합한 정렬 힙(heap) 영역의 구성은 쿼리 성능에서 아주 중요한 문제입니다. 다음과 같은 경우에 정렬이 필요합니다.

  • 요청된 순서화를 충족시키는 인덱스가 없습니다(예: ORDER BY절을 사용하는 SELECT문).
  • 인덱스는 존재하지만 정렬이 인덱스를 사용하는 것보다 더 효율적입니다.
  • 인덱스가 작성되었습니다.
  • 정렬할 인덱스 페이지 수로 인해 인덱스가 삭제되었습니다.

정렬 작업은 두 단계로 이루어집니다.

  1. 정렬 단계

    9 정렬은 오버플로우 또는 비오버플로우 9 될 수 있습니다. 정렬된 9 데이터가 정렬이 수행될 때마다 할당되는 메모리 블록인 정렬 힙에 완전히 9 들어맞지 않을 경우, 데이터베이스의 임시 테이블로 오버플로우됩니다. 오버플로우하지 9 않는 정렬은 그렇지 않은 정렬보다 항상 더 잘 수행됩니다.

  2. 정렬 단계의 결과 리턴

    리턴은 파이프 또는 비파이프 가 될 수 있습니다. 정렬된 정보가 임시 테이블이 최종 정렬된 데이터 목록을 저장하지 않고 직접 리턴할 수 있는 경우, 파이프 정렬입니다. 정렬된 정보가 임시 테이블을 리턴해야 하는 경우, 비파이프 정렬입니다. 파이프 정렬은 항상 비파이프 정렬보다 더 잘 수행됩니다.

정렬에 영향을 미치는 요소

다음은 정렬 성능에 영향을 미치는 요소입니다.

  • 다음 데이터베이스 구성 매개변수에 대한 설정
    • 각 정렬에 사용되는 메모리 양을 지정하는 정렬 힙 크기( sortheap )
    • 모든 정렬에 대한 전체 인스턴스에 걸쳐 사용 가능한 정렬을 위한 전체 메모리 양을 제어하는 정렬 힙 임계값( sheapthres ) 및 공유 정렬에 대한 정렬 힙 임계값( sheapthres_shr )
  • 다량의 정렬을 포함하는 명령문
  • 불필요한 정렬을 피하는 데 도움이 될 수 있는 인덱스 누락
  • 정렬을 최소화하지 않는 응용프로그램 논리
  • 병렬 정렬은 정렬의 성능을 향상시키지만, 명령문이 파티션내 병렬 처리를 사용하는 경우에만 발생할 수 있습니다.

일반적으로, 인스턴스에 걸쳐 사용 가능한 전체 정렬 메모리( sheapthres )를 과도한 페이징을 일으키지 않을 만큼 가능한 한 크게 만들어야 합니다. 정렬은 전적으로 정렬 메모리에서만 수행될 수 있으나 초과 페이지 스와핑을 발생시킬 수 있습니다. 이런 경우, 대량 정렬 힙(heap)의 이점을 잃게 됩니다. 이러한 이유로, 운영 체제 모니터를 사용하여 구성 매개변수 정렬을 조정할 때마다 시스템 페이징의 변경사항을 추적해야 합니다.

또한 파이프 정렬 시 응용프로그램이 해당 정렬과 연관되는 커서를 닫을 때까지 정렬 힙은 해제되지 않습니다. 파이프 정렬은 커서가 닫힐 때까지 메모리를 사용할 수 있습니다.

주:
DB2(R) 부분 키 2진 정렬 기법에서의 향상을 위해 정수가 아닌 데이터 유형 키를 포함시킬 때, 긴 키를 정렬할 경우에 약간의 추가 메모리가 필요합니다. Long 키가 정렬에 사용되는 경우, sortheap 구성 매개변수를 증가시키십시오.

정렬 성능 관리 기법

정렬이 중요한 성능 문제점인 특정 응용프로그램 및 명령문을 식별하려면 다음을 수행하십시오.

  • 응용프로그램과 명령문 레벨의 이벤트 모니터를 설정하여 가장 긴 총 정렬 시간을 갖는 응용프로그램을 식별할 수 있습니다.
  • 이러한 각각의 응용프로그램 내에서 가장 긴 총 정렬 시간 을 갖는 명령문을 찾으십시오.
  • Visual Explain과 같은 도구를 사용하여 이러한 명령문을 조정하십시오.
  • 적절한 인덱스가 있는지 확인하십시오. Visual Explain을 사용하여 주어진 명령문에 대한 모든 정렬 조작을 식별할 수 있습니다. 그런 다음 이 명령문에 의해 액세스되는 각각의 테이블에 대한 적절한 인덱스가 존재하는지 여부를 조사하십시오.

주:
Explain 테이블을 통해 검색하여 쿼리에 정렬 조작이 있는지 식별할 수 있습니다.

데이터베이스 시스템 모니터와 벤치마킹 기법 사용은 sortheap sheapthres 구성 매개변수를 설정하는 데 도움이 될 수 있습니다. 각 데이터베이스 관리 프로그램 및 해당 데이터베이스의 경우, 다음을 수행하십시오.

  • 대표 워크로드를 설정하고 수행하십시오.
  • 각 적용 가능한 데이터베이스에 대해 벤치마크 워크로드 기간 중에 다음의 성능 변수에 대한 평균 값을 수집하십시오.
    • 사용 중인 총 정렬 힙(heap)
    • 사용 중인 정렬
  • sortheap 을 각 데이터베이스에 대한 사용 중인 총 정렬 힙(heap) 평균으로 설정하십시오.
  • sheapthres 를 설정하십시오. 해당 크기를 설정하려면 다음을 수행하십시오.
    1. 가장 큰 sortheap 값을 갖는 인스턴스 내의 데이터베이스를 판별하십시오.
    2. 이 데이터베이스의 평균 정렬 힙(heap) 크기를 판별하십시오.

      판별하기가 너무 어려우면 최대 정렬 힙(heap)의 80 퍼센트를 사용하십시오.

    3. sheapthres 를 사용 중인 정렬의 평균 수 위의 계산된 평균 정렬 힙(heap) 크기를 곱한 값으로 설정하십시오.

      이것이 바람직한 초기 설정입니다. 그런 다음 벤치마크 기법을 사용하여 이 값을 조정할 수 있습니다.


도님이 2006-09-05 10:04에 작성한 댓글입니다.
이 댓글은 2006-09-05 10:17에 마지막으로 수정되었습니다. Edit
[Top]
No.
제목
작성자
작성일
조회
1099수세리눅스 DB2설치 [1]
이종민
2006-09-12
6793
1098에러 확인 방법 [2]
에러
2006-09-11
7930
1096[질문] UNION ALL 사용시 결과가 이해가 안되네요. [2]
이준식
2006-09-06
7207
1095Private Sort heap과Shared Sort heap 차이점은? [1]
dbman
2006-09-04
7734
1092sqlldr과 같은 기능이 있는지요 [1]
송지영
2006-09-01
7354
1091[질문] 꼭 좀 알려주세요.. 두 테이블에서 조회 후 중복제거.. [2]
beginner
2006-08-31
7731
1089스냅샷 모니터요소 [1]
db2
2006-08-30
6848
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다