본문 바로가기

Database

[HANA] HANA 2.0 SPS04 - Multi-target replication with A/A

Combining Active/Active with Multi-Target Replication

  • Active/Active with Multi-Target Replication
    • SPS04부터 Multiple read-enabed secondaries 가 가능
    • 이 경우에 유저는 각각의 read-enabled secondaries에 직접 connection을 붙일 수 있음
    • Hint-based statement routing을 사용하기 위해서는 오직 하나의 read-enabled secondaries만 가능함
      • global.ini [system_replication] -> hint_based_routing_site_name = <site_name>
    • 이전까지는 Tier 2 system에만 가능했으나 Tier 3도 가능
    • Take care that system, supposed to use this feautre, are connected directly to Primary (Tier 1)

 

 

Hint-based Statement Routing

  • Hint-based statement routing
    • Connections to a primary system can use hint-based statement routing statement execution 
      to a secondary system on a per-statement basis.
    • To indicate that a statement should be hint-based routed to the secondary system
      add the hint text WITH HINT(RESULT_LAG('hana_sr')) to the end of the SQL SELECT statement
      • SELECT C1, C2 FROM T1 WHERE C3 = 'constant value' WITH HINT(RESULT_LAG('hana_sr'))
    • Queries that are executed directly (not prepared) are not hint-based routed even if they contain a hint
      • To take advantage of hint-based statement routing, there must be separate prepare and execute operations at the SQLDBC or JDBC level.
      • SQLDBC or JDBC (such as SAP HANA Studio, SAP HANA Cockpit, ABAP, or PyDBAPI)를 사용하는 경우에는 별도 설정 없이 사용 가능
  • Routing Condition
    • 아래 경우에 수행이 Primary에서 수행 됨
      • The connection's isolation level is set to repeatable read or serializable
      • Secondary 시스템으로의 connection이 불가한 경우 (예, secondary가 down, NW 이슈 등)
      • 현재 접속이 Write transaction을 가지는 경우
      • The query references temporary tables.
    • Result-set을 fetching하는 도중에 routed connection이 drop되면 application에 에러를 return
    • 참고]  SELECT 만 가능
  • Fallback Routing 
    • Secondary로 넘어 갔다가 다시 Primary로 돌아오는 경우
      • The hint contains a maximum delay time parameter and the secondary system is delayed by more than that amount.
      • Secondary에 Memory 사용률이 높은 경우
      • Primary에서는 dynamic tiering 관련 access가 없었으나 Secondary에서 수행하려고 보니 dynamic tiering이 요구 되는 경우
  • Timeout
    • 이전 수행에서 Connection이나 communication 에러로 Primary로 Re-routing 된 경우에는 특정 시간이 지나기 전까지는 그냥 primary에서 수행 됨
      • Secondary로의 연결을 재요청 하는 cost를 줄이기 위함
      • 특정 시간 = 5 sec ~ 5 min
        • 처음 시도 후 재시도 마다 시간이 자동으로 늘어나게 됨
    • Multitier system replication system에서 hint-based statement routing은 언제나 Primary - Secondary 간의 구성임

 

 

Multi-Target Replication with A/A Use case

  • 기본 Use case

 

  • Follow the Sun - optimize latency for workforce