TiDB HTAP 살펴보기
이 가이드에서는 TiDB HTAP(Hybrid Transactional and Analytical Processing) 기능을 조사하고 사용하는 방법에 대해 설명한다.
Note:
TiDB HTAP를 처음 사용하고 빠르게 사용하기를 원한다면 HTAP 퀵 스타트 가이드을 참조하여라.사용 사례(Use cases)
TiDB HTAP는 빠르게 증가하는 대용량 데이터를 처리하고, DevOps 비용을 절감하며, 온프레미스 또는 클라우드 환경에 쉽게 배포할 수 있으므로 데이터 자산의 가치를 실시간으로 제공한다.
다음은 HTAP의 일반적인 사용 예이다.
-
하이브리드 워크로드
하이브리드 로드 시나리오에서 실시간 OLAP(온라인 분석 처리)에 TiDB를 사용하는 경우에는 데이터에 TiDB 진입점만 제공하면 된다. TiDB는 특정 비즈니스를 기반으로 다양한 처리 엔진을 자동으로 선택한다.
-
실시간 스트림 처리
실시간 스트림 처리 시나리오에서 TiDB를 사용하는 경우에는 TiDB는 지속적으로 유입되는 모든 데이터를 실시간으로 쿼리할 수 있도록 한다. 동시에 TiDB는 동시성이 높은 데이터 워크로드와 비즈니스 인텔리전스(BI, Business Intelligence) 쿼리를 처리할 수 있다.
-
데이터 허브
TiDB를 데이터 허브로 사용하는 경우에는 TiDB는 애플리케이션 데이터와 데이터 웨어하우스를 원활하게 연결하여 특정 비즈니스 요구를 충족할 수 있다.
TiDB HTAP 사용 예에 대한 자세한 내용은 PingCAP 웹 사이트의 HTAP 관련 블로그를 참조하여라.
아키텍처
TiDB에서는 OLTP(온라인 트랜잭션 처리)를 위한 행 기반 스토리지 엔진 TiKV와 OLAP(온라인 분석 처리)용 컬럼 스토리지 엔진 TiFlash를 함께 사용하여 데이터를 자동으로 복제하며 강력한 무결성을 유지한다.
아키텍처에 대한 자세한 내용은 TiDB HTAP 아키텍처를 참조하여라.
환경 준비
TiDB HTAP의 기능을 확인하기 전에 데이터 양에 따라 TiDB와 해당 스토리지 엔진을 배포해야 한다. 데이터가 많을 경우(예: 100T) 기본 솔루션으로 TiFlash Massively Parallel Processing(MPP)을 사용하고 보조 솔루션으로 TiSpark를 사용하는 것이 좋다.
-
TiFlash
-
TiFlash 노드가 없이 TiDB 클러스터를 배포한 경우에는 현재 TiDB 클러스터에 TiFlash 노드를 추가한다. 자세한 내용은 TiFlash 클러스터 확장하기를 참조하여라.
-
TiDB 클러스터를 배포하지 않은 경우에는 TiUP를 사용하여 TiDB 클러스터 배포를 참조하여라. 최소한의 TiDB 토폴로지를 기반으로 TiFlash 토폴로지를 배포해야 한다.
-
TiFlash 노드 수를 선택하는 방법을 결정할 때는 다음 시나리오를 고려하여라.
- 소규모 분석 및 임시 쿼리를 사용하는 OLTP가 유스 케이스에 필요한 경우에는 하나 이상의 TiFlash 노드를 배포한다. 분석 쿼리의 속도를 획기적으로 향상시킬 수 있다.
- OLTP 처리량이 TiFlash 노드의 I/O 사용률에 큰 압력을 가하지 않으면, 각 TiFlash 노드는 더 많은 리소스를 계산에 사용하므로 TiFlash 클러스터는 거의 선형 확장성을 가질 수 있다. TiFlash 노드의 수는 예상되는 성능과 응답 시간에 따라 조정해야 한다.
- OLTP 처리량이 비교적 높은 경우(예: 쓰기 또는 업데이트 처리량이 1,000만 행/시간을 초과하는 경우), 네트워크 및 물리 디스크의 쓰기 용량이 제한되어 TiKV와 TiFlash 간의 I/O 병목 현상이되고 또한 핫스팟을 읽고 쓰는 경향이 있다. 이런 경우에는 TiFlash 노드의 수는 해석 처리의 계산량과 복잡한 비선형 관계를 가지므로 시스템의 실제 상황에 근거해 TiFlash 노드의 수를 조정할 필요가 있다.
-
-
TiSpark
- 데이터를 Spark로 분석해야 하는 경우에는 TiSpark를 배포한다. 구체적인 프로세스는 TiSpark 사용자 가이드를 참조하여라.
데이터 준비
TiFlash가 배포된 후 TiKV는 데이터를 TiFlash에 자동으로 복제하지 않다. TiFlash에 복제해야 하는 테이블을 수동으로 지정해야 한다. 그런 다음 TiDB는 해당 TiFlash 복제본을 만든다.
- TiDB 클러스터에 데이터가 없는 경우 먼저 데이터를 TiDB로 마이그레이션한다. 자세한 내용은 데이터 마이그레이션을 참조하여라.
- TiDB 클러스터에 이미 업스트림에서 복제된 데이터가 있는 경우에 TiFlash를 배포한 후에는 데이터 복제가 자동으로 시작되지 않다. TiFlash에 복제할 테이블을 수동으로 지정해야 한다. 자세한 내용은 TiFlash 사용을 참조하여라.
데이터 처리
TiDB를 사용하면 쿼리 또는 쓰기 요청에 대한 SQL 문을 간단히 입력할 수 있다. TiFlash 복제본이 포함된 테이블의 경우에는 TiDB는 프런트 엔드 옵티마이저를 사용하여 최적의 실행 계획을 자동으로 선택한다.
Note:
TiFlash의 MPP 모드는 기본적으로 활성화되어 있다. SQL 문이 실행되면 TiDB는 옵티마이저를 통해 MPP 모드에서 실행할지 여부를 자동으로 결정한다.
- TiFlash의 MPP 모드를 비활성화하려면 시스템 변수 tidb_allow_mpp의 값을
OFF
로 설정한다. - 쿼리 실행을 위해 TiFlash의 MPP 모드를 강제로 활성화하려면 tidb_allow_mpp와 tidb_enforce_mpp 값을
ON
으로 설정한다. - TiDB가 특정 쿼리를 실행하기 위해 MPP 모드를 선택하는지 확인하려면 MPP 모드의 Explain 문을 참조하여라.
EXPLAIN
문 출력에ExchangeSender
,ExchangeReceiver
연산자가 포함되어 있으면 MPP 모드가 사용되고 있는 거다.
성능 모니터링
TiDB를 사용할 때에는 다음 방법 중 하나를 사용하여 TiDB 클러스터의 상태 및 성능 메트릭을 모니터링할 수 있다.
- TiDB 대시보드 : TiDB 클러스터의 전반적인 실행 상태를 확인하고, 읽기 및 쓰기 트래픽의 분포와 추세를 분석하며 느린 쿼리에 대한 자세한 실행 정보를 학습할 수 있다.
- 모니터링 시스템(Prometheus & Grafana) : PD, TiDB, TiKV, TiFlash, TiCDC, Node_exporter 등를 포함한 TiDB 클러스터 관련 구성 요소의 모니터링 매개변수를 볼 수 있다.
TiDB 클러스터 및 TiFlash 클러스터에 대한 경고 규칙을 보려면 TiDB 클러스터의 경고 규칙와 TiFlash 경고 규칙을 참조하여라.
문제해결
TiDB 사용 중에 문제가 발생하면 다음 문서를 참조하십시오.
그리고 Github 이슈를 만들거나 AskTUG에 질문을 제출할 수 있다.
다음은 무엇인가
- TiFlash 버전, 중요한 로그 및 시스템 테이블을 보려면 TiFlash 클러스터 유지 관리를 참조하여라.
- 특정 TiFlash 노드를 삭제하려면 TiFlash 클러스터 확장을 참조하여라.
Explore HTAP 최종수정일 2022. 7. 8. 오전 11:48:44: tiflash refactor: split use-tiflash into multiple docs (#9452) (#9521)