데이터의 가상화와 복제 중에서 선택할 수 있는 방법을 배웠습니다. 하지만 가상화로 시작하기로 결정했지만 나중에 성능이 저하되어 복제로 전환하려면 어떻게 해야 할까요?
처음에는 가상 테이블 위에 리포트를 생성하는 것이 좋을 수 있습니다. 이 접근법은 빠른 구현과 손쉬운 유지보수를 지원하기 때문입니다.

그러나 경우에 따라 원격 데이터를 로컬 SAP HANA 시스템에 복제하면 원격 테이블의 데이터에 액세스하는 것보다 쿼리 성능이 향상될 수 있습니다. 따라서 가상화 접근 방식을 포기하고 복제 접근 방식을 재구현하는 것을 고려할 수 있습니다.
그러나 데이터 프로비저닝 접근법을 전환할 때의 문제는 복제된 데이터가 로드되는 새로운 대상 테이블을 가리키도록 모든 어플리케이션을 조정해야 한다는 것입니다. 이렇게 하면 부담 없이 수행할 수 있는 전송 및 테스트 태스크가 생성됩니다.
이 시나리오의 솔루션은 복제 테이블을 구현하는 것입니다. 이는 데이터 복제의 기능입니다.

복제 테이블은 가상 테이블 옆에 위치하며 동일한 구조를 갖습니다. 복제 테이블은 데이터를 실시간으로 캡처하고 저장합니다.

복제 테이블을 구현하는 주요 기능은 가상 테이블과 복제 테이블 간에 쉽게 전환할 수 있는 토글입니다. 즉, 성능이 저하되고 성능이 향상될 때 다시 전환하기 시작하면 복제 테이블로 전환할 수 있습니다.
언제 전환하시겠습니까?
문제가 있는 원격 쿼리 및 두 개의 모니터링 뷰를 사용하는 것이 도움이 될 수 있는 케이스를 쉽게 식별할 수 있습니다.
- M_EXPENSIVE_STATEMENTS
- M_REMOTE_STATEMENTS
가상 테이블에서 실행되는 SQL 문의 실행 시간이 특정 임계값을 초과하면 M_EXPENSIVE_STATEMENTS 모니터링 뷰에 포함됩니다.
M_EXPENSIVE_STATEMENTS 모니터링 뷰와 M_REMOTE_STATEMENTS 모니터링 뷰의 공통 필드를 사용하여 느린 SQL 문의 원격 쿼리를 찾을 수 있으므로 가상 테이블을 통해 복제로 전환할 수 있습니다.
복제 테이블 정의
복제된 데이터와 가상 테이블 간에 전환하려면 가상 테이블에 해당 복제 테이블이 추가되어야 합니다.
다음은 복제 테이블의 몇 가지 특징입니다.
- 각 가상 테이블에는 복제 테이블이 하나만 포함될 수 있습니다.
- 복제 테이블은 소스 테이블이 업데이트될 때 실시간으로 업데이트됩니다.
실시간 복제는 실시간 변경 데이터 캡처(CDC)를 지원하는 원격 소스에서만 지원됩니다.
그렇지 않으면 경우에 따라 테이블로 데이터를 로드할 수 있습니다. 그런 다음 복제는 스냅샷 복제본이 됩니다.
- 복제 테이블은 내부 사용자가 관리하는 내부 스키마에 자동으로 생성되어 저장됩니다. 그들은 뒤에서 숨어있다.
노트
복제 테이블 구조를 변경할 수 있는 사용자 소유 복제 테이블이라는 기능이 있습니다(예: 복제 테이블의 쿼리 성능 향상을 위해 분할 추가).
이 유형의 복제 테이블은 사용자 스키마에 생성되므로 수정할 수 있습니다.
Replica로 전환 후 가상 테이블로 다시 전환
- 가상 테이블에 복제를 추가하려면 다음 명령문을 실행합니다.Code Snippet12ALTER VIRTUAL TABLE <virtual_table_name> ADD SHARED [SNAPSHOT] REPLICA;
- 가상 테이블에 직접 다시 액세스하려면 다음 중 하나를 수행해야 합니다.
- 특정 쿼리의 경우 HINT를 사용하여 복제 항목이 아닌 가상 테이블을 사용하도록 읽기 모드를 재정의합니다.Code Snippet12SELECT * FROM <virtual_table_name> WITH HINT(NO_VIRTUAL_TABLE_REPLICA);
또는 쿼리를 실행하기 전에 SET 문을 사용하십시오.
Code Snippet12SET 'VIRTUAL_TABLE_REPLICA' = 'FALSE'; SELECT * FROM <virtual_table_name>; - ALTER 문을 사용하여 복제를 일시적으로 비활성화합니다. Code Snippet1ALTER VIRTUAL TABLE <virtual_table_name> DISABLE REPLICA;
나중에 다시 활성화할 수 있습니다. (사용 안 함 을 ENABLE 로 대체).
- DROP 명령어를 사용하여 복제를 삭제합니다.Code Snippet12ALTER VIRTUAL TABLE <virtual_table_name> DROP REPLICA;
- 특정 쿼리의 경우 HINT를 사용하여 복제 항목이 아닌 가상 테이블을 사용하도록 읽기 모드를 재정의합니다.
이 단원의 마지막에 도달하여 데이터 복제를 위한 다양한 접근 방식에 대해 배웠습니다.