DBMS "플러그인" 또는 기타 솔루션을 통한 성능 분석

DBMS "플러그인" 또는 기타 솔루션을 통한 성능 분석

저는 현재 시스템 수준의 성능에 초점을 맞춘 시스템 모니터링 제품을 개발 중입니다. 우리는 데이터베이스 시스템 모니터링으로 확장하고 있습니다. 현재 우리는 연결 수, 디스크 IO 속도, 잠금 대기 시간 등과 같은 DBMS 선택에서 간단한 성능 정보를 가져올 수 있습니다.

그러나 우리는 DBMS로 들어가는 모든 쿼리의 실행 시간을 측정할 수 있는 방법을 원합니다.없이클라이언트가 애플리케이션 코드에서 모니터링을 구현하도록 요구합니다.

몇 가지 잠재적인 해결책은 다음과 같습니다.

  • 클라이언트와 서버 사이에 위치하는 일종의 프록시입니다. SSL은 여기서 문제가 될 수 있으며 각 DBMS에 대한 네트워크 프로토콜을 리버스 엔지니어링하고 구현해야 합니다.
  • 쿼리가 들어올 때 성능 정보를 자동으로 기록하는 각 DBMS 시스템용 플러그인입니다.

다른 문제로는 SQL을 "익명화"하는 것, 즉 와 같은 것을 가져와서 SELECT * FROM products WHERE price > 20 AND name LIKE "%disk%"생성하는 것이 포함되지만 SELECT * FROM products WHERE price > ? AND name LIKE "%?%"영리한 구문 분석과 정규 표현식을 사용하면 그리 어렵지는 않습니다.

우리는 주로 다음에 초점을 맞추고 있습니다:

  • MySQL
  • MSSQL
  • 신탁
  • 레디스
  • 몽고디비
  • 멤캐시드

이러한 작업에 활용할 수 있는 플러그인 스타일 메커니즘이 있습니까? 아니면 더 간단한 해결책이 있습니까?

답변1

모든 데이터베이스에 적용할 수 있는 일반적인 솔루션은 없습니다. 그리고 Oracle에서 쿼리 응답 시간을 측정하는 것은 매우 어렵습니다. 저는 memcache/nosql dbs에 대한 성능 분석 작업을 해본 적이 없습니다.

MySQL의 경우mysql프록시- 쉽게 스크립트를 작성할 수 있습니다. 그러나 아마도 느린 쿼리 로그(임계값이 0인)에서 필요한 모든 것을 얻을 수 있을 것입니다. 수정된 버전을 사용하고 있습니다.이 스크립트내 쿼리를 "익명화"합니다.

네트워크 트래픽을 스니핑하고 다양한 계층(데이터베이스 포함)에서 성능 지표를 추론할 수 있는 Compuware의 클라이언트 Vantage와 같은 (매우 비싼) 도구가 있습니다. 내가 아는 유일한 비교 가능한 무료 소프트웨어 도구는 다음과 같습니다.지난월(AFAIK)은 영구 TCP 연결에서 DB 응답 시간을 측정하는 데 필요한 심층 검사를 제공하지 않습니다.

웹 서비스를 통해 모든 액세스를 집중시켜 모든 지표를 캡처하는 것이 가능하지만 이로 인해 트랜잭션에 대기 시간이 발생합니다. 이는 모든 프록시 유형 작업에 해당되지만 SSL을 통한 비지속적 연결의 경우 특히 고통스럽습니다.

이 모든 데이터를 어떻게 수집/유지/분석할 것인지 생각해 보셨나요? 당신은 한 번보고 싶을 수도 있습니다석묵.

어떤 유형의 클라이언트를 사용하고 있나요? 데이터베이스를 살펴보기 전에 클라이언트에서 응답 관계를 측정해야 합니다. 성능 문제가 있는 경우에만 데이터베이스 성능에 대해 걱정하기 시작하면 됩니다. 그리고 클라이언트가 웹 브라우저라면 이는 훨씬 간단한 작업입니다. 응답 시간을 기록하고 데이터 매시업을 시작하도록 웹 서버를 설정하기만 하면 됩니다. 페이지 응답을 측정하기 위해 간단한 추가 기능을 추가할 수도 있습니다. 이는 인지된 성능을 훨씬 더 잘 나타내는 지표입니다.야후의 부메랑

관련 정보