지원되는 버전 :현재(17) /16 / 15 / 14 / 13
개발 버전 :18 / Devel
지원되지 않는 버전 :12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3
이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다현재버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

토토 꽁 머니

이름

토토 꽁 머니- 벤치 마크 테스트 실행postgresql

시놉시스

토토 꽁 머니 -i[토토 꽁 머니...] [dbname]

토토 꽁 머니[토토 꽁 머니...] [dbname]

설명

토토 꽁 머니는 간단한 프로그램입니다 벤치 마크 테스트를 실행하려면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, destroying any 이 이름의 기존 테이블. 사용하기에 매우주의하십시오 another database if you have tables having these 이름!

기본값"스케일 팩터"OF 1, 테이블에는 처음 에이 많은 행이 포함되어 있습니다.

행의 표 #
--------------------------------------------
토토 꽁 머니_BRANCHES 1
PGBENCH_TELLERS 10
토토 꽁 머니_accounts 100000
토토 꽁 머니_history 0

당신은 (그리고 대부분의 목적을 위해) 사용하여 행의 수-s(스케일 요인) 토토 꽁 머니. 그만큼-f(FillFactor) 이 시점에서 토토 꽁 머니도 사용될 수 있습니다.

필요한 설정을 마친 후에는 포함되지 않는 명령이 포함 된 벤치 마크-i, 즉

토토 꽁 머니 [ 토토 꽁 머니 ]dbname

거의 모든 경우에 유용하게 만들기 위해 몇 가지 토토 꽁 머니이 필요합니다. 시험. 가장 중요한 토토 꽁 머니은입니다.-c(클라이언트 수),-t(숫자 업무),-t(시간 제한) 및-f(사용자 정의 스크립트 파일 지정). 보다 전체 목록은 아래에 있습니다.

토토 꽁 머니

다음은 세 가지 하위 섹션으로 나뉩니다 토토 꽁 머니은 데이터베이스 초기화 및 실행 중에 사용됩니다 벤치 마크, 일부 토토 꽁 머니은 두 경우 모두 유용합니다.

초기화 토토 꽁 머니

토토 꽁 머니다음 명령 줄 초기화 인수 :

-i

초기화 모드를 호출해야합니다.

-f FillFactor

Create the토토 꽁 머니_accounts, 토토 꽁 머니_tellersand토토 꽁 머니_branches주어진 테이블 FillFactor. 기본값은 100입니다.

-s scale_factor

스케일별로 생성 된 행의 수를 곱하십시오 요인. 예를 들어,-S 100의지 에서 10,000,000 행을 만듭니다.토토 꽁 머니_accounts테이블. 기본값입니다 1.

-Index-TableSpace =index_tablespace

지정된 테이블 스페이스에서 인덱스를 만듭니다 기본 테이블 스페이스보다.

---babespace =테이블 스페이스

지정된 테이블 스페이스에서 테이블을 만듭니다 기본 테이블 스페이스.

-unlogged-tables

모든 테이블을 사용하지 않는 테이블로 만듭니다 영구 테이블.

벤치마킹 토토 꽁 머니

토토 꽁 머니다음 명령 줄 벤치마킹 인수 :

-c 클라이언트

시뮬레이션 된 클라이언트 수, 즉 수의 수입니다 동시 데이터베이스 세션. 기본값은 1입니다.

-c

각 거래에 대한 새 연결을 설정하고 클라이언트 세션 당 한 번만 수행하는 대신. 이것 연결 오버 헤드를 측정하는 데 유용합니다.

-d

인쇄 디버깅 출력.

-d varname=value

사용자 정의 스크립트로 사용할 변수 정의 (참조 아래에). 다수의-doptions are 허용된.

-f filename

트랜잭션 스크립트 읽기filename. 자세한 내용은 아래를 참조하십시오.-n, -s, 그리고-f상호입니다 독점적인.

-j 스레드

내 직원 스레드 수토토 꽁 머니. Using more than one thread can be helpful on multi-CPU machines. The number of 클라이언트는 스레드 수의 배수 여야합니다. since each thread is given the same number of client 관리 할 세션. 기본값은 1입니다.

-l

각 트랜잭션에서 발생한 시간을 로그에 쓰기 파일. 자세한 내용은 아래를 참조하십시오.

-m QueryMode

쿼리 제출에 사용할 프로토콜 섬기는 사람:

  • 단순: 간단한 쿼리를 사용하십시오 규약.

  • 확장: 사용 확장 쿼리 프로토콜.

  • 준비: 사용 확장 준비된 진술이있는 쿼리 프로토콜.

기본값은 간단한 쿼리 프로토콜입니다. (보다46 장자세한 내용은

-n

테스트를 실행하기 전에 진공 청소기를 수행하지 마십시오. 이것 토토 꽁 머니은입니다.필요한당신이 있다면 포함하지 않는 사용자 정의 테스트 시나리오 실행 표준 테이블토토 꽁 머니_accounts, 토토 꽁 머니_branches, 토토 꽁 머니_history토토 꽁 머니_tellers.

-n

업데이트하지 않음토토 꽁 머니_tellersand토토 꽁 머니_branches. 이것은 피할 것입니다 이 테이블에 대한 경합을 업데이트하지만 테스트합니다. TPC-B와 거의 비슷한 경우

-r

평균 상태 당 대기 시간을보고하십시오 (실행 각 명령의 고객의 관점에서 시간) 벤치 마크가 끝난 후. 자세한 내용은 아래를 참조하십시오.

-s scale_factor

지정된 스케일 계수를보고토토 꽁 머니의 출력. 내장 테스트, 이것은 필요하지 않습니다. 올바른 척도 계수 의 행 수를 계산하여 감지됩니다.토토 꽁 머니_BRANCHES테이블. 그러나 사용자 정의 벤치 마크를 테스트 할 때 (-f토토 꽁 머니), 스케일 팩터가됩니다 이 토토 꽁 머니이 사용되지 않는 한 1으로보고되었습니다.

-s

TPC-B와 유사한 대신 선택 전용 트랜잭션을 수행합니다 시험.

-t 거래

각 클라이언트가 실행하는 트랜잭션 수입니다. 기본값입니다 10.

-t

클라이언트 당 고정 된 거래 수.-tand-t상호 배타적.

-v

실행하기 전에 4 개의 표준 테이블을 모두 진공하십시오 시험. 둘 다-nNOR-v, 토토 꽁 머니는 진공 청소기토토 꽁 머니_tellersand토토 꽁 머니_branches테이블 및 잘라 낼토토 꽁 머니_history.

공통 토토 꽁 머니

토토 꽁 머니명령 줄 공통 논쟁 다음 :

-h hostname

데이터베이스 서버의 호스트 이름

-p 포트

데이터베이스 서버의 포트 번호

-U 로그인

사용 할 사용자 이름

-v
-버전

인쇄토토 꽁 머니버전 및 종료.

-?
-help

도움말 표시토토 꽁 머니명령 줄 인수 및 출구.

노트

무엇입니까"거래"실제로 토토 꽁 머니에서 수행 되었습니까?

기본 트랜잭션 스크립트는 7 개의 명령을 발행합니다 거래:

  1. 시작;

  2. PGBENCH_ACCOUNTS 업데이트 세트 Abalance = abalance + : 델타 aid = : aid;

  3. Abalance를 선택하십시오 토토 꽁 머니_ACCOUTTS AID = : AID;

  4. PGBENCH_TELLERS 업데이트 tbalance를 설정합니다 = tbalance + : 델타 여기서 tid = : tid;

  5. 업데이트 토토 꽁 머니_BRANCHES SET BBALANCE = bbalance + : 델타 위치 bid = : bid;

  6. 토토 꽁 머니_history에 삽입 (tid, BID, AID, DELTA, MTIME) 값 (: TID, : BID, : AID, : DELTA, current_timestamp);

  7. 끝;

지정하면-n, 4 단계 및 5 단계 거래에 포함되지 않습니다. 지정하는 경우-s, 만selectis 발행.

사용자 정의 스크립트

토토 꽁 머니지원이 있습니다 기본값을 대체하여 사용자 정의 벤치 마크 시나리오를 실행합니다 트랜잭션 스크립트 (위에서 설명) 트랜잭션 스크립트가 있습니다 파일에서 읽기 (-f토토 꽁 머니). 이것에서 케이스 A"거래"하나로 계산합니다 스크립트 파일의 실행. 여러 가지를 지정할 수도 있습니다 스크립트 (다중-f토토 꽁 머니) 사례 랜덤 스크립트 중 하나가 클라이언트마다 선택됩니다. 세션은 새로운 거래를 시작합니다.

스크립트 파일의 형식은 한 줄 당 하나의 SQL 명령입니다. 다중 SQL 명령은 지원되지 않습니다. 빈 줄과 선 부터 시작--무시됩니다. 스크립트 파일 줄도"메타 명령 ",토토 꽁 머니자체, 아래 설명대로.

스크립트를위한 간단한 변수-치수 시설이 있습니다 파일. 변수는 명령 줄에 의해 설정할 수 있습니다-d토토 꽁 머니, 위에서 설명하거나 메타에 의해 아래에 설명 된 명령. 사전 설정된 변수 외에도 에 의해-d명령 줄 토토 꽁 머니, 변하기 쉬운스케일현재 척도 계수. 일단 설정되면 변수의 값이 될 수 있습니다 서면으로 SQL 명령에 삽입:variablename. 둘 이상의 클라이언트 세션을 실행할 때 각 세션에는 자체 변수 세트.

스크립트 파일 메타 명령은 backslash (로 시작합니다.\). 메타 명령에 대한 인수는 분리됩니다 여백. 이 메타 명령은 다음과 같습니다.

\ setvarname Operand1[운영자 Operand2]

변수 설정varname계산 된 정수 값으로. 각Operand는 정수입니다 상수 또는 A:variablenamea 정수 값을 갖는 변수. 그만큼운영자할 수 있습니다+, -, *또는/.

예 :

\ set ntellers 10 * : scale
\ setrandomvarname Min max

변수 설정varname한계 사이의 임의의 정수 값으로Minandmax포함. Each limit can be 정수 상수 또는 A:variablenamea 정수 값을 가진 변수.

예 :

\ setrandom Aid 1 : naccounts
\ sleep번호[US | MS | S]

지정된 대본에 대한 스크립트 실행을 유발합니다 마이크로 초의 지속 시간 (US), 밀리 초 (MS) 또는 초 (S). 장치가 생략되면 초는 기본값입니다.번호는 정수 일 수 있습니다 상수 또는 A:variablenamea 정수 값을 가진 변수.

예 :

\ sleep 10 ms
\ setshellvarname 명령[인수...]

변수 설정varname쉘 명령의 결과명령. 명령은 반환해야합니다 표준 출력을 통한 정수 값.

인수텍스트 상수 또는 a:variabelenamea 모든 유형의 변수. 사용하고 싶다면인수콜론으로 시작하여, 당신 시작시 추가 결장을 추가해야합니다인수.

예 :

\ setshell variable_to_be_signed 명령 literal_argument : variable :: literal_starting_with_colon
\ shell명령[인수...]

동일\ setShell결과는 무시됩니다.

예 :

\ shell Command literal_argument : 변수 :: literal_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 시간 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토토 꽁 머니,토토 꽁 머니경과 트랜잭션을 수집합니다 모든 고객이 실행 한 각 진술의 시간. 그럼 대기 시간이라고하는 평균 해당 값을보고합니다. 각 진술에 대해 벤치 마크가 끝난 후.

기본 스크립트의 경우 출력이 다음과 비슷해 보입니다. 이것:

진공 시작 ... 끝.
transaction type: TPC-B (sort of)
scaling factor: 1
쿼리 모드 : 간단합니다
고객 수 : 10
스레드 수 : 1
number of transactions per client: 1000
number of transactions actually processed: 10000/10000
TPS = 618.764555 (연결 설정 포함)
tps = 622.977698 (excluding connections establishing)
밀리 초의 명세서 대기 시간 :
        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        BEGIN;
        0.603376 업데이트 PGBENCH_ACCOUNTS SET ABALANCE = ABALANCE + : DELTA AID = : AID;
        0.454643 PGBENCH_ACCOUNTS에서 ABALANCE를 선택하십시오.
        5.528491        UPDATE 토토 꽁 머니_tellers SET tbalance = tbalance + :delta WHERE 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최소한 달리기를 마지막으로 만들기위한 토토 꽁 머니 평균 소음을 위해 몇 분 동안. 어떤 경우에는 당신이 재현 가능한 숫자를 얻는 데 몇 시간이 필요할 수 있습니다. 그것은 a입니다 테스트를 몇 번 시도해 보는 것이 좋습니다. 숫자는 재현 가능합니까.

기본 TPC-B 유사 테스트 시나리오의 경우 초기화 스케일 팩터 (-s)) 테스트하려는 최대 클라이언트 수로 (-c); 그렇지 않으면 당신은 대부분 측정 할 것입니다 경합 업데이트. 전용-s토토 꽁 머니_branches테이블, 그리고 모든 거래가 그들 중 하나를 업데이트하고 싶어하므로-c초과 값-s의심 할 여지없이 많은 결과를 초래할 것입니다 거래가 다른 거래를 기다리는 거래를 차단했습니다.

기본 테스트 시나리오는 또한 방법에 매우 민감합니다. 테이블이 초기화 된 이래로 오랫동안 축적 테이블의 죽은 줄과 죽은 공간이 결과를 변경합니다. 결과를 이해하려면 총계를 추적해야합니다. 업데이트 수와 진공 청소기가 발생할 때. Autovacuum이라면 활성화하면 측정이 예측할 수없는 변화를 초래할 수 있습니다 성능.

제한토토 꽁 머니is 테스트를 시도 할 때 그 자체가 병목 현상이 될 수 있습니다. 많은 수의 클라이언트 세션. 이것은 완화 될 수 있습니다 달리기토토 꽁 머니다른 것 낮은 네트워크 대기 시간이지만 데이터베이스 서버의 기계 필수적입니다. 몇 가지를 실행하는 것이 유용 할 수도 있습니다토토 꽁 머니instances 동시에, 여러 클라이언트 기계에서, 동일하게 database server.