Google BigTable (및 기타 통합 DB)에서 성능 테스트 받기


17

특히 데이터베이스 자체가 전용 ​​도구를 제공하지 않는 환경에서 데이터베이스 작업에 대해 프로그래밍 방식의 성능 테스트를 수행하는 효과적인 방법은 무엇입니까?

예를 들어 Google App Engine에서 전체 페이지로드는 특정 데이터베이스 작업을 포함 할 수있는 하나의 작업으로 평가됩니다. 이 문제는 SQLite 및 기타 통합 DB에서도 발생할 수 있습니다. 테스트해야 할 선택과 삽입을 완전히 추상화하기가 어렵 기 때문에 이러한 종류의 쿼리에 대해보다 철저한 진단을 수행하기 위해 권장되는 데이터베이스 도구가 있습니까?


문제의 데이터베이스에 직접 액세스 할 수 있습니까?
Stingervz

예, 저는 앱을 작성하는 사람입니다. 그리고 앱 성능은 다른 질문이지만 필자가 작성한 불쾌한 쿼리에서 성능이 크게 떨어졌습니다.
Brian Ballsun-Stanton

때때로 눈의 12 쌍 (확인하지 그 자주) ... 더 나은 진단 쿼리 분석기보다
jcolebrand

@Brian DBA 질문보다 프로그래밍 질문이기 때문에 이러한 유형의 질문으로 Stackoverflow에서 더 잘 할 것이라고 생각합니다.
IamIC

@IanC Drat. 나는 전체적으로 성능보다는 큰 테이블 밑받침을 얻으려고합니다. 그러나 사람들이 질문이 적합하다고 생각하지 않으면 삭제하겠습니다. (또한 사이트가 항상 Oracle / sql-server / mysql이 아닌지 확인하려고합니다)
Brian Ballsun-Stanton

답변:


1

문제는 기본 db에서 잘 지원되지 않는 성능 메트릭을 테스트하려고하는 것 같습니다. 기본 접근 방식이 매우 다르기 때문에 시스템 간 성능을 비교하기가 매우 어렵습니다. ORDBMS 유형 접근법과 RDBMS 유형 접근법의 사과 비교를 사과로 할 수 있다고 생각하지 않는 것처럼 사과와 사과 비교를 할 수는 없다고 생각합니다. 성능 문제는 너무 다르며 Stonebraker가 TPC-C 테스트를 위해 ORDBMS를 최적화하는 것이 옳지 않다면 더 멀리 떨어져있는 시스템에서는 불가능할 것입니다. (그러나 그는 ORDBMS 기능이 작동하는 곳에서만 그가 있다고 생각합니다.)

정직해야 할 것은 각 시스템을 어떻게 사용하고 각각의 접근 방식을 기반으로 벤치 마크 도구를 구축하는 것입니다. 그런 다음 적어도 해당 워크 플로에 대해 벤치 마크에서 특정 내용을 표시 할 수 있습니다. 그러나 어떻게 일반화 할 수 있는지 모르겠습니다. 다양한 엔진의 테스트 실행에서 시간이 소비되는 위치에 대한 추가 정보를 얻기 위해 프로파일 러에서 추가로 실행할 수 있습니다.

그러나 db 벤치마킹은 최상의 환경에서 의미를 부여하기가 매우 어렵고 다른 시스템을 비교할 때는 일반화하기가 불가능합니다.


0

Appstats 는 App Engine의 성능을 측정하기위한 핵심 도구입니다. 데이터 저장소, memcache, urlfetch 및 메일 요청을 포함하여 각 RPC에 사용 된 시간을 그래픽 차트로 표시합니다. 일반적으로 요청은 "계단"으로 표시되며 여기서 각 요청은 이전 요청이 종료 된 지점에서 다음 줄에 시작됩니다.

ndb에서 고급 비동기 요청을 사용하면 실제로 요청이 동시에 발생하는 것을 볼 수 있습니다.

이 도구는 시간이 소비되는 위치와 쿼리를 최적화하는 방법을 확인하는 데 큰 도움이되었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.