Postgresql 9.1.24 문서화 | ||||
---|---|---|---|---|
토토 사이트 순위 : 문서 : 9.1 : pg_archivecleanup | up | 부록 F. 추가 제공된 모듈 | 사설 토토 : 문서 : 9.1 : pg_buffercache |
토토 캔는 간단한 프로그램입니다 벤치 마크 테스트를 실행하려면PostgreSQL. 동일한 시퀀스의 SQL을 실행합니다 여러 동시 데이터베이스에서 명령을 반복해서 명령합니다 세션은 평균 거래율을 계산합니다 (초당 거래). 기본적으로토토 캔느슨한 시나리오를 테스트합니다 TPC-B를 기준으로 5select, 업데이트및삽입거래 당 명령. 그러나 그것은입니다 자신의 트랜잭션 스크립트를 작성하여 다른 사례를 쉽게 테스트 할 수 있습니다. 파일.
토토 캔의 일반적인 출력은 다음과 같습니다.
거래 유형 : TPC-B (정렬) 스케일링 계수 : 10 쿼리 모드 : 간단합니다 고객 수 : 10 스레드 수 : 1 클라이언트 당 거래 수 : 1000 실제로 처리 된 거래 수 : 10000/10000 TPS = 85.184871 (연결 설정 포함) TPS = 85.296346 (연결 제외)
처음 6 줄은 가장 중요한 것 중 일부를보고합니다. 매개 변수 설정. 다음 줄은 수를보고합니다 거래가 완료되고 의도 된 (후자는 단지 고객 수 및 거래 수의 제품 고객); 실행이 전에 실패하지 않으면 동일합니다 완성. (안에-t모드, 실제 만 트랜잭션 수가 인쇄됩니다.) 마지막 두 줄은 초당 거래 수 데이터베이스 세션을 시작할 시간 계산.
기본 TPC-B- 유사 트랜잭션 테스트는 구체적으로 필요합니다 미리 설정할 테이블.토토 캔-i(초기화) 생성 및 이 테이블을 채우십시오. (사용자 정의 스크립트를 테스트 할 때 이 단계가 필요하지 않지만 대신 무엇이든해야합니다. 테스트 요구 사항을 설정하십시오.) 초기화는 다음과 같습니다.
토토 캔 -i [ 기타 옵션 ]dbname
여기서dbname이름입니다 이미 작성된 데이터베이스를 테스트 할 수 있습니다. (필요할 수도 있습니다-h, -p, 및/또는-u방법을 지정하는 옵션 데이터베이스 서버에 연결합니다.)
주의 |
토토 캔 -I4를 생성합니다 테이블토토 캔_accounts, 토토 캔_branches, 토토 캔_history및토토 캔_tellers, 파괴 이 이름의 기존 테이블. 매우 조심하십시오 테이블이있는 경우 다른 데이터베이스를 사용하십시오 이름! |
기본값"스케일 팩터"OF 1, 테이블에는 처음 에이 많은 행이 포함되어 있습니다.
행의 표 # -------------------------------------------- 토토 캔_BRANCHES 1 PGBENCH_TELLERS 10 토토 캔_accounts 100000 토토 캔_history 0
당신은 (그리고 대부분의 목적을 위해) 증가 할 수 있습니다 사용하여 행의 수-s(스케일 팩터) 옵션. 그만큼-f(FillFactor) 옵션 도이 시점에서 사용될 수 있습니다.
필요한 설정을 마친 후에는 포함되지 않는 명령이 포함 된 벤치 마크-i, 즉
토토 캔 [ 옵션 ]dbname
거의 모든 경우에 몇 가지 옵션이 필요합니다. 유용한 테스트. 가장 중요한 옵션은입니다.-c(클라이언트 수),-t(거래 수),-t(시간 제한) 및-f(사용자 정의 스크립트 파일 지정). 전체 목록은 아래를 참조하십시오.
섹션 F.26.2데이터베이스 중에 사용되는 옵션이 표시됩니다 초기화, 동안섹션 F.26.3쇼 벤치 마크를 실행하는 동안 사용되는 옵션 및섹션 F.26.4쇼 두 경우 모두 유용한 옵션.
토토 캔다음 명령 줄 초기화 인수 :
초기화 모드를 호출해야합니다.
생성토토 캔_accounts, 토토 캔_tellersand토토 캔_branches주어진 테이블 FillFactor. 기본값은 100입니다.
스케일별로 생성 된 행의 수를 곱하십시오 요인. 예를 들어,-S 100의지 에서 10,000,000 행을 만듭니다.토토 캔_accounts테이블. 기본값입니다 1.
토토 캔다음 명령 줄 벤치마킹 인수 :
시뮬레이션 된 클라이언트 수, 즉 수의 수 동시 데이터베이스 세션. 기본값은 1입니다.
각 거래에 대한 새 연결을 설정하고 클라이언트 세션 당 한 번만 수행하는 대신. 이것 연결 오버 헤드를 측정하는 데 유용합니다.
인쇄 디버깅 출력.
사용자 정의 스크립트로 사용할 변수 정의 (참조 아래에). 다수의-d옵션은입니다 허용된.
트랜잭션 스크립트 읽기filename. 자세한 내용은 아래를 참조하십시오.-n, 16999_17003, 그리고-f상호입니다 독점적인.
내 직원 스레드 수토토 캔. 둘 이상의 스레드를 사용합니다 멀티 CPU 기계에 도움이 될 수 있습니다. 수 클라이언트는 스레드 수의 배수 여야합니다. 각 스레드는 동일한 수의 클라이언트가 제공되므로 관리 할 세션. 기본값은 1입니다.
각 트랜잭션에서 발생한 시간을 로그에 쓰기 파일. 자세한 내용은 아래를 참조하십시오.
쿼리를 제출하는 데 사용할 프로토콜 섬기는 사람:
단순: 간단한 쿼리를 사용하십시오 규약.
확장: 사용 확장 쿼리 프로토콜.
준비: 확장 사용 준비된 진술이있는 쿼리 프로토콜.
기본값은 간단한 쿼리 프로토콜입니다. (보다46 장자세한 내용은
테스트를 실행하기 전에 진공 청소기를 수행하지 마십시오. 이것 옵션은입니다.필요한당신이 있다면 포함하지 않는 사용자 정의 테스트 시나리오 실행 표준 테이블토토 캔_accounts, 토토 캔_branches, 토토 캔_history및토토 캔_tellers.
업데이트하지 않음토토 캔_tellersand토토 캔_branches. 이것은 피할 것입니다 이 테이블에 대한 경합을 업데이트하지만 테스트합니다. TPC-B와 거의 비슷한 경우
평균 상태 당 대기 시간을보고하십시오 (실행 각 명령의 고객의 관점에서 시간) 벤치 마크가 끝난 후. 자세한 내용은 아래를 참조하십시오.
지정된 척도 요소를보고토토 캔의 출력. 내장 테스트, 이것은 필요하지 않습니다. 올바른 척도 계수 의 행 수를 계산하여 감지됩니다.토토 캔_BRANCHES테이블. 그러나 사용자 정의 벤치 마크를 테스트 할 때 (-f옵션), 스케일 팩터가 될 것입니다 이 옵션이 사용되지 않는 한 1으로보고되었습니다.
TPC-B와 유사한 대신 선택 전용 트랜잭션을 수행하십시오 시험.
각 클라이언트가 실행되는 트랜잭션 수입니다. 기본값입니다 10.
클라이언트 당 고정 된 거래 수.-tand-tare 상호 배타적.
실행하기 전에 4 개의 표준 테이블을 모두 진공하십시오 시험. 둘 다-nNOR-v, 토토 캔는 진공 청소기토토 캔_tellers및토토 캔_branches테이블 및 잘라 낼토토 캔_history.
토토 캔명령 줄 공통 논쟁 다음 :
데이터베이스 서버의 호스트 이름
데이터베이스 서버의 포트 번호
연결할 사용자 이름
기본 트랜잭션 스크립트는 7 개의 명령을 발행합니다 거래:
시작;
PGBENCH_ACCOUNTS 업데이트 세트 Abalance = abalance + : 델타 aid = : aid;
Abalance를 선택하십시오 토토 캔_ACCOUTTS AID = : AID;
업데이트 PGBENCH_TELLERS SET TBALANCE = tbalance + : 델타 여기서 tid = : tid;
업데이트 토토 캔_BRANCHES SET BBALANCE = bbalance + : 델타 위치 bid = : bid;
토토 캔_history에 삽입 (tid, BID, AID, DELTA, MTIME) 값 (: TID, : BID, : AID, : DELTA, current_timestamp);
끝;
지정하면-n, 4 단계 및 5 단계 거래에 포함되지 않습니다. 지정하는 경우-s만selectIS 발행.
토토 캔지원이 있습니다 기본값을 대체하여 사용자 정의 벤치 마크 시나리오를 실행합니다 트랜잭션 스크립트 (위에서 설명) 트랜잭션 스크립트가 있습니다 파일에서 읽기 (-f옵션). 이것에서 케이스 A"거래"하나로 계산합니다 스크립트 파일의 실행. 여러 가지를 지정할 수도 있습니다 스크립트 (다중-f옵션), in 이 경우 무작위로 스크립트 중 하나가 매번 선택됩니다. 클라이언트 세션은 새로운 거래를 시작합니다.
스크립트 파일의 형식은 한 줄 당 하나의 SQL 명령입니다. 다중 SQL 명령은 지원되지 않습니다. 빈 줄과 선 부터 시작--무시됩니다. 스크립트 파일 줄도"메타 명령 ",토토 캔아래 설명대로 자체.
스크립트를위한 간단한 변수-치수 시설이 있습니다 파일. 변수는 명령 줄에 의해 설정할 수 있습니다-d옵션, 위에서 설명하거나 메타에 의해 아래에 설명 된 명령. 사전 설정된 변수 외에도 에 의해-d명령 줄 옵션, 변하기 쉬운스케일현재 척도 계수. 일단 설정되면 변수의 값이 될 수 있습니다 서면으로 SQL 명령에 삽입:variablename. 둘 이상의 클라이언트 세션을 실행할 때 각 세션에는 자체 변수 세트.
스크립트 파일 메타 명령은 백 슬래시로 시작합니다 (\). 메타 명령에 대한 인수는 분리됩니다 여백. 이 메타 명령은 다음과 같습니다.
변수 설정varname계산 된 정수 값으로. 각Operand는 정수입니다 상수 또는 A:variablenamea 정수 값을 갖는 변수. 그만큼운영자+, -, *또는/.
예 :
\ set ntellers 10 * : scale
변수 설정varname한계 사이의 임의의 정수 값으로Minandmax포함. 각 한계는 될 수 있습니다 정수 상수 또는 A:variabelenamea 정수 값을 가진 변수.
예 :
\ setrandom Aid 1 : naccounts
지정된 것에 대한 스크립트 실행이 수면을 유발합니다 마이크로 초의 지속 시간 (US), 밀리 초 (MS) 또는 초 (S). 장치가 생략되면 초는 기본값입니다.번호는 정수 일 수 있습니다 상수 또는 A:variablenamea 정수 값을 가진 변수.
예 :
\ sleep 10 ms
변수 설정varname쉘 명령의 결과명령. 명령은 반환해야합니다 표준 출력을 통한 정수 값.
인수텍스트 상수 또는 a:variablenamea 모든 유형의 변수. 사용하고 싶다면인수콜론으로 시작하여, 당신 시작시 추가 결장을 추가해야합니다인수.
예 :
\ setshell variable_to_be_assigned 명령 literal_argument : variable :: reteral_starting_with_colon
동일\ setshell결과는 무시됩니다.
예 :
\ shell Command literal_argument : variable :: reteral_starting_with_colon
예를 들어 내장의 전체 정의 TPC-B 유사 거래는 다음과 같습니다.
\ set nbranches : scale \ set ntellers 10 * : 스케일 \ naccounts 100000 *를 설정하십시오 \ Setrandom AID 1 : NACCOUNTS \ setrandom bid 1 : nbranches \ setrandom tid 1 : ntellers \ setrandom 델타 -5000 5000 시작하다; PGBENCH_ACCOUNTS 업데이트 세트 Abalance = Abalance + : Delta Aid = : AID; AID = : AID; PGBENCH_TELLERS 업데이트 TBALANCE = TBALANCE + : DELTA WHERE TID = : TID; 토토 캔_BRANCHES 업데이트 SET BBALANCE = BBALANCE + : DELTA BID = : BID; 토토 캔_history에 삽입 (TID, BID, AID, DELTA, MTIME) 값 (: TID, : BID, : AID, : DELTA, CURRENT_TIMESTAMP); 끝;
이 스크립트는 트랜잭션의 각 반복을 허용합니다 다른 무작위로 선택된 행을 참조하십시오. (이 예도 각 클라이언트 세션이 그 중요한 이유를 보여줍니다. 자체 변수 - 그렇지 않으면 독립적으로 만지지 않을 것입니다 다른 줄.)
with-l옵션,토토 캔각각이 취한 시간을 씁니다 로그 파일로의 트랜잭션. 로그 파일의 이름이 지정됩니다토토 캔_log.NNN, 여기NNN토토 캔 프로세스의 PID입니다. 만약에 그만큼-j옵션은 2 이상입니다 다중 작업자 스레드에는 각각 자체 로그 파일이 있습니다. 그만큼 첫 번째 작업자는 로그 파일에 동일한 이름을 사용합니다. 표준 단일 작업자 사례. 추가 로그 파일 다른 근로자는 이름이 지정됩니다토토 캔_log.NNN.mmm, 여기서mmm는 각각의 순차적 숫자입니다 1로 시작하는 노동자
로그의 형식은 다음과 같습니다.
client_id Transaction_No TIME file_no time_epoch time_us
여기서Time총계입니다 마이크로 초의 경과 트랜잭션 시간,file_no스크립트 파일을 식별합니다 사용 (여러 스크립트가 지정된 경우 유용-f) 및time_epoch/time_us는 Unix Epoch 형식 Timestamp입니다 그리고 마이크로 초의 오프셋 (ISO 생성에 적합합니다. 8601 분수 초의 타임 스탬프) 거래가 완료되었습니다.
여기 예제 출력이 있습니다 :
0 199 2241 0 1175850568 995598 0 200 2465 0 1175850568 998079 0 201 2513 0 1175850569 608 0 202 2038 0 1175850569 2663
with-r옵션,토토 캔경과 트랜잭션을 수집합니다 모든 고객이 실행 한 각 진술의 시간. 그럼 대기 시간이라고하는 평균 해당 값을보고합니다. 각 진술에 대해 벤치 마크가 끝난 후.
기본 스크립트의 경우 출력이 다음과 비슷해 보입니다. 이것:
진공 시작 ... 끝. 트랜잭션 유형 : TPC-B (정렬) 스케일링 계수 : 1 쿼리 모드 : 간단합니다 고객 수 : 10 스레드 수 : 1 클라이언트 당 거래 수 : 1000 실제로 처리 된 거래 수 : 10000/10000 TPS = 618.764555 (연결 설정 포함) TPS = 622.977698 (연결 제외) 밀리 초의 명세서 대기 시간 : 0.004386 \ SET NBRANCHES 1 * : 스케일 0.001343 \ set ntellers 10 * : 스케일 0.001212 \ NACCOUNTS SET 100000 * : 스케일 0.001310 \ Setrandom AID 1 : NACCOUNTS 0.001073 \ Setrandom BID 1 : NBRANCHES 0.001005 \ Setrandom Tid 1 : Ntellers 0.001078 \ Setrandom Delta -5000 5000 0.326152 시작; 0.603376 업데이트 PGBENCH_ACCOUNTS SET ABALANCE = ABALANCE + : DELTA AID = : AID; 0.454643 PGBENCH_ACCOUNTS에서 ABALANCE를 선택하십시오. 5.528491 업데이트 PGBENCH_TELLERS SET TBALANCE = TBALANCE + : 델타 여기서 tid = : tid; 7.335435 업데이트 토토 캔_branches set bbalance = bbalance + : 델타 bid = : bid; 0.371851 PGBENCH_HISTORY (TID, BID, AID, DELTA, MTIME) 값 (: TID, : BID, : AID, : DELTA, CURRENT_TIMESTAMP)에 삽입; 1.212976 종료;
여러 스크립트 파일이 지정되면 평균이 있습니다 각 스크립트 파일에 대해 별도로보고되었습니다.
추가 타이밍 정보를 수집하십시오 진술 당 대기 시간 계산에 필요하면 일부가 추가됩니다 간접비. 이렇게하면 평균 실행 속도가 느려지고 낮아집니다 계산 된 TPS. 둔화량은 크게 다릅니다 플랫폼 및 하드웨어에 따라 평균 TPS 비교 대기 시간보고가 있거나없는 값은 활성화 된 좋은 방법입니다. 타이밍 오버 헤드가 중요한지 측정하려면
사용하기가 매우 쉽습니다토토 캔완전히 무의미한 생산 숫자. 다음은 유용한 정보를 얻는 데 도움이되는 몇 가지 지침입니다 결과.
처음에는절대실행되는 테스트를 믿으십시오 몇 초 동안. 사용-t또는-t옵션을 마지막으로 실행하는 옵션 평균 소음을 얻기 위해 최소 몇 분. 어떤 경우에는 재현 가능한 숫자를 얻는 데 시간이 필요할 수 있습니다. 그것은 테스트를 몇 번 시도해 보는 것이 좋습니다. 당신의 숫자는 재현 가능합니까.
기본 TPC-B 유사 테스트 시나리오의 경우 초기화 스케일 팩터 (-s)는 적어도 있어야합니다 테스트하려는 최대의 클라이언트만큼 (-c); 그렇지 않으면 당신은 대부분 측정 할 것입니다 경합 업데이트. 전용-s토토 캔_BRANCHES테이블, 그리고 모든 거래가 그들 중 하나를 업데이트하고 싶어하므로-c초과 값-s의심 할 여지없이 많은 결과를 초래할 것입니다 거래가 다른 거래를 기다리는 거래를 차단했습니다.
기본 테스트 시나리오는 또한 방법에 매우 민감합니다. 테이블이 초기화 된 이래로 오랫동안 축적 테이블의 죽은 줄과 죽은 공간이 결과를 변경합니다. 결과를 이해하려면 총계를 추적해야합니다. 업데이트 수와 진공 청소기가 발생할 때. Autovacuum이라면 활성화하면 측정이 예측할 수없는 변화를 초래할 수 있습니다 성능.
제한토토 캔IS 테스트를 시도 할 때 그 자체가 병목 현상이 될 수 있습니다. 많은 수의 클라이언트 세션. 이것은 완화 될 수 있습니다 달리기토토 캔다른 것 낮은 네트워크 대기 시간이지만 데이터베이스 서버의 기계 필수적입니다. 몇 가지를 실행하는 것이 유용 할 수도 있습니다토토 캔인스턴스 동시에, 여러 클라이언트 기계에서, 동일하게 데이터베이스 서버.