1

MySQL 트리거를 사용하여 하나의 테이블과 다른 테이블간에 데이터를 동기화하고 데이터 변경에 따라 집계/보고서 테이블을 업데이트하는 데있어 장점과 단점은 무엇입니까?MySQL 트리거 사용의 장점/단점

tbl_user_location: 
1 Mike New York 
2 John London 
3 Emily Paris 
4 Jack New York 

tbl_summary: 
New York 2 
London 1 
Paris 1 

데이터가 요약이 업데이트 tbl_user_location에서 실시간 변경과 같이 집계/보고서 테이블에 의해

나는 같은 다른 테이블에 존재하는 데이터를 요약 테이블을 의미한다.

이 방법의 대안은 무엇입니까?

답변

2

이점 : SQL 트리거는 예약 된 작업을 실행하는 다른 방법을 제공합니다. 트리거는 테이블의 데이터가 변경되기 전이나 후에 자동으로 호출됩니다.

단점 그러나 SQL 트리거는 클라이언트 응용 프로그램에서 호출되어 보이지 않게 실행되므로 데이터베이스 계층에서 어떤 일이 발생하는지 파악하기 어렵습니다. 이로 인해 데이터베이스 서버의 오버 헤드가 증가 할 수 있습니다.

고속 데이터에 대해 이야기하는 경우 트리거에 대해 생각조차하지 않습니다. 스트림 처리 기법을 사용하라고 제안합니다. mysql bin-logs를 사용하여 이벤트를 캡처하고 스트림에 추가 한 다음 처리 할 수 ​​있습니다. 단순히 트리거는 실시간 데이터 집계에 좋은 아이디어가 아닙니다.

다음과 같은 것을 시도, 당신은이 예에 대한 몇 가지 검색을 할 필요가 있습니다 (MySQL의 바이너리 로그) maxwell-> kafka-> 스파크 (처리 된 데이터)

+0

감사합니다! 분명히 맥스웰이나 비슷한 무엇인가 내가 찾고있는 것입니다. [MySQL 데이터 스트림 도구 변경] (https://github.com/wushujames/mysql-cdc-projects/wiki)이 거기에있는 것 같습니다. –

+0

"고속 데이터가 트리거에 대해 생각조차하지 않는다고 말하는 경우 트리거가 동기식이라는 사실을 언급하고 있습니까? 그 의미에서 처리가 초기 쿼리를"차단 "한다는 의미입니까? –

+0

초고속, 평균 초당 이벤트 수가 많을 때 서버에 항상 높은 트리거를 발생시키는 트리거가 발생합니다. 나는 그것을 사용했기 때문에 속도가 높아지면 실패했다고 말했다. – Malinga