지원되는 버전 :현재 (17)16 / 15 / 14 / 13
개발 버전 :Devel
지원되지 않는 버전 :12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3

스포츠 토토

스포츠 토토 - 벤치 마크 테스트 실행PostgreSQL

시놉시스

스포츠 토토 -i [옵션...] [dbname]

스포츠 토토 [옵션...] [dbname]

설명

스포츠 토토| 벤치 마크 테스트를 실행하기위한 간단한 프로그램입니다PostgreSQL. 여러 동시 데이터베이스 세션에서 동일한 SQL 명령을 반복해서 실행 한 다음 평균 트랜잭션 속도 (초당 트랜잭션)를 계산합니다.스포츠 토토TPC-B를 기반으로 느슨한 시나리오를 테스트합니다.select, 업데이트삽입거래 당 명령. 그러나 자신의 트랜잭션 스크립트 파일을 작성하여 다른 사례를 쉽게 테스트 할 수 있습니다.

전형적인 출력스포츠 토토모양 :

트랜잭션 유형 : <내장 : TPC-B (정렬)>

처음 7 줄은 가장 중요한 매개 변수 설정 중 일부를보고합니다. 여섯 번째 줄은 직렬화 또는 교착 상태 오류와의 거래에 대한 최대 시도 수를보고합니다 (실패 및 직렬화/교착 상태자세한 내용은). 여덟 번째 라인은 완료되고 의도 된 거래 수를보고합니다 (후자는 클라이언트 수의 산물과 고객 당 거래 수입니다);-t모드, 실제 트랜잭션 수만 인쇄됩니다.) 다음 줄은 직렬화 또는 교착 상태 오류로 인한 실패한 트랜잭션 수를보고합니다 (참조실패 및 직렬화/교착 상태자세한 내용은). 마지막 줄은 초당 거래 수를보고합니다.

기본 TPC-B 유사 트랜잭션 테스트에는 특정 테이블을 미리 설정해야합니다.스포츠 토토-i(초기화) 옵션이 테이블을 작성하고 채우십시오. (사용자 지정 스크립트를 테스트 할 때는이 단계가 필요하지 않지만 대신 테스트 요구 사항을 설정해야합니다.) 초기화는 다음과 같습니다.

스포츠 토토 -i [ 기타 옵션 ] dbname

여기서dbname테스트 할 이미 제작 된 데이터베이스의 이름입니다. (필요할 수도 있습니다-h, -p및/또는-u데이터베이스 서버에 연결하는 방법을 지정하는 옵션.)

주의

스포츠 토토 -I4 개의 테이블 생성스포츠 토토_accounts, 스포츠 토토_branches, 스포츠 토토_history스포츠 토토_tellers,이 이름의 기존 테이블을 파괴합니다. 이 이름을 가진 테이블이있는 경우 다른 데이터베이스를 사용하도록 매우주의하십시오!

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

행의 표 #

|-s(스케일 팩터) 옵션. 그만큼-f11261_11314

필요한 설정을 마친 후에는 포함되지 않은 명령으로 벤치 마크를 실행할 수 있습니다-i, 즉

스포츠 토토 [ 옵션 ] dbname

거의 모든 경우에 유용한 테스트를하려면 몇 가지 옵션이 필요합니다. 가장 중요한 옵션은입니다.-c(클라이언트 수),-t(거래 수),-t(시간 제한) 및-f(사용자 정의 스크립트 파일 지정). 전체 목록은 아래를 참조하십시오.

옵션

다음은 세 개의 하위 섹션으로 나뉩니다. 데이터베이스 초기화 및 벤치 마크를 실행하는 동안 다양한 옵션이 사용되지만 일부 옵션은 두 경우 모두 유용합니다.

초기화 옵션

스포츠 토토다음 명령 줄 초기화 인수를 수락합니다 :

[-d] dbname
[-dbname =]dbname #

테스트 할 데이터베이스의 이름을 지정합니다. 이것이 지정되지 않은 경우 환경 변수pgdatabase가 사용됩니다. 설정되지 않은 경우 연결에 지정된 사용자 이름이 사용됩니다.

-i
-Initialize #

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

-iinit_steps
-Init-steps =init_steps #

정상 초기화 단계의 선택된 세트 만 수행합니다.init_steps단계 당 하나의 문자를 사용하여 수행 할 초기화 단계를 지정합니다. 각 단계는 지정된 순서로 호출됩니다.DTGVP. 사용 가능한 단계는 다음과 같습니다.

d(드롭) #

기존의 드롭스포츠 토토테이블.

t(테이블 만들기) #

표준에서 사용하는 테이블 만들기스포츠 토토시나리오, 즉스포츠 토토_accounts, 스포츠 토토_branches, 스포츠 토토_history스포츠 토토_tellers.

g또는G(데이터 생성, 클라이언트 측 또는 서버 측) #

데이터를 생성하여 표준 테이블에로드하여 이미 존재하는 데이터를 대체합니다.

withg(클라이언트 측 데이터 생성), 데이터가 생성됩니다스포츠 토토클라이언트와 서버로 보냈습니다. 이것은 a를 통해 클라이언트/서버 대역폭을 광범위하게 사용합니다.COPY. 스포츠 토토사용동결버전 14 이상의 옵션PostgreSQL후속 속도를 높이려면진공스포츠 토토_accounts파티션이 활성화 된 경우 테이블. 사용g모든 테이블에 대한 데이터를 생성하는 동안 10 만 행마다 하나의 메시지를 인쇄하는 로깅을 유발합니다.

withG(서버 측 데이터 생성),에서 작은 쿼리 만 전송됩니다.스포츠 토토클라이언트와 데이터는 실제로 서버에서 생성됩니다. 이 변형에는 큰 대역폭이 필요하지 않지만 서버는 더 많은 작업을 수행합니다.G데이터를 생성하는 동안 로깅이 진행 메시지를 인쇄하지 않도록합니다.

기본 초기화 동작은 클라이언트 측 데이터 생성을 사용합니다 (g).

v(진공) #

Invoke진공표준 테이블에서.

p(기본 키 생성) #

표준 테이블에서 기본 키 인덱스 생성.

f(외국 열쇠 만들기) #

표준 테이블 사이에 외래 키 제약 조건을 만듭니다. (이 단계는 기본적으로 수행되지 않습니다.)

-f FillFactor
-fillfactor =FillFactor #

생성스포츠 토토_accounts, 스포츠 토토_tellersand스포츠 토토_branches주어진 FillFactor가있는 테이블. 기본값은 100입니다.

-n
--- 노바 쿠움 #

초기화 중 진공 청소기를 수행하지 마십시오. (이 옵션은를 억제합니다v초기화 단계, 그것이 지정된 경우에도-i.)

-Q
-Quiet #

조용한 모드로 로깅을 스위치로, 5 초당 하나의 진행 메시지 만 생성합니다. 기본 로깅은 10 만 행마다 하나의 메시지를 인쇄하며, 종종 초당 여러 줄 (특히 우수한 하드웨어에서)을 출력합니다.

이 설정은 효과가 없습니다.G-i.

-s scale_factor
-스케일 =scale_factor #

스케일 팩터로 생성 된 행의 수를 곱하십시오. 예를 들어,-S 100에서 10,000,000 행을 생성합니다스포츠 토토_accounts테이블. 기본값은 1입니다. 스케일이 20,000 이상인 경우 계정 식별자 (을 보유하는 데 사용되는 열이 사용됩니다.AID열)은 더 큰 정수 사용 ( 사용으로 전환됩니다.bigint), 계정 식별자의 범위를 유지하기에 충분히 커질 수 있습니다.

-Foreign-Keys #

표준 테이블 사이에 외국의 주요 제약 조건을 만듭니다. (이 옵션이 추가f아직 존재하지 않는 경우 초기화 단계 시퀀스로의 단계입니다.)

-Index-TableSpace =index_tablespace #

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

-파티션-메드 =이름 #

분할 된 만들기스포츠 토토_accounts테이블이름메소드. 예상 값은범위또는Hash. 이 옵션은이 필요합니다.-파티션는 0이 아닌 것으로 설정되었습니다. 지정되지 않은 경우 기본값은범위.

-파티션 =Num #

분할 된 만들기스포츠 토토_accounts테이블Num스케일링 된 계정에 대해 거의 동일한 크기의 파티션. 기본값은0, 파티셔닝이 없음을 의미합니다.

--- 타블 스페이스 =테이블 스페이스 #

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

-unlogged-tables #

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

벤치마킹 옵션

스포츠 토토다음 명령 줄 벤치마킹 인수를 허용합니다 :

-B ScriptName [@weight]
-빌리 틴=ScriptName [@weight] #

실행할 스크립트 목록에 지정된 내장 스크립트를 추가하십시오. 사용 가능한 내장 스크립트는 다음과 같습니다.tpcb-like, Simple-UpdateandSelect-Only. 내장 이름의 명백한 접두사가 허용됩니다.목록, 내장 스크립트 목록을 표시하고 즉시 종료하십시오.

선택적으로, 정수 무게를 작성하십시오@이 스크립트와 다른 스크립트를 선택할 확률을 조정합니다. 기본 무게는 1입니다. 자세한 내용은 아래를 참조하십시오.

-c 클라이언트
--client =클라이언트 #

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

-c
-코닝 #

클라이언트 세션 당 한 번만 수행하지 않고 각 트랜잭션에 대한 새로운 연결을 설정하십시오. 연결 오버 헤드를 측정하는 데 유용합니다.

-d varname=value
-define =varname=value #

사용자 정의 스크립트에서 사용할 변수를 정의하십시오 (아래 참조). 다수의-d옵션이 허용됩니다.

-f filename [@weight]
-파일 =filename [@weight] #

트랜잭션 스크립트 추가filename실행할 스크립트 목록에.

선택적으로, 정수 무게를 작성하십시오@이 스크립트와 다른 스크립트를 선택할 확률을 조정합니다. 기본 무게는 1입니다.@캐릭터, 예를 들어 모호성이 없도록 무게를 추가하십시오filen@me@1.) 자세한 내용은 아래를 참조하십시오.

-j 스레드
-jobs =스레드 #

내 직원 스레드 수스포츠 토토. 멀티 CPU 머신에서 둘 이상의 스레드를 사용하면 도움이 될 수 있습니다.

-l
-로그 #

각 트랜잭션에 대한 정보를 로그 파일에 쓰십시오. 자세한 내용은 아래를 참조하십시오.

-l Limit
-latency-limit =Limit #

더 이상 지속되는 거래Limit밀리 초인은 별도로 계산 및보고합니다.늦게.

스로틀 링이 사용될 때 (--rate = ...), 일정보다 뒤쳐진 거래LimitMS, 따라서 대기 시간 제한을 충족시키기를 희망하지 않으므로 서버로 전혀 전송되지 않습니다. 그들은 별도로 계산되고보고됩니다.건너 뛰기.

언제--- 막사옵션이 사용됩니다. 직렬화 이상으로 인해 실패하는 트랜잭션이 사용됩니다.LimitMS. 숫자가 아닌 시도 시간 만 제한하려면 사용--- 막사 = 0. 기본적으로 옵션--- 막사1으로 설정되었으며 직렬화/교착 상태 오류가있는 트랜잭션이 재조정되지 않습니다. 보다실패 및 직렬화/교착 상태그러한 거래를 다시 시도하는 것에 대한 자세한 내용은

-m QueryMode
-protocol =QueryMode #

서버에 쿼리를 제출하는 데 사용할 프로토콜 :

  • 단순: 간단한 쿼리 프로토콜 사용.

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

  • 준비: 준비된 문과 함께 확장 쿼리 프로토콜 사용.

in준비모드,스포츠 토토두 번째 쿼리 반복에서 시작하여 구문 분석 결과를 재사용하므로스포츠 토토다른 모드보다 빠르게 실행됩니다.

기본값은 간단한 쿼리 프로토콜입니다. (보다PostgreSQL : 문서 : 17 : 53 장. 프론트 엔드/백엔드 스포츠 토토자세한 내용은

-n
--- 노바 쿠움 #

테스트를 실행하기 전에 진공 청소기를 수행하지 마십시오. 이 옵션은필요한표준 테이블을 포함하지 않는 사용자 정의 테스트 시나리오를 실행중인 경우스포츠 토토_accounts, 스포츠 토토_branches, 스포츠 토토_history스포츠 토토_tellers.

-n
--skip-some-updates #

내장 단순 업데이트 스크립트를 실행합니다. 속기-B Simple-Update.

-p SEC
--progress =SEC #

모든 진행 보고서 표시SEC초. 이 보고서에는 실행이 시작된 이후의 시간, 마지막 보고서 이후 TPS 및 마지막 보고서 이후의 트랜잭션 대기 시간 평균, 표준 편차 및 실패한 트랜잭션 수가 포함됩니다.-r), 대기 시간은 실제 트랜잭션 시작 시간이 아닌 트랜잭션 예약 시작 시간과 관련하여 계산되므로 평균 일정 지연 시간도 포함됩니다. 언제--- 막사직렬화/교착 상태 오류 후 트랜잭션 검색을 가능하게하는 데 사용되며, 보고서에는 RETRED TRANSACTION의 수와 모든 검색의 합이 포함됩니다..

-r
-Report-Per-Command #

벤치 마크 마감 후 각 명령에 대한 다음 통계를보고합니다. 평균 주당 대기 시간 (클라이언트 관점에서 실행 시간), 실패 횟수 및 직렬화 후의 검색 수 또는 교착 상태 오류 수. 보고서에는이있는 경우에만 재 시도 통계가 표시됩니다.--- 막사옵션은 1과 같지 않습니다.

-r rate
--rate =rate #

가능한 빨리 실행하는 대신 지정된 속도를 대상으로하는 트랜잭션을 실행합니다 (기본값). 요금은 초당 거래에서 제공됩니다.

요금은 Poisson Distributed Schedule Time Line을 따라 트랜잭션을 시작함으로써 타겟팅됩니다. 예상 시작 시간 일정은 이전 트랜잭션이 종료 된 시점이 아니라 클라이언트가 처음 시작된시기에 따라 진행됩니다.

스로틀링이 활성화되면 실행이 끝날 때보고 된 트랜잭션 대기 시간은 예정된 시작 시간에서 계산되므로 각 트랜잭션이 이전 트랜잭션이 완료 될 때까지 기다려야 할 시간이 포함됩니다. 대기 시간은 일정 지연 시간이라고하며 평균 및 최대 값은 별도로보고됩니다.

if-latency-limit와 함께--rate, 트랜잭션은 예정된 시작 시간에서 대기 시간이 계산되기 때문에 이전 트랜잭션이 종료 될 때 이미 대기 시간 제한을 초과 할 정도로 뒤쳐 질 수 있습니다. 이러한 거래는 서버로 전송되지 않지만 완전히 건너 뛰고 별도로 계산됩니다.

높은 일정 지연 시간은 시스템이 선택한 수의 클라이언트 및 스레드와 함께 지정된 속도로 트랜잭션을 처리 할 수 ​​없음을 나타냅니다. 평균 트랜잭션 실행 시간이 각 트랜잭션 간의 예약 간격보다 길면, 각 연속 트랜잭션이 더 뒤쳐지고 일정 지연 시간이 계속 증가할수록 테스트 실행이 길어질 수 있습니다.

-s scale_factor
-스케일 =scale_factor #

지정된 척도 요소를보고스포츠 토토의 출력. 내장 테스트를 통해 이것은 필요하지 않습니다.스포츠 토토_branches테이블. 그러나 사용자 정의 벤치 마크 만 테스트 할 때 (-f옵션),이 옵션이 사용되지 않는 한 척도 계수는 1으로보고됩니다.

-s
-선택 전용 #

내장 선택 스크립트를 실행합니다. 속기-B SELECT-ONLY.

-t 거래
-Transactions =거래 #

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

-t
-타임 = #

클라이언트 당 고정 된 수의 트랜잭션이 아닌 몇 초 동안 테스트를 실행하십시오.-tand-t상호 배타적입니다.

-v
-Vacuum-all #

테스트를 실행하기 전에 4 개의 표준 테이블을 모두 진공하십시오. 둘 다-nNOR-v, 스포츠 토토진공 청소기스포츠 토토_tellersand스포츠 토토_branches테이블, 그리고 잘라 낼스포츠 토토_history.

-gregate-interVal = #

집계 간격 (초). 와 함께만 사용될 수 있습니다.-l옵션. 이 옵션을 사용하면 로그에는 아래에 설명 된대로 간격 당 요약 데이터가 포함됩니다.

--exit-on-abort #

오류로 인해 고객이 중단되면 즉시 종료하십시오. 이 옵션이 없으면 클라이언트가 중단 되더라도 다른 클라이언트는에 의해 지정된대로 계속 실행할 수 있습니다.-t또는-t옵션 및스포츠 토토이 경우 불완전한 결과를 인쇄합니다.

직렬화 실패 또는 교착 상태 실패는 클라이언트를 중단하지 않으므로이 옵션의 영향을받지 않습니다. 보다실패 및 직렬화/교착 상태자세한 내용은

-선원 분해 #

다음 유형으로 그룹화 된 메인 및 스크립트 보고서뿐만 아니라 전환 및 집계 로그에서 실패를보고합니다.

  • 직렬화 실패;

  • 교착 상태 실패;

참조실패 및 직렬화/교착 상태자세한 내용은

-로그-프리 픽스 =prefix #

|-로그. 기본값은스포츠 토토_log.

--- 막사 =number_of_tries #

직렬화/교착 상태 오류와의 트랜잭션에 대한 검색을 활성화하고 이러한 시도의 최대 수를 설정합니다. 이 옵션은와 결합 할 수 있습니다.-latency-limit모든 거래의 총 시간을 제한하는 옵션; 또한 무제한의 시도를 사용할 수 없습니다 (--- 막사 = 0) 없음-latency-limit또는-타임. 기본값은 1이고 직렬화/교착 상태 오류가있는 트랜잭션은 재조정되지 않습니다.실패 및 직렬화/교착 상태그러한 거래를 다시 시도하는 것에 대한 자세한 내용은

-Progress-Timestamp #

진행 상황을 보여줄 때 (옵션-p), 실행 시작 이후 몇 초 대신 타임 스탬프 (Unix epoch)를 사용하십시오. 장치는 초 후 밀리 초 정밀도로 몇 초 안에 있습니다.

-랜덤 시드 =씨앗 #

랜덤 생성기 시드를 설정하십시오. 시드 시스템 랜덤 번호 생성기를 시드 다음 각 스레드마다 하나의 초기 생성기 상태를 생성합니다.씨앗될 수 있습니다 :Time(기본값, 씨앗은 현재 시간을 기준으로 함),rand(강력한 임의 소스 사용, 사용 가능한 경우 실패) 또는 서명되지 않은 소수 정수 값. 랜덤 생성기는 스포츠 토토 스크립트 (에서 명시 적으로 호출됩니다.무작위 ...함수) 또는 암시 적으로 (예를 들어 옵션--rate이를 사용하여 거래 일정). 명시 적으로 설정하면 파종에 사용되는 값이 터미널에 표시됩니다.씨앗환경 변수를 통해 제공 될 수도 있습니다스포츠 토토_random_seed. 제공된 종자가 가능한 모든 용도에 영향을 미치는지 확인하려면이 옵션을 먼저 배치하거나 환경 변수를 사용하십시오.

씨앗을 명시 적으로 재현 할 수 있습니다스포츠 토토임의의 숫자에 관한 한 정확하게 실행됩니다. 랜덤 상태가 스레드마다 관리되므로 이는 정확히 동일 함을 의미합니다스포츠 토토스레드 당 클라이언트가 하나 있고 외부 또는 데이터 종속성이없는 경우 동일한 호출을 실행하십시오. 통계적 관점에서 실행되는 통계적 관점에서 정확히 실행되는 것은 성능 변동성을 숨기거나 성능을 과도하게 향상시킬 수 있기 때문에 나쁜 아이디어입니다.

--샘플링-레이트 =rate #

로그에 데이터를 작성할 때 사용하여 생성 된 로그의 양을 줄이기 위해 샘플링 속도. 이 옵션이 주어지면 지정된 트랜잭션 분율 만 기록됩니다.

로그 파일을 처리 할 때 샘플링 속도를 고려해야합니다. 예를 들어, TPS 값을 계산할 때 그에 따라 숫자를 곱해야합니다 (예 : 0.01 샘플 속도로 실제 TPS의 1/100 만 얻을 수 있음).

-쇼 스크립트 =ScriptName #

내장 스크립트의 실제 코드 표시ScriptNameStderr에서 즉시 종료하십시오.

-Versbose-Errors #

모든 오류 및 실패에 대한 메시지 (재 시도가없는 오류)에 대한 메시지를 인쇄하여 재정의 한도를 초과하고 직렬화/교착 상태 실패의 어느 정도를 초과하는지를 포함하여. (이 경우 출력이 크게 증가 할 수 있습니다.) 참조실패 및 직렬화/교착 상태자세한 내용은

공통 옵션

스포츠 토토연결 매개 변수 및 기타 공통 설정에 대한 다음 공통 명령 줄 인수를 수락합니다.

-Debug #

인쇄 디버깅 출력.

-h hostname
-host =hostname #

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

-p 포트
-포트 =포트 #

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

-u 로그인
--username =로그인 #

연결할 사용자 이름

-v
-버전 #

인쇄스포츠 토토버전 및 종료.

-?
-help #

도움말 표시스포츠 토토명령 줄 인수 및 종료

종료 상태

성공적인 실행은 상태 0으로 종료됩니다. 종료 상태 1은 잘못된 명령 줄 옵션 또는 절대 발생하지 않는 내부 오류와 같은 정적 문제를 나타냅니다. 초기 연결 고장과 같은 벤치 마크를 시작할 때 발생하는 초기 오류는 상태 1과 함께 종료됩니다. 데이터베이스 오류 또는 스크립트의 문제와 같은 실행 중 오류가 종료 상태 2. 후자의 경우스포츠 토토if 부분 결과를 인쇄합니다.--exit-on-abort옵션이 지정되지 않았습니다.

환경

pgdatabase
PGHOST
pgport
PGUSER #

기본 연결 매개 변수.

이 유틸리티는 대부분의 다른 유틸리티PostgreSQL유틸리티, 지원하는 환경 변수를 사용합니다libpq(참조PostgreSQL : 문서 : 17 : 32.15. 환경 배트맨 토토).

환경 변수PG_COLOR진단 메시지에서 색상을 사용할지 여부를 지정합니다. 가능한 값은항상, autoand절대.

노트

무엇입니까거래실제로 수행스포츠 토토?

스포츠 토토지정된 목록에서 무작위로 선택한 테스트 스크립트를 실행합니다. 스크립트에는로 지정된 내장 스크립트가 포함될 수 있습니다.-B및 사용자가 제공 한 스크립트와 함께 지정-f. 각 스크립트는 AN 후에 지정된 상대적인 무게가 주어질 수 있습니다@선택 확률을 변경하기 위해. 기본 무게는입니다.1. 무게의 스크립트0무시됩니다.

기본 내장 트랜잭션 스크립트 (도-B tpcb-like) 무작위로 선택한 거래에 대한 거래 당 7 개의 명령을 발행AID, TID, BIDand델타. 이 시나리오는 TPC-B 벤치 마크에서 영감을 얻었지만 실제로는 TPC-B가 아니므로 이름입니다.

  1. 시작;

  2. 업데이트 PGBENCH_ACCOUNTS SET ABALANCE = ABALANCE + : DELTA AID = : AID;

  3. PGBENCH_ACCOUTTS에서 Aid = : AID;에서 Abalance를 선택하십시오.

  4. 스포츠 토토_tellers 업데이트 tbalance = tbalance + : delta where tid = : tid;

  5. 업데이트 스포츠 토토_branches set bbalance = bbalance + : delta bid = : bid;

  6. PGBENCH_HISTORY (TID, BID, AID, DELTA, MTIME) 값 (: TID, : BID, : AID, : DELTA, CURRENT_TIMESTARM)에 삽입합니다.

  7. 끝;

선택한 경우Simple-Update내장 (또한-n), 4 단계와 5 단계는 트랜잭션에 포함되지 않습니다. 이것은이 테이블의 업데이트 경합을 피할 수 있지만 테스트 케이스는 TPC-B와 훨씬 덜 만듭니다..

선택한 경우Select-Only내장 (또한-s), 만select발행.

사용자 정의 스크립트

스포츠 토토기본 트랜잭션 스크립트 (위에서 설명한)를 파일에서 읽은 트랜잭션 스크립트로 대체하여 사용자 정의 벤치 마크 시나리오 실행을 지원합니다 (-f옵션). 이 경우 a거래스크립트 파일의 하나의 실행으로 계산됩니다.

스크립트 파일에는 세미콜론에 의해 종료 된 하나 이상의 SQL 명령이 포함되어 있습니다. 로 시작하는 빈 줄과 선--무시됩니다. 스크립트 파일도 포함 할 수 있습니다메타 명령스포츠 토토자체, 아래 설명대로.

Note

PostgreSQL9.6, 스크립트 파일의 SQL 명령은 NewLines에 의해 종료되었으므로 라인을 가로 질러 계속할 수 없었습니다. 이제 세미콜론은필수연속 SQL 명령을 분리하려면 (SQL 명령에 Meta 명령이 뒤 따르는 경우 SQL 명령에 필요하지는 않지만). 이전 및 새 버전의에서 작동하는 스크립트 파일을 만들어야하는 경우스포츠 토토, 세미콜론으로 끝나는 단일 줄에 각 SQL 명령을 작성하십시오.

스포츠 토토스크립트에는 불완전한 SQL 트랜잭션이 포함되어 있지 않습니다. 런타임에 클라이언트가 마지막 트랜잭션 블록을 완료하지 않고 스크립트의 끝에 도달하면 중단됩니다.

스크립트 파일에 대한 간단한 변수 와이블 시설이 있습니다. 가변 이름은 문자 (라틴이 아닌 문자 포함), 숫자 및 밑줄로 구성되어 있어야하며, 첫 번째 문자는 숫자가 아닙니다.-d옵션, 위에서 설명한 옵션 또는 아래 설명 된 메타 명령에 의해. 에 의해 사전 설정된 변수 외에-d명령 줄 옵션에는 자동으로 사전 설정된 몇 가지 변수가 있습니다.표 298. 를 사용하여 이러한 변수에 지정된 값-d자동 사전 설정보다 우선합니다. 정해지면 변수의 값을 쓰면 SQL 명령에 삽입 할 수 있습니다:variablename. 둘 이상의 클라이언트 세션을 실행할 때 각 세션에는 자체 변수 세트가 있습니다.스포츠 토토한 명령문에서 최대 255 개의 가변 용도를 지원합니다.

표 298. PGBENCH 자동 변수

변수 설명
client_id 고유 번호 클라이언트 세션 식별 (0부터 시작)
default_seed 기본적으로 해시 및 의사 안드 돔 순열 기능에 사용되는 종자
random_seed 랜덤 발전기 종자 (random with with with with-d)
스케일 현재 척도 계수

스크립트 파일 메타 명령은 백 슬래시로 시작합니다 (\) 일반적으로 백 슬래시 리턴을 작성하여 추가 라인을 계속 유지할 수 있지만 일반적으로 줄 끝까지 확장됩니다. 메타 명령에 대한 인수는 공백으로 분리됩니다.

\ gset [prefix] \ aset [prefix] #

이 명령은 종료 세미콜론을 대신하여 SQL 쿼리를 종료하는 데 사용될 수 있습니다 (;).

언제\ gset명령이 사용되며, 이전의 SQL 쿼리는 한 행을 반환 할 것으로 예상되며, 그 열은 열 이름의 이름을 따서 명명 된 변수로 저장되고.prefix제공되는 경우.

언제\ aset명령이 사용됩니다. 모든 결합 된 SQL 쿼리 (\;) 열이 열 이름의 이름을 따서 명명 된 변수에 저장되고를 접두사에 넣었습니다.prefix제공되는 경우. 쿼리가 행을 반환하지 않으면 할당되지 않으며이를 감지하기 위해 변수를 테스트 할 수 있습니다.

\ gsetand\ aset명령이 필요할 때까지 쿼리 결과를 아직 사용할 수 없으므로 파이프 라인 모드에서 사용할 수 없습니다.

다음 예제는 첫 번째 쿼리에서 변수로 최종 계정 잔액을 넣습니다Abalance및 변수를 채 웁니다P_TWOandP_THREE세 번째 쿼리에서 정수가 있습니다. 두 번째 쿼리의 결과는 폐기됩니다.Fourand5.

PGBENCH_ACCOUTTS 업데이트
\ if 표현
\ elif 표현
\ else
\ endif #

이 명령 그룹은 중첩 가능한 조건부 블록을 구현합니다.PSQL's\ if 표현. 조건부 표현은와 동일합니다.\ set, 0이 아닌 값이 참으로 해석됩니다.

\ setvarname 표현 #

변수 설정varname에서 계산 된 값으로표현. 표현은를 포함 할 수 있습니다.NULL상수, 부울 상수trueandfalse,와 같은 정수 상수5432,와 같은 이중 상수3.14159, 변수 참조:variablename, 연산자일반적인 SQL 우선 순위와 연관성이있는함수 호출, SQLCASE일반적인 조건부 표현식및 괄호.

함수 및 대부분의 연산자 반환NULLonNULL입력.

조건부 목적의 경우, 제로가 아닌 숫자 값은입니다.true, 제로 숫자 값 및NULLarefalse.

너무 크거나 작은 정수 및 이중 상수뿐만 아니라 정수 산술 연산자 (+, -, *and/) 오버 플로우에서 오류를 올리십시오.

최종 없음else조항이 a에 제공됩니다CASE, 기본값은입니다.NULL.

예 :

\ set ntellers 10 * : 스케일
\ sleep번호[US | MS | #

마이크로 초에서 지정된 기간 동안 스크립트 실행을 유발합니다 (US), 밀리 초 (MS) 또는 초 (s). 장치가 생략되면 초 기본값입니다.번호정수 상수 또는 a 일 수 있습니다.:variablename정수 값을 가진 변수에 대한 참조

예 :

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

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

명령및 각인수텍스트 상수 또는 a 일 수 있습니다.:variablename변수 참조. 사용하려면인수결장으로 시작하여을 추가로 작성하십시오.인수.

예 :

\ setShell variable_to_be_AsSigned 명령 literal_argument : variable :: literal_starting_with_colon
\ shell명령 [ 인수...] #

동일\ setshell, 그러나 명령의 결과는 폐기됩니다.

예 :

\ shell 명령 literal_argument : variable :: reteral_starting_with_colon
\ startPipeline
\ syncpipeline
\ endpipeline #

이 명령 그룹은 SQL 문의 파이프 라인을 구현합니다. 파이프 라인은 A부터 시작해야합니다.\ startPipeline\ endpipeline. 그 사이에는가 있습니다.\ syncpipelinea를 보내는 명령동기화 메시지진행중인 파이프 라인을 끝내지 않고 보내기 버퍼를 플러시하지 않고. 파이프 라인 모드에서는 이전 문의 결과를 기다리지 않고 명세서가 서버로 전송됩니다.PostgreSQL : 문서 : 17 : 32.5. 파이프 토토 꽁 머니 모드자세한 내용은. 파이프 라인 모드는 확장 쿼리 프로토콜을 사용해야합니다.

내장 운영자

산술, 비트, 비교 및 ​​논리 연산자에 나열된표 299내장스포츠 토토\ set. 연산자는 선행 순서가 증가함에 따라 나열됩니다.

표 299. PGBENCH 연산자

운영자

설명

예제

부울 또는 부울부울

논리적 또는

5 또는 0true

부울 부울부울

논리 및

3 및 0false

아님 부울부울

논리적이지 않음

거짓true

부울 is [not] (null | true | false)부울

부울 가치 테스트

1 is nullfalse

value ISNULL | NOTNULL부울

Nullness Tests

1 NOTNULLtrue

번호 = 번호부울

Equal

5 = 4false

번호 < 번호부울

동일하지 않음

5 <> 4true

번호 != 번호부울

동일하지 않음

5 != 5false

번호 < 번호부울

보다 작음

5 <4false

번호 <= 번호부울

이하

5 <= 4false

번호 번호부울

보다

5> 4true

번호 > = 번호부울

보다 크거나

5> = 4true

정수 | 정수정수

Bitwise 또는

1 | 23

정수 # 정수정수

Bitwise XOR

1 # 32

정수 & 정수정수

Bitwise and

1 & 31

~ 정수정수

비트가 아닌

~ 1-2

정수 << 정수정수

Bitwise Shift Left

1 << 24

정수 정수정수

Bitwise Shift Right

8 >> 22

번호 + 번호번호

추가

5 + 49

번호 - 번호번호

Subtraction

3 - 2.01.0

번호 * 번호번호

곱셈

5 * 420

번호 / 번호번호

DIVISION (두 입력이 정수 인 경우 결과를 제로로 자르기)

5 / 31

정수 % 정수정수

모듈로 (나머지)

3 % 21

- 번호번호

부정

- 2.0-2.0


내장 기능

나열된 함수표 300내장스포츠 토토\ set.

표 300. PGBENCH 기능

기능

설명

예제

ABS ( 번호) → 입력과 동일한 유형

절대 값

ABS (-17)17

디버그 ( 번호) → 입력과 동일한 유형

논증을 인쇄합니다Stderr그리고 인수를 반환합니다.

디버그 (5432.1)5432.1

더블 ( 번호) →더블

캐스트로 두 배로.

더블 (5432)5432.0

exp ( 번호) →더블

지수 (e주어진 전력으로 올라 됨)

exp (1.0)2.718281828459045

가장 큰 ( 번호 [, ...]) →더블인수가 더블 인 경우정수

인수 중 가장 큰 값을 선택합니다.

Greatest (5, 4, 3, 2)5

Hash ( value [, 씨앗]) →정수

이것은 별칭입니다hash_murmur2.

해시 (10, 5432)-5817877081768721676

hash_fnv1a ( value [, 씨앗]) →정수

계산FNV-1A HASH.

hash_fnv1a (10, 5432)-7793829335365542153

hash_murmur2 ( value [, 씨앗]) →정수

계산Murmurhash2 Hash.

hash_murmur2 (10, 5432)-5817877081768721676

int ( 번호) →정수

정수에 캐스트.

int (5.4 + 3.8)9

최소 ( 번호 [, ...]) →더블인수가 더블 인 경우정수

인수 중에서 가장 작은 값을 선택합니다.

최소 (5, 4, 3, 2.1)2.1

ln ( 번호) →더블

자연 로그

LN (2.718281828459045)1.0

​​mod ( 정수, 정수) →정수

모듈로 (나머지)

mod (54, 32)22

Permute ( i, 크기[,씨앗]) →정수

순열 값i, 범위[0, size). 이것은의 새로운 위치입니다.i(modulo크기) 정수의 의사로드 돔 순열에서0 ... size-1, 매개 변수씨앗, 아래 참조.

Permute (0, 4)0과 3 사이의 정수

pi() →더블

대략적인 값π

pi ()3.14159265358979323846

pow ( x, y) →더블

Power ( x, y) →더블

x|y

pow (2.0, 10)1024.0

random ( LB, UB) →정수

균일하게 분포 된 임의의 정수를 계산합니다[lb, ub].

random (1, 10)1과 10 사이의 정수

random_exponential ( LB, UB, 매개 변수) →정수

지수 적으로 분산 된 임의의 정수를 계산합니다[lb, ub], 아래 참조.

random_exponential (1, 10, 3.0)1과 10 사이의 정수

random_gaussian ( LB, UB, 매개 변수) →정수

가우스 분포 무작위 정수를 계산합니다[lb, ub], 아래 참조.

random_gaussian (1, 10, 2.5)1과 10 사이의 정수

random_zipfian ( LB, UB, 매개 변수) →정수

Zipfian Distributed Random Integer in을 계산합니다.[lb, ub], 아래 참조.

random_zipfian (1, 10, 1.5)1과 10 사이의 정수

SQRT ( 번호) →더블

제곱근

SQRT (2.0)1.414213562


therandom함수는 균일 분포를 사용하여 값을 생성합니다. 즉, 모든 값은 지정된 범위 내에서 동일한 확률로 그려집니다. 그만큼random_exponential, random_gaussianandrandom_zipfian함수는 분포의 정확한 모양을 결정하는 추가 이중 매개 변수가 필요합니다.

  • 지수 분포의 경우매개 변수at에서 빠르게 폐지되는 지수 분포를 잘라서 분포를 제어합니다.매개 변수, 그런 다음 경계 사이의 정수에 투사합니다. 정확하게


    f (x) = exp (-parameter*(x-min)/(max-min+1))/(1- exp (-parameter))

    valuei사이Minandmax포괄적 인 확률로 그려집니다 :f (i) -f (i + 1).

    직관적으로, 더 클수록매개 변수Min액세스하고, 덜 자주 값이 가까이max액세스합니다. 0에 가까워매개 변수는 액세스 분포입니다. 분포의 조잡한 근사치는 범위에서 가장 빈번한 1% 값 (에 가깝다는 것입니다.Min, 그려진매개 변수시간의%. 그만큼매개 변수값은 엄격하게 긍정적이어야합니다.

  • 가우스 분포의 경우, 간격이 표준 정규 분포 (고전적인 벨 모양의 가우시안 곡선)에 맵핑됩니다.-Parameter왼쪽 및+매개 변수오른쪽. 간격 중간의 값이 그려질 가능성이 높습니다.Phi (x)표준 정규 분포의 누적 분포 함수이며 평균mu정의(max + min) / 2.0with


    f (x) = phi (2.0*매개 변수*(x- mu)/(max-min+1))/
           (2.0*phi (매개 변수) -1)

    valuei사이Minandmax포괄적 인 확률로 그려집니다 :F (i + 0.5) -F (i -0.5). 직관적으로, 더 클수록매개 변수Minandmax경계. 값의 약 67%가 중간에서 도출됩니다1.0 / 매개 변수, 그것은 상대적입니다0.5 / 매개 변수평균 주위, 중간에서 95%2.0 / 매개 변수, 그것은 상대적입니다1.0 / 매개 변수78799_78832매개 변수는 4.0, 값의 67%가 간격 (즉,의 중간 분기 (1.0 / 4.0)에서 그려집니다.3.0 / 8.0to5.0 / 8.0) 및 중간 절반에서 95% (2.0 / 4.0) 간격 (두 번째 및 세 번째 사 분위수). 최소 허용매개 변수값은 2.0입니다.

  • random_zipfian경계 Zipfian 분포를 생성합니다.매개 변수분포가 어떻게 왜곡되는지 정의합니다. 클수록매개 변수분포는 범위가 1부터 시작한다고 가정하면 그리기 확률의 비율입니다.k대 그리기k+1is((k+1)/k)**매개 변수. 예를 들어,random_zipfian (1, ..., 2.5)값을 생성1(2/1)**2.5 = 5.66시간보다 더 자주2, 그 자체가 생산(3/2)**2.5 = 2.76시간보다 더 자주3등.

    스포츠 토토의 구현은 "비 균일 랜덤 변동 생성", Luc Devroye, p. 550-551, Springer 1986. 해당 알고리즘의 제한으로 인해매개 변수값은 범위 [1.001, 1000]로 제한됩니다.

Note

균일하지 않은 행을 선택하는 벤치 마크를 설계 할 때, 선택한 행은 시퀀스의 ID 또는 물리적 행 순서와 같은 다른 데이터와 상관 관계가있을 수 있으며, 이는 성능 측정을 왜곡시킬 수 있습니다..

이를 피하려면를 사용하고 싶을 수도 있습니다.Permute선택한 행을 셔플하고 그러한 상관 관계를 제거하기 위해 기능 또는 유사한 효과가있는 다른 추가 단계.

해시 함수Hash, hash_murmur2andhash_fnv1a입력 값과 선택적 종자 매개 변수를 수락하십시오. 씨앗이 제공되지 않은 경우: default_seed사용됩니다. 명령 줄에 의해 설정되지 않는 한 무작위로 초기화됩니다-d옵션.

Permute입력 값, 크기 및 선택적 종자 매개 변수를 허용합니다. 범위에서 정수의 의사로드 돔 순열을 생성합니다[0, size), 구분 된 값에서 입력 값의 인덱스를 반환합니다. 선택한 순열은 종자에 의해 매개 변수화되며, 기본값은: default_seed, 지정되지 않은 경우. 해시 함수와 달리Permute출력 값에 충돌이나 구멍이 없는지 확인하십시오. 간격 외부의 입력 값은 크기의 모듈로 해석됩니다.Permute|random_zipfian또는random_exponential따라서 더 자주 그려진 값은 사소한 상관 관계가 아닙니다. 예를 들어 다음스포츠 토토스크립트는 소셜 미디어 및 블로그 플랫폼에 일반적인 가능한 실제 워크로드를 시뮬레이션합니다.

\ SET SIZE 1000000

경우에 따라 서로 상관 관계가없는 몇 가지 별개의 분포가 필요하며 이것이 옵션 종자 매개 변수가 편리한시기입니다 :

\ set k1 1 + permute (: r, : size, : default_seed + 123)

비슷한 동작도 근사화 될 수 있습니다Hash:

\ SET SIZE 1000000

이후Hash충돌을 생성하고, 일부 값은 도달 할 수없고 다른 값은 원래 분포에서 예상보다 더 빈번합니다.

예를 들어, 내장 TPC-B와 유사한 트랜잭션의 전체 정의는 다음과 같습니다.

\ read random (1, 100000 * : 스케일)

이 스크립트를 사용하면 트랜잭션의 각 반복이 무작위로 선택된 다른 행을 참조 할 수 있습니다. (이 예제는 또한 각 클라이언트 세션이 자체 변수를 갖는 것이 중요한 이유를 보여줍니다. 그렇지 않으면 다른 행에 독립적으로 만지지 않을 것입니다.)

트랜잭션 당 로깅

with-l옵션 (그러나 없음-gregate-interval옵션),스포츠 토토각 트랜잭션에 대한 정보를 로그 파일에 작성합니다. 로그 파일의 이름이 지정됩니다prefix.NNN, 여기prefix기본값으로스포츠 토토_logNNN스포츠 토토프로세스. 를 사용하여 접두사를 변경할 수 있습니다.-로그-프리 픽스옵션. 인 경우-j옵션은 2 이상이므로 여러 작업자 스레드가 있으면 각각 자체 로그 파일이 있습니다. 첫 번째 작업자는 표준 단일 작업자 케이스에서와 동일한 로그 파일의 이름을 사용합니다.prefix.NNN.mmm, 여기mmm1로 시작하는 각 작업자의 순차적 번호입니다.

로그 파일의 각 줄은 하나의 트랜잭션을 설명합니다. 다음과 같은 공간 분리 된 필드가 포함되어 있습니다.

client_id

거래를 실행 한 클라이언트 세션을 식별

Transaction_No

해당 세션에서 얼마나 많은 트랜잭션을 운영했는지 계산

Time

트랜잭션의 경과 시간, 마이크로 초

script_no

트랜잭션에 사용 된 스크립트 파일을 식별합니다 (여러 스크립트가 지정된 경우 유용-f또는-B)

time_epoch

트랜잭션의 완료 시간, Unix-Epoch 타임 스탬프

time_us

트랜잭션 완료 시간의 분수 부분, 마이크로 초

schedule_lag

트랜잭션 시작 지연, 즉 트랜잭션의 예정된 시작 시간과 실제로 시작된 시간의 차이, 마이크로 초 (if).--rate지정 됨)

리트리

트랜잭션 중 직렬화 또는 교착 상태 오류 후 회수 카운트 (--- 막사1과 같지 않습니다)

둘 다--rateand-latency-limit사용됩니다.Time건너 뛰는 거래는로보고됩니다.건너 뛰기. 거래가 실패로 끝나면Time실패. 를 사용하는 경우-선원 분해옵션,Time실패한 거래 중SERIALIZATION또는교착 상태실패 유형에 따라 (참조실패 및 직렬화/교착 상태자세한 내용은).

여기 단일 클라이언트 실행에서 생성 된 로그 파일의 스 니펫이 있습니다 :

0 199 2241 0 1175850568 995598
0 200 2465 0 1175850568 998079
0 201 2513 0 1175850569 608
0 202 2038 0 1175850569 2663

다른 예제-레이트 = 100and-latency-limit = 5(추가 참고schedule_lag열) :

0 81 4621 0 1412881037 912698 3005

이 예에서는 트랜잭션 82가 늦었습니다. 대기 시간 (6.173ms)이 5ms 한도를 초과했기 때문입니다. 다음 두 거래는 시작되기 전 이미 늦었 기 때문에 건너 뜁니다.

다음 예제는 실패 및 재시험이있는 로그 파일의 스 니펫을 보여줍니다. 최대 트리 수는 10으로 설정됩니다 (추가리트리열) :

3 0 47423 0 1499414498 34501 3

-선원 분해옵션이 사용됩니다. 실패 유형이에보고됩니다.Time처럼 :

3 0 47423 0 1499414498 34501 3

많은 트랜잭션을 처리 할 수있는 하드웨어에서 긴 테스트를 실행할 때 로그 파일이 매우 커질 수 있습니다. 그만큼--샘플링-레이트옵션을 사용하여 임의의 거래 샘플 만 기록 할 수 있습니다.

집계 로깅

with-gregate-interval옵션, 로그 파일에 다른 형식이 사용됩니다. 각 로그 라인은 하나의 집계 간격을 설명합니다.

interval_start

Unix-Epoch 타임 스탬프로서 간격의 시작 시간

NUM_TRANSACTION

간격 내의 트랜잭션 수

sum_latency

거래 대기 시간의 합계

sum_latency_2

트랜잭션 대기 시간의 사각형

min_latency

최소 트랜잭션 대기 시간

max_latency

최대 트랜잭션 대기 시간

sum_lag

트랜잭션의 합계 지연 (제로가 아닌 한--rate지정 됨)

sum_lag_2

트랜잭션 제곱의 합계 지연 (0이 아닌 한 0--rate지정 됨)

min_lag

최소 트랜잭션 시작 지연 (제로가 아닌 경우--rate지정 됨)

max_lag

최대 트랜잭션 시작 지연 (제로가 아닌 경우--rate지정 됨)

건너 뛰기

너무 늦게 시작했기 때문에 건너 뛸 수있는 거래 수 (0--rateand-latency-limit지정)

retried

retried 거래 수 (제로가 아닌 한--- 막사1과 같지 않습니다)

리트리

직렬화 또는 교착 상태 오류 후 회수 수 (제로가 아닌 한--- 막사1과 같지 않습니다)

Serialization_Failures

직렬화 오류가 발생했지만 나중에 재조정되지 않은 트랜잭션 수 (제로-선원 분해지정 됨)

Deadlock_failures

교착 상태 오류가 발생했지만 나중에 재조정되지 않은 트랜잭션 수 (제로가 아닌 경우-선원 분해지정 됨)

다음은 다음 옵션으로 생성 된 출력이 있습니다 :

스포츠 토토 -aggregate-interval = 10-time = 20 --client = 10-log-rate = 1000-latency-limit = 10-퇴각-선정-max-tries = 10 test

1650260552 5178 26171317 177284491527 1136 44462 2647617 7321113867 0 9866 64 7564 28340 4148 0
1650260562 4808 25573984 220121792172 1171 62083 3037380 9666800914 0 9998 598 7392 26621 4527 0

일반 (집계되지 않은) 로그 형식은 각 트랜잭션에 어떤 스크립트가 사용되었는지를 보여 주지만 집계 된 형식은 그렇지 않습니다. 따라서 스크립트 별 데이터가 필요한 경우 직접 데이터를 집계해야합니다.

마당 보고서

with-r옵션,스포츠 토토각 명령문에 대해 다음 통계를 수집합니다.

  • 대기 시간- 각 문에 대한 경과 트랜잭션 시간.스포츠 토토성명서의 모든 성공적인 실행의 평균 값을보고합니다.

  • 이 진술의 실패 수. 보다실패 및 직렬화/교착 상태자세한 내용은

  • 이 명령문에서 직렬화 또는 교착 상태 오류 후 회수 수. 보다실패 및 직렬화/교착 상태자세한 내용은

보고서에는만의 레트리 통계가 표시됩니다.--- 막사옵션은 1과 같지 않습니다.

모든 값은 모든 클라이언트가 실행 한 각 명령문에 대해 계산되며 벤치 마크가 완료된 후에보고됩니다.

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

진공 시작 ... 끝.

직렬화 가능한 기본 트랜잭션 격리 레벨을 사용하여 기본 스크립트의 출력 예제 (pgoptions = '-c default_transaction_isolation = Serializable'Pgbench ...) :

진공 시작 ... 끝.

여러 스크립트 파일이 지정되면 각 스크립트 파일에 대해 모든 통계가 별도로보고됩니다.

진술 당 대기 시간 계산에 필요한 추가 타이밍 정보를 수집하면 약간의 오버 헤드가 추가됩니다. 이렇게하면 평균 실행 속도가 느려지고 계산 된 TPS가 낮아집니다.

실패 및 직렬화/교착 상태

실행시스포츠 토토, 세 가지 주요 유형의 오류가 있습니다.

  • 주 프로그램의 오류. 그들은 가장 진지하고 항상 즉시 종료됩니다스포츠 토토해당 오류 메시지와 함께. 여기에는 다음이 포함됩니다 :

    • 시작의 오류스포츠 토토(예 : 유효하지 않은 옵션 값);

    • 초기화 모드의 오류 (예 : 내장 스크립트에 대한 테이블을 만들기위한 쿼리가 실패);

    • 스레드를 시작하기 전 오류 (예 : 데이터베이스 서버에 연결할 수 없음, 메타 명령의 구문 오류, 스레드 생성 실패);

    • 내부스포츠 토토오류 (절대 발생하지 않아야하는 오류 ...).

  • 스레드가 클라이언트를 관리 할 때의 오류 (예 : 클라이언트가 데이터베이스 서버에 연결하기위한 데이터베이스 서버 / 소켓에 연결을 시작할 수 없습니다). 이 경우이 스레드의 모든 클라이언트는 다른 스레드가 계속 작동하는 동안 중지됩니다.--exit-on-abort지정되어 있으며이 경우 모든 스레드가 즉시 정지됩니다.

  • 직접 클라이언트 오류. 그들은 즉각적인 출구로 이어집니다스포츠 토토내부의 경우 해당 오류 메시지와 함께스포츠 토토오류 (절대 발생하지 않아야 할 것입니다 ...) 또는시기--exit-on-abort지정되어 있습니다. 그렇지 않으면 최악의 경우 다른 클라이언트가 실행을 계속하는 동안 실패한 클라이언트의 낙태로 이어집니다 (그러나 일부 클라이언트 오류는 고객의 낙태없이 처리되어 별도로보고됩니다 (아래 참조).스포츠 토토오류.

심각한 오류가 발생하면 고객의 실행이 중단됩니다. 예를 들어, 데이터베이스 서버와의 연결이 손실되거나 마지막 트랜잭션을 완료하지 않고 스크립트 끝에 도달했습니다.실제로 PGBENCH에서 수행되는 "트랜잭션"이란 무엇입니까?자세한 내용은). 직렬화 또는 교착 상태 오류가있는 거래는 롤백 후에 성공적으로 완료되거나 최대 트리 수에 도달 할 때까지 반복됩니다 (--- 막사옵션) / 최대 회수 시간 (-latency-limit옵션) / 벤치 마크의 끝 (-타임옵션). 마지막 시험 실행이 실패하면이 거래는 실패한 것으로보고되지만 클라이언트는 중단되지 않고 계속 작동합니다.

Note

지정하지 않고--- 막사옵션, 기본값 값이 1이기 때문에 직렬화 또는 교착 상태 오류 후 트랜잭션이 재조정되지 않습니다. 무제한 수의 시도 (를 사용하십시오.--- 막사 = 0) 및-latency-limit최대 시도 시간 만 제한하는 옵션. 당신은 또한를 사용할 수 있습니다.-타임무제한의 시도에서 벤치 마크 기간을 제한하는 옵션.

여러 트랜잭션이 포함 된 스크립트를 반복 할 때 조심하십시오 : 스크립트는 항상 완전히 재조정되므로 성공적인 트랜잭션을 여러 번 수행 할 수 있습니다..

쉘 명령으로 트랜잭션을 반복 할 때주의하십시오. SQL 명령의 결과와 달리 쉘 명령의 결과는의 변수 값을 제외하고는 롤백되지 않습니다.\ setshell명령.

성공적인 트랜잭션의 대기 시간에는 롤백 및 재 검색으로 트랜잭션 실행 전체 시간이 포함됩니다. 대기 시간은 성공적인 트랜잭션 및 명령에 대해서만 측정되지만 실패한 트랜잭션 또는 명령에 대해서는 측정됩니다.

주 보고서에는 실패한 트랜잭션 수가 포함되어 있습니다. 인 경우--- 막사옵션은 1과 같지 않으며, 메인 보고서에는 검색과 관련된 통계도 포함되어 있습니다. 스크립트 당 보고서는 이러한 모든 필드를 메인 보고서에서 상속합니다.--- 막사옵션은 1과 같지 않습니다.

기본 유형별 유형으로 실패를 그룹화하려면 메인 및 스크립트 당 보고서에서를 사용하십시오.-선원 분해옵션. 또한 모든 오류와 실패 (재 시도가없는 오류)를 유형별로 유형별로 구별하려는 경우 재 훈련을 초과 한 한계와 직렬화/교착 상태 실패에 대해 얼마나 많이 초과했는지를 포함하여 사용하십시오.-Versbose-Errors옵션.

테이블 액세스 방법

당신은를 지정할 수 있습니다PostgreSQL : 문서 : 17 : 61 장. 테이블 토토 사이트 순위 방법 인터페이스 정의PGBENCH 테이블의 경우. 환경 변수pgoptions명령 줄을 통해 PostgreSQL로 전달되는 데이터베이스 구성 옵션을 지정합니다 (참조섹션 19.1.4). 예를 들어, 스포츠 토토가 작성하는 테이블에 대한 가상의 기본 테이블 액세스 방법은Wuzza:로 지정할 수 있습니다.

pgoptions = '-c default_table_access_method = wuzza'

모범 사례

사용하기가 매우 쉽습니다스포츠 토토완전히 무의미한 숫자를 생산합니다. 다음은 유용한 결과를 얻는 데 도움이되는 몇 가지 지침입니다.

처음에는절대몇 초만 실행되는 테스트를 믿습니다. 사용-t또는-t평균 노이즈를 유지하기 위해 적어도 몇 분 이상 지속되는 옵션. 경우에 따라 재현 할 수있는 숫자를 얻는 데 몇 시간이 필요할 수 있습니다.

기본 TPC-B 유사 테스트 시나리오의 경우 초기화 척도 계수 (-s)는 최소한 테스트하려는 클라이언트의 가장 많은 수보다 커야합니다 (-c); 그렇지 않으면 당신은 대부분 업데이트 경합을 측정 할 것입니다.-s스포츠 토토_branches테이블, 그리고 모든 트랜잭션이 그 중 하나를 업데이트하려고합니다.-c초과 값-s의심 할 여지없이 다른 거래를 기다리는 많은 거래가 차단 될 것입니다.

기본 테스트 시나리오는 테이블이 초기화 된 이후의 시간에 매우 민감합니다. 테이블의 죽은 줄과 데드 스페이스의 축적이 결과를 변경합니다. 결과를 이해하려면 총 업데이트 수와 진공 청소기가 발생할 때를 추적해야합니다.

제한스포츠 토토많은 수의 클라이언트 세션을 테스트 할 때 그 자체가 병목 현상이 될 수 있습니다. 이것은 실행에 의해 완화 될 수 있습니다스포츠 토토데이터베이스 서버와 다른 컴퓨터의 경우 네트워크 대기 시간이 낮지는 않지만. 몇 가지를 실행하는 것이 유용 할 수도 있습니다스포츠 토토동시에 동일한 데이터베이스 서버에 대해 동시에 인스턴스를 동시에 인스턴스.

보안

신뢰할 수없는 사용자가 채택되지 않은 데이터베이스에 액세스 할 수있는 경우보안 스키마 사용 패턴, 실행하지 마십시오스포츠 토토해당 데이터베이스에서.스포츠 토토자격이없는 이름을 사용하고 검색 경로를 조작하지 않습니다.

정정 제출

문서에 맞지 않는 내용이 있으면 일치하지 않습니다.이 양식문서 문제를보고하려면