banner
홈페이지 / 블로그 / 기계 학습을 사용하여 데이터베이스 워크로드 특성화
블로그

기계 학습을 사용하여 데이터베이스 워크로드 특성화

Jun 27, 2023Jun 27, 2023

데이터베이스는 수십 년 동안 데이터 관리를 도와왔습니다. 우리가 일상적으로 사용하는 대부분의 기술과 마찬가지로 우리는 이를 당연하게 여기기 시작하고 기술 사용, 특히 비용을 검토할 기회를 놓칠 수 있습니다.

예를 들어 Intel은 막대한 양의 제조 데이터 대부분을 MPP(대량 병렬 처리) 관계형 데이터베이스 관리 시스템(RDBMS)에 저장합니다. 데이터 관리 비용을 통제하기 위해 인텔 IT는 대체 솔루션과 비교하여 현재 MPP RDBMS를 평가하기로 결정했습니다. 그렇게 하기 전에 우리는 데이터베이스 워크로드를 더 잘 이해하고 해당 워크로드를 잘 나타내는 벤치마크를 정의해야 했습니다. 우리는 수천 명의 제조 엔지니어가 데이터를 쿼리했다는 사실을 알고 있었고 얼마나 많은 데이터가 시스템에 수집되고 있는지도 알고 있었습니다. 그러나 더 자세한 내용이 필요했습니다.

"전체 데이터베이스 워크로드를 구성하는 작업 유형은 무엇입니까?"

“질문은 어떤가요?”

"각 쿼리 종류에 대해 동시 사용자는 몇 명입니까?"

우리에게 필요한 정보 유형을 더 잘 설명하기 위해 예를 들어보겠습니다.

당신이 고향에 미용실을 열기로 결정했다고 상상해 보세요. 귀하는 오늘날의 서비스 수요를 충족하고 비즈니스 성장을 수용할 수 있는 시설을 구축하기를 원합니다. 피크 시간에 매장에 얼마나 많은 사람이 있을 것인지 추정해야 하며, 이를 통해 몇 개의 스테이션을 설치해야 하는지 알 수 있습니다. 어떤 서비스를 제공할지 결정해야 합니다. 서비스를 제공할 수 있는 사람의 수는 세 가지 요소에 따라 달라집니다. 1) 미용사의 작업 속도; 2) 미용사가 몇 명 일하고 있는지; 3) 고객이 원하는 서비스(예: 손질, 매니큐어, 헤어 컬러링, 마사지). 이 경우 "워크로드"는 고객이 원하는 것과 고객 수의 함수입니다. 하지만 그것도 시간이 지남에 따라 달라집니다. 아마도 많은 고객들이 트림만 원하는 시기가 있을 것입니다. 다른 기간(예: 발렌타인 데이 이전)에는 손질과 머리 염색이 모두 수요가 있지만, 다른 경우에는 마사지가 거의 유일한 수요일 수 있습니다(예: 발렌타인 데이에 방금 받은 마사지 상품권을 모두 사용하는 사람들). . 달력 이벤트와 관련이 없는 임의적인 것처럼 보일 수도 있습니다. 피크 시간대에 더 많은 고객이 오는데 스테이션이나 자격을 갖춘 미용사가 충분하지 않으면 사람들은 기다려야 할 것이고 어떤 사람들은 너무 혼잡하다고 생각하여 떠날 수도 있습니다.

이제 데이터베이스로 돌아가 보겠습니다. MPP RDBMS의 경우 "서비스"는 데이터베이스와 엔지니어(소비) 및 데이터를 전송하는 시스템(수집) 간의 다양한 유형의 상호 작용입니다. 수집은 표준 ETL(추출-변환-로딩), 중요 경로 ETL, 대량 로드, DB 내 삽입/업데이트/삭제 요청(대규모 및 소규모 모두)으로 구성됩니다. 소비는 보고서와 쿼리로 구성됩니다. 일부는 일괄 작업으로 실행되고 일부는 임시로 실행됩니다.

워크로드 특성화 초기에 우리는 수행 중인 데이터베이스 "서비스"의 종류를 식별하고 싶었습니다. 우리는 미용실 예에서 정리 대 전체 서비스처럼 SQL 요청이 매우 단순하거나 매우 복잡하거나 그 사이에 있을 수 있다는 것을 알고 있었습니다. 우리가 몰랐던 것은 중요한 것을 놓치지 않고 이러한 다양한 요청을 보다 관리하기 쉽게 일반화하는 방법이었습니다. 우리는 직감을 믿기보다는 체계적으로 접근하고 싶었습니다. 우리는 SQL 요청을 완전히 이해하기 위해 새로운 접근 방식을 취했습니다. 즉, k-평균 클러스터링 및 분류 및 회귀 트리(CART)를 포함한 기계 학습(ML) 기술을 적용하기로 결정했습니다.

미용실 예에서는 k-평균 클러스터링과 CART를 사용하여 고객을 분석하고 "헤어 서비스만", "헤어 및 네일 서비스만", "네일 서비스만"과 같은 유사성을 가진 그룹을 식별할 수 있습니다.

데이터베이스의 경우 k-평균 클러스터링 및 CART 노력을 통해 ETL 요청이 7개의 클러스터(CPU 시간, 최고 스레드 I/O 및 실행 시간으로 예측)로 구성되어 있고 SQL 요청이 CPU 시간을 기준으로 6개의 클러스터로 그룹화될 수 있음이 밝혀졌습니다. ).