본문 바로가기

Database

[HANA] Trouble shooting - Version GC Issue

GC Blocker 찾기

  • GC를 blocking하고 있는 Statement와 connection을 찾아야 함
    • Statement Library
      • MVCC Blocker Connection
      • MVCC Blocker Statement
      • MVCC Blocker Transaction
    • Connection ID, Statement 확인 필요
  • (Example) MVCC Blocker Statemen
    • Type = GLOBAL - Global version garbage collection blocker
                = TABLE   - The specific table의 garbage collecton blocker
      • TABLE의 GC blocker에 의한 Timestamp가 Global timestamp보다 낮음
      • 수행 후 바로 TABLE type으로 수행되는 것이 아님
        수행 후 일정 시간 소요 후 TABLE type으로 변경됨
Type IDLE_TIME_SEC CONNECTION_ID START_MVCC_TIMESTAMP STATEMENT_STRING INFO
GLOBAL 4000 200285 142113 SELECT * ~~~ M_MVCC_OVERVIEW
.VERSION_COUNT
TABLE 5000 200375 142024 SELECT * ~~~ M_MVCC_TABLE_SNALSHOT.VERSION_COUNT
TABLE 100 200478 142029 SELECT * ~~~

   

  • Blocker 찾기
select * 
from   m_prepared_statements 
where  statement_id = (
           select current_statement_id 
           from   m_connections 
           where  connection_id = (
                      select connection_id 
                      from   m_transactions 
                      where  min_mvcc_snapshot_timestamp = (
                                 select min(Value) 
                                 from   m_mvcc_tables 
                                 where  name = 'MIN_SNAPSHOT_TS'
                                                           ) 
                         and connection_id > 0
                                  )
                       )

 

  •  상세 내역
select * 
from   m_session_context 
where  connection_id = (
           select connection_id 
           from   m_transactions 
           where  min_mvcc_snapshot_timestamp = (
                      select min(Value) 
                      from   m_mvcc_tables 
                      where  name = 'MIN_SNAPSHOT_TS'
                                                ) 
              and connection_id > 0
                       )

 

  • 다음 경우 추가 확인 필요
    •  IDLE_TIME_SEC > 3600 Sec = 적절한 조치(Blocker 찾아서 확인 후 처리가 필요함
    • VERSION_COUNT > 1,000,000 = 시스템 전체적인 성능저하 발생
                                      <       10,000 = 무시가능
  • MVCC Blocker Statement에 blocker를 찾지 못하면 MVCC blocker transaction으로 찾아야 함

 

 

GC Issue의 해결책

  1. Query의 cancel 수행
    • ALTER SYSTEM CANCEL SESSION <the blocker connection ID>
  2. Kill the connections
    • ALTER SYSTEM DISCONNECT SESSION 'CONNECTION_ID'
  3. Connection ID를 찾지 못하거나 위의 명령이 효과가 없는 경우 Transaction kill 필요
    • hdbcons 'transaction cancel <the blocker transaction ID>'
  4. Indexserver restart 또는 replaction tableover 수행

'Database' 카테고리의 다른 글

[HANA] Admission control  (0) 2019.05.06
[HANA] 2222250 - FAQ: SAP HANA workload Management  (0) 2019.05.06
[HANA] Trouble shooting - MVCC Issue  (0) 2019.05.03
[HANA] Workload Management (internal)  (0) 2019.05.01
[HANA] HANA DB Trace  (0) 2019.04.28