Certification/Kafka(CCAAK,CCDAK)

Source Connector slow query로 인한 장애기

엘호리스 2021. 11. 20. 21:39

Source Connector slow query로 인한 장애기

문제의 쿼리

  • table.poll.interval.ms 설정된 주기마다 해당 쿼리를 실행
  • SELECT NULL AS table_cat, o.owner AS table_schem, o.object_name AS table_name, o.object_type AS table_type, NULL AS remarks FROM all_objects o WHERE o.owner LIKE :1 ESCAPE '/' AND o.object_name LIKE :2 ESCAPE '/' AND o.object_type IN ('TABLE', 'SYNONYM', 'VIEW') ORDER BY table_type, table_schem, table_name

TableMonitorThread

  1. 해당 쿼리가 도는 것을 뒤늦게 알고 내부동작을 모르고 적용하는게 얼마나 한심한 짓인지 뒤늦게 깨달았다.
  2. 해당 SQL을 수행하는 것을 disable 하고 싶었지만 해당 옵션은 존재하지 않았다.
  3. table.poll.interval.ms 값을 무작정 엄청 큰 값으로 올려서 급한 불을 껏다.
  4. 근본적인 해결방안에 대한 고민을 시작했다.

binding parameter configuration으로 해결안

해당 slow query에 적절한 binding parameter를 대입하면 해결을 할 수 있지 않을까? 실제로 다른 사용자 중 한명은 query 옵션과 schema.pattern 옵션을 구현 의도와 다른 방법을 적용해 해당 문제를 해결하였다고 하는 사례가 있다. 아래와 같이 적용 시험 테스트를 해보니 문제를 해결할 수 있었다.

https://github.com/confluentinc/kafka-connect-jdbc/issues/346

  • WHERE o.owner LIKE :1 ESCAPE '/'
    • "schema.pattern": "NO_HIT"
  • AND o.object_name LIKE :2 ESCAPE '/'
    • "table.types": "NO_HIT"
  • query 옵션에다가 SQL을 직접 입력
    • "query": "select * from 스키마.테이블"

SourceConnectorTask을 통한 커스텀