토토 꽁 머니는 간단한 프로그램입니다 벤치 마크 테스트를 실행하려면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(사용자 정의 스크립트 파일 지정). 보다 전체 목록은 아래에 있습니다.
다음은 세 가지 하위 섹션으로 나뉩니다 토토 꽁 머니은 데이터베이스 초기화 및 실행 중에 사용됩니다 벤치 마크, 일부 토토 꽁 머니은 두 경우 모두 유용합니다.
토토 꽁 머니다음 명령 줄 초기화 인수 :
초기화 모드를 호출해야합니다.
Create the토토 꽁 머니_accounts, 토토 꽁 머니_tellersand토토 꽁 머니_branches주어진 테이블 FillFactor. 기본값은 100입니다.
스케일별로 생성 된 행의 수를 곱하십시오 요인. 예를 들어,-S 100의지 에서 10,000,000 행을 만듭니다.토토 꽁 머니_accounts테이블. 기본값입니다 1.
지정된 테이블 스페이스에서 인덱스를 만듭니다 기본 테이블 스페이스보다.
지정된 테이블 스페이스에서 테이블을 만듭니다 기본 테이블 스페이스.
모든 테이블을 사용하지 않는 테이블로 만듭니다 영구 테이블.
토토 꽁 머니다음 명령 줄 벤치마킹 인수 :
시뮬레이션 된 클라이언트 수, 즉 수의 수입니다 동시 데이터베이스 세션. 기본값은 1입니다.
각 거래에 대한 새 연결을 설정하고 클라이언트 세션 당 한 번만 수행하는 대신. 이것 연결 오버 헤드를 측정하는 데 유용합니다.
인쇄 디버깅 출력.
사용자 정의 스크립트로 사용할 변수 정의 (참조 아래에). 다수의-doptions are 허용된.
트랜잭션 스크립트 읽기filename. 자세한 내용은 아래를 참조하십시오.-n, -s, 그리고-f상호입니다 독점적인.
내 직원 스레드 수토토 꽁 머니. 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입니다.
각 트랜잭션에서 발생한 시간을 로그에 쓰기 파일. 자세한 내용은 아래를 참조하십시오.
쿼리 제출에 사용할 프로토콜 섬기는 사람:
단순: 간단한 쿼리를 사용하십시오 규약.
확장: 사용 확장 쿼리 프로토콜.
준비: 사용 확장 준비된 진술이있는 쿼리 프로토콜.
기본값은 간단한 쿼리 프로토콜입니다. (보다46 장자세한 내용은
테스트를 실행하기 전에 진공 청소기를 수행하지 마십시오. 이것 토토 꽁 머니은입니다.필요한당신이 있다면 포함하지 않는 사용자 정의 테스트 시나리오 실행 표준 테이블토토 꽁 머니_accounts, 토토 꽁 머니_branches, 토토 꽁 머니_history및토토 꽁 머니_tellers.
업데이트하지 않음토토 꽁 머니_tellersand토토 꽁 머니_branches. 이것은 피할 것입니다 이 테이블에 대한 경합을 업데이트하지만 테스트합니다. TPC-B와 거의 비슷한 경우
평균 상태 당 대기 시간을보고하십시오 (실행 각 명령의 고객의 관점에서 시간) 벤치 마크가 끝난 후. 자세한 내용은 아래를 참조하십시오.
지정된 스케일 계수를보고토토 꽁 머니의 출력. 내장 테스트, 이것은 필요하지 않습니다. 올바른 척도 계수 의 행 수를 계산하여 감지됩니다.토토 꽁 머니_BRANCHES테이블. 그러나 사용자 정의 벤치 마크를 테스트 할 때 (-f토토 꽁 머니), 스케일 팩터가됩니다 이 토토 꽁 머니이 사용되지 않는 한 1으로보고되었습니다.
TPC-B와 유사한 대신 선택 전용 트랜잭션을 수행합니다 시험.
각 클라이언트가 실행하는 트랜잭션 수입니다. 기본값입니다 10.
클라이언트 당 고정 된 거래 수.-tand-t상호 배타적.
실행하기 전에 4 개의 표준 테이블을 모두 진공하십시오 시험. 둘 다-nNOR-v, 토토 꽁 머니는 진공 청소기토토 꽁 머니_tellersand토토 꽁 머니_branches테이블 및 잘라 낼토토 꽁 머니_history.
기본 트랜잭션 스크립트는 7 개의 명령을 발행합니다 거래:
시작;
PGBENCH_ACCOUNTS 업데이트 세트 Abalance = abalance + : 델타 aid = : aid;
Abalance를 선택하십시오 토토 꽁 머니_ACCOUTTS AID = : AID;
PGBENCH_TELLERS 업데이트 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토토 꽁 머니) 사례 랜덤 스크립트 중 하나가 클라이언트마다 선택됩니다. 세션은 새로운 거래를 시작합니다.
스크립트 파일의 형식은 한 줄 당 하나의 SQL 명령입니다. 다중 SQL 명령은 지원되지 않습니다. 빈 줄과 선 부터 시작--무시됩니다. 스크립트 파일 줄도"메타 명령 ",토토 꽁 머니자체, 아래 설명대로.
스크립트를위한 간단한 변수-치수 시설이 있습니다 파일. 변수는 명령 줄에 의해 설정할 수 있습니다-d토토 꽁 머니, 위에서 설명하거나 메타에 의해 아래에 설명 된 명령. 사전 설정된 변수 외에도 에 의해-d명령 줄 토토 꽁 머니, 변하기 쉬운스케일현재 척도 계수. 일단 설정되면 변수의 값이 될 수 있습니다 서면으로 SQL 명령에 삽입:variablename. 둘 이상의 클라이언트 세션을 실행할 때 각 세션에는 자체 변수 세트.
스크립트 파일 메타 명령은 backslash (로 시작합니다.\). 메타 명령에 대한 인수는 분리됩니다 여백. 이 메타 명령은 다음과 같습니다.
변수 설정varname계산 된 정수 값으로. 각Operand는 정수입니다 상수 또는 A:variablenamea 정수 값을 갖는 변수. 그만큼운영자할 수 있습니다+, -, *또는/.
예 :
\ set ntellers 10 * : scale
변수 설정varname한계 사이의 임의의 정수 값으로Minandmax포함. Each limit can be 정수 상수 또는 A:variablenamea 정수 값을 가진 변수.
예 :
\ setrandom Aid 1 : naccounts
지정된 대본에 대한 스크립트 실행을 유발합니다 마이크로 초의 지속 시간 (US), 밀리 초 (MS) 또는 초 (S). 장치가 생략되면 초는 기본값입니다.번호는 정수 일 수 있습니다 상수 또는 A:variablenamea 정수 값을 가진 변수.
예 :
\ sleep 10 ms
변수 설정varname쉘 명령의 결과명령. 명령은 반환해야합니다 표준 출력을 통한 정수 값.
인수텍스트 상수 또는 a:variabelenamea 모든 유형의 변수. 사용하고 싶다면인수콜론으로 시작하여, 당신 시작시 추가 결장을 추가해야합니다인수.
예 :
\ setshell variable_to_be_signed 명령 literal_argument : variable :: literal_starting_with_colon
동일\ 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.