상세 컨텐츠

본문 제목

스마트하게 워크로드 관리하기

Db2 for LUW

by 파란디비 2023. 3. 12. 23:38

본문

데이터베이스 시스템에서 처리되는 워크로드는 다양합니다. 한정된 시스템 자원을 효율적으로 분배하여 각 워크로드마다 요구되는 응답시간을 얻는 것이 워크로드 관리의 주요 목적입니다. Db2에서 Adativie WLM 기능은 워크로드의 특성과 사용할 수 있는 자원을 동적으로 파악하여 자동 제어하는 기술로, 분배된 자원을 최대한 활용하면서, Peak Time 시스템 과부하를 예방하고 안정적인 서비스를 유지하개 할 수 있습니다. 

Db2 Workload Manager

워크로드 관리를 통해 얻는 장점은 무엇일까요?

  • 시스템 안정성 및 응답성을 보장받습니다. 
  • 워크로드별 우선순위를 정하고 그에 따라 자원을 분할 할 수 있습니다
  • 정의된 관리 규칙에 의해 불량 작업을 감지하거나 중단 시킬 수 있습니다.
  • 각 워크로드에 대한 모니터링을 통해 개선 활동을 할 수 있습니다.

빠른 조회, ETL,기타로 구분되는 시스템에서  워크로드 매니저 구성

시스템에서 구분된 수행 워크로드의 종류에 따라 자원을 분배할 서비스 클래스와 해당 워크로드를 생성합니다. 

 

(1) Service Class 

create service class HIPRI soft resource shares 300 for workload type INTERACTIVE
create service class ETL soft resource shares 300 for workload type BATCH
create service class GENERAL soft resource shares 600 for workload type MIXED
  • for workload type <interactive | batch |  mixed> : 쿼리 타입
  • soft resource shares <share> : 타 워크로드와 동시 사용될 때 최대 허용 리소스, 남는 자원 있으면 초과 가능
  • hard resource shares <share> : 최대 허용 리소스
  • minimun resource share <value> PERCENT : 예약 할당 리소스

(2) Workload  - Service Class 매핑

create workload REPORTS session_user(‘EDW_REPORTS’) service class HIPRI
create workload ETLJOBS session_user(‘EDW_ETL_USER’) service class ETL
alter workload SYSDEFAULTUSERWORKLOAD service class GENERAL

SORTSHRHEAPUTIL 임계치 구성

  • SHEAPTHRES_SHR의 25%이상을 요구하는 작업을 중단합니다. 
CREATE THRESHOLD LARGEACTIVITY FOR DATABASE WHEN SORTSHRHEAPUTIL > 25 STOP EXECUTION;
  • SHEAPTHRES_SHR의 25%이상을 요구하는 작업을 중단하고, 5분동안 다른 작업의 진입 차단합니다.
CREATE THRESHOLD LARGEACTIVITY FOR DATABASE WHEN SORTSHRHEAPUTIL > 25 AND BLOCKING ADMISSION FOR MORE THAN 5 MINUTES  STOP EXECUTION;

작업 우선순위 조정

수행중인 작업 대상으로 High, Medium, Low, Critical 등으로 우선순위를 조정할 수 있습니다.

  • 중요 워크로드의 우선순위를 High로 조정
ALTER WORKLOAD CRITICAL_REPORTS PRIORITY HIGH;
  • 특정 세션 우선순위를 Low로 조정
CALL SYSPROC.WLM_SET_SESSION_PRIORITY(2361, ‘LOW’); 

Short Query Bypass

매우 짧은 쿼리를 대기열에 넣으면 성능에 해로운 영향을 미칠 수 있습니다. 아래의 워크로드는 적응형 워크로드 관리자에 의해 통제 받지 않습니다. 

  • 기본 관리 워크로드(SYSDEFAULTADMWORKLOAD)와 연결된 연결을 통해 제출된 쿼리
       db2 “set workload to SYSDEFAULTADMWORKLOAD”
  • 예상 실행 시간이 1초 미만이거나 예상 비용이 25000 timeron 미만인 쿼리(아래 제외)
    - 구성된 정렬 메모리(sheapthres_shr)의 2%를 초과 사용이 예상되는 Short 쿼리
    - 데이터베이스 정렬 메모리(sheapthres_shr)의 전체 사용량이 95%를 초과할 때 정렬 메모리가 필요한 모든 쿼리 
  • Bypass된 작업은 MON_GET_ACTIVITY 에서 adm_bypassed 로 확인 가능합니다. 

제한받은 자원 모니터링

WITH LOADTRGT(LOADTRGT) AS (SELECT MAX(VALUE) FROM SYSIBMADM.DBCFG WHERE NAME =
'wlm_agent_load_trgt'),
SORTMEM (SHEAPTHRESSHR, SHEAPMEMBER) AS (SELECT VALUE, MEMBER FROM SYSIBMADM.DBCFG
WHERE NAME = 'sheapthres_shr'),
STMTS(NUMSTMT) AS (SELECT COUNT(*) FROM TABLE(MON_GET_ACTIVITY(NULL,-2)) AS T WHERE
ADM_BYPASSED = 0 AND (ACTIVITY_STATE = 'EXECUTING' OR ACTIVITY_STATE = 'IDLE') AND
MEMBER=COORD_PARTITION_NUM),
ALLOCMEM(ALLOCMEM, ALLOCMEMBER) AS (SELECT SORT_SHRHEAP_ALLOCATED,MEMBER FROM
TABLE(MON_GET_DATABASE(-2)) AS T)
SELECT MAX(DEC((FLOAT(ALLOCMEM)/FLOAT(SHEAPTHRESSHR))*100, 5,2)) AS PERCENT_SORTMEM_USED,
MAX(DEC((FLOAT(NUMSTMT)/FLOAT(LOADTRGT))*100,5,2)) AS PERCENT_THREADS_USED
FROM LOADTRGT, SORTMEM, STMTS, ALLOCMEM
WHERE SHEAPMEMBER=ALLOCMEMBER

 

결과  --> Agent 와 SORT Memory 중 Sort Memroy에 제한

 

쿼리 상태 모니터링 

with sortmem (sheapthresshr, member) as
(select value, member from sysibmadm.dbcfg where name = 'sheapthres_shr')
select b.application_name, b.session_auth_id, a.entry_time, a.local_start_time,
a.activity_state, a.query_cost_estimate, a.estimated_runtime,
a.effective_query_degree, a.adm_bypassed, 
(a.estimated_sort_shrheap_top * 100) / c.sheapthresshr as mem_estimate_pct,
(a.sort_shrheap_top * 100) / c.sheapthresshr as peak_mem_used_pct,
substr(a.stmt_text, 1, 512) as stmt_text
from table(mon_get_activity(null,-2)) as a,
table(mon_get_connection(null,-1)) as b,
sortmem as c
where (a.application_handle = b.application_handle) order by activity_state;

결과

  • QUEUED : 대기 중 상태
  • ADM_BYPASS : BYPASS된 SHORT QUERY
  • MEM_ESTIMATED_PCT : 승인 시 예상 메모리 크기
  • PEAK_MEM_USED_PCT : 최대 사용 메모리 크기

적응형 워크로드 관리를 적용하면 복잡한 구성 절차 없이 제한된 시스템 자원을 최대한 활용하면서 안정적인 시스템 운영을 도모할 수 있습니다. 

'Db2 for LUW' 카테고리의 다른 글

CP4D에 Db2U 설치하기  (0) 2023.06.07
Db2U - 컨테이너형 Db2  (0) 2023.05.20
In-DB 머신러닝  (0) 2023.02.10
데이터 가상화  (0) 2023.01.16
dbsummary로 Db2 성능 문제 원인 찾기  (0) 2022.12.20

관련글 더보기

댓글 영역