토토 커뮤니티 - 벤치 마크 테스트 실행PostgreSQL
토토 커뮤니티
-i
[옵션
...] [dbname
]
토토 커뮤니티
[옵션
...] [dbname
]
토토 커뮤니티| 벤치 마크 테스트를 실행하기위한 간단한 프로그램입니다PostgreSQL. 여러 동시 데이터베이스 세션에서 동일한 SQL 명령을 반복해서 실행 한 다음 평균 트랜잭션 속도 (초당 트랜잭션)를 계산합니다.토토 커뮤니티TPC-B를 기반으로 느슨한 시나리오를 테스트합니다.select
, 업데이트
및삽입
거래 당 명령. 그러나 자신의 트랜잭션 스크립트 파일을 작성하여 다른 사례를 쉽게 테스트 할 수 있습니다.
일반적인 출력토토 커뮤니티모양 :
트랜잭션 유형 : <내장 : TPC-B (정렬)>
처음 6 줄은 가장 중요한 매개 변수 설정 중 일부를보고합니다. 다음 줄은 완료되고 의도 된 거래 수를보고합니다 (후자는 클라이언트 수의 산물과 클라이언트 당 트랜잭션 수);-t
모드, 실제 트랜잭션 수만 인쇄됩니다.) 마지막 줄은 초당 트랜잭션 수를보고합니다.
기본 TPC-B 유사 트랜잭션 테스트에는 특정 테이블을 미리 설정해야합니다.토토 커뮤니티-i
(초기화) 옵션이 테이블을 작성하고 채우십시오. (사용자 지정 스크립트를 테스트 할 때는이 단계가 필요하지 않지만 대신 테스트 요구 사항을 설정해야합니다.) 초기화는 다음과 같습니다.
토토 커뮤니티 -i [기타 옵션
]dbname
여기서dbname
테스트 할 이미 제작 된 데이터베이스의 이름입니다. (필요할 수도 있습니다-h
, -p
및/또는-u
데이터베이스 서버에 연결하는 방법을 지정하는 옵션.)
토토 커뮤니티 -I
4 개의 테이블 생성토토 커뮤니티_accounts
, 토토 커뮤니티_branches
, 토토 커뮤니티_history
및토토 커뮤니티_tellers
,이 이름의 기존 테이블을 파괴합니다. 이 이름을 가진 테이블이있는 경우 다른 데이터베이스를 사용하도록 매우주의하십시오!
기본값에서“스케일 팩터”1의 1, 테이블에는 처음 에이 많은 행이 포함되어 있습니다.
행의 표 #
당신은를 토토 커뮤니티하여 행의 수를 늘릴 수 있습니다.-s
(스케일 팩터) 옵션. 그만큼-f
10971_11024
필요한 설정을 수행 한 후에는 포함되지 않은 명령으로 벤치 마크를 실행할 수 있습니다-i
, 즉
토토 커뮤니티 [옵션
]dbname
거의 모든 경우에 유용한 테스트를하려면 몇 가지 옵션이 필요합니다. 가장 중요한 옵션은입니다.-c
(클라이언트 수),-t
(거래 수),-t
(시간 제한) 및-f
(토토 커뮤니티자 정의 스크립트 파일 지정). 전체 목록은 아래를 참조하십시오.
다음은 세 개의 하위 섹션으로 나뉩니다. 데이터베이스 초기화 및 벤치 마크를 실행하는 동안 다양한 옵션이 사용되지만 일부 옵션은 두 경우 모두 유용합니다.
토토 커뮤니티다음 명령 줄 초기화 인수를 허용합니다 :
dbname
테스트 할 데이터베이스의 이름을 지정합니다. 이것이 지정되지 않은 경우 환경 변수pgdatabase
토토 커뮤니티됩니다. 설정되지 않은 경우 연결에 지정된 토토 커뮤니티자 이름이 토토 커뮤니티됩니다.
-i
-Initialize
초기화 모드를 호출해야합니다.
-iinit_steps
-Init-steps =init_steps
정상 초기화 단계의 선택된 세트 만 수행합니다.init_steps
단계 당 하나의 문자를 토토 커뮤니티하여 수행 할 초기화 단계를 지정합니다. 각 단계는 지정된 순서로 호출됩니다.DTGVP
. 토토 커뮤니티 가능한 단계는 다음과 같습니다.
d
(드롭)기존의 드롭토토 커뮤니티테이블.
t
(테이블 만들기)표준에서 토토 커뮤니티하는 테이블 만들기토토 커뮤니티시나리오, 즉토토 커뮤니티_accounts
, 토토 커뮤니티_branches
, 토토 커뮤니티_history
및토토 커뮤니티_tellers
.
g
또는G
(데이터 생성, 클라이언트 측 또는 서버 측)데이터를 생성하여 이미 존재하는 데이터를 대체하여 표준 테이블에로드합니다.
withg
(클라이언트 측 데이터 생성), 데이터가 생성됩니다토토 커뮤니티
클라이언트와 서버로 보냈습니다. 이것은 a를 통해 클라이언트/서버 대역폭을 광범위하게 토토 커뮤니티합니다.COPY
. 토토 커뮤니티g
로깅이 10 만 행마다 하나의 메시지를 인쇄하여토토 커뮤니티_accounts
테이블.
withG
(서버 측 데이터 생성),에서 작은 쿼리 만 전송됩니다.토토 커뮤니티
클라이언트와 데이터는 실제로 서버에서 생성됩니다. 이 변형에는 큰 대역폭이 필요하지 않지만 서버는 더 많은 작업을 수행합니다.G
데이터를 생성하는 동안 로깅이 진행 메시지를 인쇄하지 않도록합니다.
기본 초기화 동작은 클라이언트 측 데이터 생성을 토토 커뮤니티합니다 (g
).
v
(진공)Invoke진공
표준 테이블에서.
p
(기본 키 생성)표준 테이블에서 기본 키 인덱스 생성.
f
(외국 키 생성)표준 테이블 사이에 외래 키 제약 조건을 만듭니다. (이 단계는 기본적으로 수행되지 않습니다.)
-f
FillFactor
-fillfactor =
FillFactor
생성토토 커뮤니티_accounts
, 토토 커뮤니티_tellers
and토토 커뮤니티_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
, 파티셔닝이 없음을 의미합니다.
---babespace =테이블 스페이스
기본 테이블 스페이스 대신 지정된 테이블 스페이스에서 테이블을 만듭니다.
-unlogged-tables
영구 테이블이 아닌 모든 테이블을 사용하지 않은 테이블로 만듭니다.
토토 커뮤니티다음 명령 줄 벤치마킹 인수 :
-B
ScriptName [@weight]
-빌리 틴
=ScriptName [@weight]
실행할 스크립트 목록에 지정된 내장 스크립트를 추가합니다. 토토 커뮤니티 가능한 내장 스크립트는 다음과 같습니다.TPCB-like
, Simple-Update
andSelect-Only
. 내장 이름의 명백한 접두사가 허용됩니다.List
, 내장 스크립트 목록을 표시하고 즉시 종료하십시오.
선택적으로, 정수 무게를 작성하십시오@
이 스크립트와 다른 스크립트를 선택할 확률을 조정합니다. 기본 무게는 1입니다. 자세한 내용은 아래를 참조하십시오.
-c
고객
--client =
고객
시뮬레이션 된 클라이언트 수, 즉 동시 데이터베이스 세션 수. 기본값은 1입니다.
-c
-코닝
클라이언트 세션 당 한 번만 수행하지 않고 각 트랜잭션에 대한 새로운 연결을 설정하십시오. 연결 오버 헤드를 측정하는 데 유용합니다.
-d
-Debug
인쇄 디버깅 출력.
-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 = ...
), 일정보다 뒤쳐진 거래Limit
MS, 따라서 대기 시간 제한을 충족시키지 않으려는 것은 서버로 전혀 전송되지 않습니다. 그들은 별도로 계산되고보고됩니다.건너 뛰기.
-m
QueryMode
-프로토콜 =
QueryMode
서버에 쿼리를 제출하는 데 토토 커뮤니티할 프로토콜 :
단순
: 간단한 쿼리 프로토콜 토토 커뮤니티.
확장
: 확장 쿼리 프로토콜 사용.
준비
: 준비된 문과 함께 확장 쿼리 프로토콜 사용.
in준비
모드,토토 커뮤니티두 번째 쿼리 반복에서 시작하여 구문 분석 결과를 재토토 커뮤니티하므로토토 커뮤니티다른 모드보다 더 빨리 실행됩니다.
기본값은 간단한 쿼리 프로토콜입니다. (보다PostgreSQL : 문서 : 14 : 53 장. 프론트 엔드/백엔드 사설 토토자세한 내용은
-n
--- 노바 쿠움
테스트를 실행하기 전에 진공 청소기를 수행하지 마십시오. 이 옵션은필요한표준 테이블을 포함하지 않는 사용자 정의 테스트 시나리오를 실행중인 경우토토 커뮤니티_accounts
, 토토 커뮤니티_branches
, 토토 커뮤니티_history
및토토 커뮤니티_tellers
.
-n
--skip-some-updates
내장 단순 업데이트 스크립트를 실행합니다. 속기-B Simple-Update
.
-p
SEC
--progress =
SEC
모든 진행 보고서 표시SEC
초. 이 보고서에는 실행이 시작된 이후의 시간, 마지막 보고서 이후 TPS 및 마지막 보고서 이후 트랜잭션 대기 시간 평균 및 표준 편차가 포함됩니다.-r
), 대기 시간은 실제 트랜잭션 시작 시간이 아니라 거래 예약 된 시작 시간과 관련하여 계산되므로 평균 일정 지연 시간도 포함됩니다..
-r
-보고서
벤치 마크가 마무리 된 후 각 명령의 평균 상태 당 대기 시간 (클라이언트 관점에서 실행 시간)을보고합니다. 자세한 내용은 아래를 참조하십시오.
-r
rate
--rate =
rate
가능한 빨리 실행하는 대신 지정된 속도를 대상으로하는 트랜잭션을 실행합니다 (기본값). 요금은 초당 거래에서 제공됩니다.
요금은 Poisson Distributed Schedule Time Line을 따라 트랜잭션을 시작함으로써 타겟팅됩니다. 예상 시작 시간 일정은 이전 트랜잭션이 종료 된 시점이 아니라 클라이언트가 처음 시작된시기에 따라 진행됩니다.
스로틀링이 활성화되면 실행 종료시보고 된 트랜잭션 대기 시간은 예정된 시작 시간에서 계산되므로 각 트랜잭션이 이전 트랜잭션이 완료 될 때까지 기다려야 할 시간이 포함됩니다. 대기 시간은 일정 지연 시간이라고하며 평균 및 최대 값은 별도로보고됩니다.
if-latency-limit
와 함께 토토 커뮤니티됩니다--- 레이트
, 트랜잭션은 예정된 시작 시간에서 대기 시간이 계산되기 때문에 이전 트랜잭션이 종료 될 때 이미 대기 시간 제한을 초과 할 정도로 뒤쳐 질 수 있습니다. 이러한 거래는 서버로 전송되지 않지만 완전히 건너 뛰고 별도로 계산됩니다.
높은 일정 지연 시간은 시스템이 선택한 클라이언트 및 스레드 수와 함께 지정된 속도로 트랜잭션을 처리 할 수 없다는 표시입니다. 평균 트랜잭션 실행 시간이 각 트랜잭션 간의 예약 간격보다 길면, 각 연속 트랜잭션이 더 뒤쳐지고 일정 지연 시간이 계속 증가할수록 테스트 실행이 길어질 수 있습니다.
-s
scale_factor
-스케일 =
scale_factor
지정된 스케일 계수를보고토토 커뮤니티의 출력. 내장 테스트를 통해 이것은 필요하지 않습니다.토토 커뮤니티_branches
테이블. 그러나 사용자 정의 벤치 마크 만 테스트 할 때 (-f
옵션), 스케일 팩터는이 옵션을 사용하지 않는 한 1으로보고됩니다.
-s
-선택 전용
내장 선택 전용 스크립트를 실행합니다. 속기-B SELECT-ONLY
.
-t
거래
-트랜잭션 =
거래
각 클라이언트가 실행하는 트랜잭션 수입니다. 기본값은 10입니다.
-t
초
-타임 =
초
클라이언트 당 고정 된 수의 트랜잭션이 아닌 몇 초 동안 테스트를 실행하십시오.-t
and-t
상호 배타적입니다.
-v
-Vacuum-all
테스트를 실행하기 전에 4 개의 표준 테이블을 모두 진공하십시오. 둘 다-n
NOR-v
, 토토 커뮤니티진공 청소기토토 커뮤니티_tellers
and토토 커뮤니티_branches
테이블, 그리고 잘 릴 것이다토토 커뮤니티_history
.
-gregate-interVal =초
집계 간격 (초). 와 함께만 사용될 수 있습니다.-l
옵션. 이 옵션을 사용하면 로그에는 아래에 설명 된대로 간격 당 요약 데이터가 포함됩니다.
-로그-프리 픽스 =prefix
|-로그
. 기본값은토토 커뮤니티_log
.
-Progress-timestamp
진행 상황을 보여줄 때 (옵션-p
), 실행 시작 이후 몇 초 대신 타임 스탬프 (Unix epoch)를 토토 커뮤니티하십시오. 장치는 초 후 밀리 초 정밀도로 몇 초 안에 있습니다.
-랜덤 시드 =
씨앗
랜덤 생성기 시드를 설정합니다. 시드 시스템 랜덤 번호 생성기를 시드 다음 각 스레드마다 하나의 초기 생성기 상태를 생성합니다.씨앗
될 수 있습니다 :Time
(기본값, 씨앗은 현재 시간을 기준으로 함),rand
(사용할 수있는 경우 강력한 임의 소스를 사용하여 실패) 또는 서명되지 않은 소수 정수 값. 랜덤 생성기는 토토 커뮤니티 스크립트 (에서 명시 적으로 호출됩니다.무작위 ...
함수) 또는 암시 적으로 (예를 들어 옵션--- 레이트
이를 사용하여 거래를 예약). 명시 적으로 설정하면 파종에 사용되는 값이 터미널에 표시됩니다.씨앗
환경 변수를 통해 제공 될 수도 있습니다토토 커뮤니티_random_seed
. 제공된 종자가 가능한 모든 용도에 영향을 미치는지 확인하려면이 옵션을 먼저 배치하거나 환경 변수를 사용하십시오.
씨앗을 명시 적으로 재현 할 수 있습니다토토 커뮤니티
임의의 숫자에 관한 한 정확하게 실행됩니다. 랜덤 상태가 스레드마다 관리되므로 이는 정확히 동일 함을 의미합니다토토 커뮤니티
스레드 당 클라이언트가 하나 있고 외부 또는 데이터 종속성이없는 경우 동일한 호출을 실행하십시오. 통계적 관점에서 실행되는 통계적 관점에서 정확히 실행되는 것은 성능 변동성을 숨기거나 성능을 과도하게 향상시킬 수 있기 때문에 나쁜 아이디어입니다.
--샘플링-레이트 =rate
로그에 데이터를 작성할 때 사용하여 생성 된 로그의 양을 줄이기 위해 샘플링 속도. 이 옵션이 주어지면 지정된 트랜잭션 분율 만 기록됩니다.
로그 파일을 처리 할 때 샘플링 속도를 고려해야합니다. 예를 들어, TPS 값을 계산할 때 그에 따라 숫자를 곱해야합니다 (예 : 0.01 샘플 속도로 실제 TPS의 1/100 만 얻을 수 있음).
-쇼 스크립트 =
ScriptName
내장 스크립트의 실제 코드 표시ScriptName
Stderr에서 즉시 종료하십시오.
토토 커뮤니티연결 매개 변수에 대한 다음의 일반적인 명령 줄 인수를 수락합니다.
-h
hostname
-host =
hostname
데이터베이스 서버의 호스트 이름
-p
포트
-포트 =
포트
데이터베이스 서버의 포트 번호
-u
로그인
--username =
로그인
연결할 사용자 이름
-v
-버전
인쇄토토 커뮤니티버전 및 종료.
-?
-help
도움말 표시토토 커뮤니티명령 줄 인수 및 종료.
성공적인 실행은 상태 0으로 종료됩니다. 종료 상태 1은 잘못된 명령 줄 옵션과 같은 정적 문제를 나타냅니다. 데이터베이스 오류 또는 스크립트의 문제와 같은 실행 중 오류는 종료 상태 2입니다. 후자의 경우토토 커뮤니티부분 결과를 인쇄합니다.
pgdatabase
PGHOST
pgport
PGUSER
기본 연결 매개 변수.
이 유틸리티, 대부분의 다른 유틸리티PostgreSQL유틸리티, 지원하는 환경 변수를 사용합니다libpq(참조섹션 34.15).
환경 변수PG_COLOR
진단 메시지에서 색상 토토 커뮤니티 여부를 지정합니다. 가능한 값은항상
, auto
and절대
.
토토 커뮤니티지정된 목록에서 무작위로 선택한 테스트 스크립트를 실행합니다. 스크립트에는로 지정된 내장 스크립트가 포함될 수 있습니다.-B
및 지정된 토토 커뮤니티자 제공 스크립트-f
. 각 스크립트는 AN 후에 지정된 상대적인 무게가 주어질 수 있습니다@
선택 확률을 변경하기 위해. 기본 무게는입니다.1
. 무게의 스크립트0
무시됩니다.
기본 내장 트랜잭션 스크립트 (또한-B tpcb-like
33861_33921AID
, TID
, BID
and델타
. 이 시나리오는 TPC-B 벤치 마크에서 영감을 얻었지만 실제로는 TPC-B가 아니므로 이름입니다.
시작;
업데이트 PGBENCH_ACCOUNTS SET ABALANCE = ABALANCE + : DELTA AID = : AID;
PGBENCH_ACCOUTTS에서 ADACCOUTTS에서 ABALANCE를 선택하십시오 = : AID;
토토 커뮤니티_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)
끝;
선택하면Simple-Update
내장 (또한-n
), 4 단계와 5 단계는 트랜잭션에 포함되지 않습니다. 이것은이 테이블의 업데이트 경합을 피할 수 있지만 테스트 케이스는 TPC-B와 훨씬 덜 만듭니다..
선택하면Select-Only
내장 (또한-s
), 만select
발행.
토토 커뮤니티기본 트랜잭션 스크립트 (위에서 설명한)를 파일에서 읽은 트랜잭션 스크립트로 대체하여 사용자 정의 벤치 마크 시나리오 실행을 지원합니다 (-f
옵션). 이 경우 a“거래”스크립트 파일의 하나의 실행으로 계산됩니다.
스크립트 파일에는 세미콜론에 의해 종료 된 하나 이상의 SQL 명령이 포함되어 있습니다. 로 시작하는 빈 줄과 선--
무시됩니다. 스크립트 파일도 포함 할 수 있습니다“메타 명령”,토토 커뮤니티자체, 아래 설명대로.
전PostgreSQL9.6, 스크립트 파일의 SQL 명령은 NewLines에 의해 종료되었으므로 라인을 가로 질러 계속할 수 없었습니다. 이제 세미콜론은필수연속 SQL 명령을 분리하려면 (SQL 명령에 메타 명령이 뒤 따르는 경우 SQL 명령에 필요하지는 않지만). 이전 및 새 버전의에서 작동하는 스크립트 파일을 만들어야하는 경우토토 커뮤니티, 세미콜론으로 끝나는 단일 줄에 각 SQL 명령을 작성하십시오.
스크립트 파일에 대한 간단한 변수 와이블 시설 시설이 있습니다. 가변 이름은 문자 (라틴이 아닌 문자 포함), 숫자 및 밑줄로 구성되어 있어야하며, 첫 번째 문자는 숫자가 아닙니다.-d
옵션, 위에서 설명한 옵션 또는 아래 설명 된 메타 명령에 의해. 에 의해 사전 설정된 변수 외에-d
명령 줄 옵션에는 자동으로 사전 설정된 몇 가지 변수가 있습니다.표 282. 를 토토 커뮤니티하여 이러한 변수에 지정된 값-d
자동 사전 설정보다 우선합니다. 정해지면 변수의 값을 쓰면 SQL 명령에 삽입 할 수 있습니다:
variablename
. 둘 이상의 클라이언트 세션을 실행할 때 각 세션에는 자체 변수 세트가 있습니다.토토 커뮤니티한 명령문에서 최대 255 개의 가변 용도를 지원합니다.
35507_35555
변수 | 설명 |
---|---|
client_id |
고유 번호 클라이언트 세션 식별 (0부터 시작) |
default_seed |
기본적으로 해시 및 유사산 순열 기능에 토토 커뮤니티되는 종자 |
random_seed |
랜덤 생성기 시드 (random with with with with-d ) |
스케일 |
현재 스케일 팩터 |
스크립트 파일 메타 명령은 백 슬래시로 시작합니다 (\
) 일반적으로 백 슬래시 리턴을 작성하여 추가 라인을 계속 유지할 수 있지만 일반적으로 줄의 끝까지 확장됩니다. 메타 명령에 대한 인수는 공백으로 분리됩니다.
\ gset [prefix
]
\ aset [prefix
]
이 명령은 종료 세미콜론을 대신하여 SQL 쿼리를 종료하는 데 토토 커뮤니티될 수 있습니다 (;
).
언제\ gset
명령이 사용되며, 이전의 SQL 쿼리는 한 행을 반환 할 것으로 예상되며, 그 열은 열 이름의 이름을 따서 명명 된 변수로 저장되고.prefix
제공되는 경우.
언제\ aset
명령이 토토 커뮤니티됩니다. 모든 결합 된 SQL 쿼리 (\;
) 열이 열 이름의 이름을 따서 명명 된 변수에 저장되고에 저장되어 있습니다.prefix
제공되는 경우. 쿼리가 행을 반환하지 않으면 할당되지 않으며이를 감지하기 위해 변수를 테스트 할 수 있습니다.
\ gset
and\ aset
명령이 필요할 때까지 쿼리 결과를 아직 토토 커뮤니티할 수 없으므로 파이프 라인 모드에서 토토 커뮤니티할 수 없습니다.
다음 예제는 첫 번째 쿼리에서 변수로 최종 계정 잔액을 넣습니다Abalance
및 변수를 채 웁니다P_TWO
andP_THREE
세 번째 쿼리에서 정수가 있습니다. 두 번째 쿼리의 결과는 폐기됩니다.Four
and5
.
PGBENCH_ACCOUTTS 업데이트
\ if
표현
\ elif
표현
\ else
\ endif
이 명령 그룹은 중첩 가능한 조건부 블록을 구현합니다.PSQL
's\ if
표현
. 조건부 표현은와 동일합니다.\ set
, 0이 아닌 값이 참으로 해석됩니다.
\ setvarname
표현
변수 설정varname
에서 계산 된 값으로표현
. 표현은를 포함 할 수 있습니다.NULL
상수, 부울 상수true
and거짓
, 정수 상수와 같은5432
,와 같은 이중 상수3.14159
, 변수에 대한 참조:
variablename
, 연산자일반적인 SQL 우선 순위와 연관성이있는함수 호출, SQLCASE
일반적인 조건부 표현식및 괄호.
기능 및 대부분의 연산자 반환NULL
onNULL
입력.
조건부 목적의 경우, 제로가 아닌 숫자 값은true
, 제로 숫자 값 및NULL
are거짓
.
너무 크거나 작은 정수 및 이중 상수뿐만 아니라 정수 산술 연산자 (+
, -
, *
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 Command literal_argument : variable :: literal_starting_with_colon
\ startPipeline
\ endpipeline
이 명령은 SQL 문의 파이프 라인의 시작과 끝을 구분합니다. 파이프 라인 모드에서는 이전 문의 결과를 기다리지 않고 명세서가 서버로 전송됩니다.PostgreSQL : 문서 : 14 : 34.5. 파이프 토토 모드자세한 내용은. 파이프 라인 모드는 확장 쿼리 프로토콜을 사용해야합니다.
산술, 비트, 비교 및 논리 연산자에 나열된표 283내장토토 커뮤니티\ set
. 연산자는 선행 순서가 증가함에 따라 나열됩니다.
표 283. PGBENCH 연산자
운영자 설명 예제 |
---|
논리적 또는
|
논리 및
|
논리적이지 않음
|
부울 가치 테스트
|
Nullness Tests
|
Equal
|
동일하지 않음
|
동일하지 않음
|
보다 작음
|
보다 작거나
|
보다 큰
|
보다 크거나
|
Bitwise 또는
|
Bitwise XOR
|
Bitwise and
|
비트가 아닌
|
Bitwise Shift Left
|
Bitwise Shift Right
|
추가
|
Subtraction
|
곱셈
|
DIVISION (두 입력이 정수 인 경우 결과를 제로로 잘라냅니다)
|
모듈로 (나머지)
|
부정
|
표 284. PGBENCH 기능
기능 설명 예제 |
---|
절대 값
|
논증을 인쇄합니다Stderr, 인수를 반환합니다.
|
두 배로 캐스트.
|
지수 (
|
인수 중 가장 큰 값을 선택합니다.
|
이것은 별칭입니다
|
계산FNV-1A HASH.
|
|
정수로 캐스트.
|
인수 중에서 가장 작은 값을 선택합니다.
|
자연 로그
|
모듈로 (나머지)
|
순열 값
|
대략적인 값π
|
|
균일하게 분포 된 임의의 정수를 계산합니다
|
지수 적으로 분포 된 임의의 정수를 계산합니다
|
가우스 분포 무작위 정수를 계산합니다
|
Zipfian Distributed Random Integer in을 계산합니다.
|
제곱근
|
therandom
함수는 균일 분포를 사용하여 값을 생성합니다. 즉, 모든 값은 지정된 범위 내에서 동일한 확률로 그려집니다. 그만큼random_exponential
, random_gaussian
andrandom_zipfian
함수는 분포의 정확한 모양을 결정하는 추가 이중 매개 변수가 필요합니다.
지수 분포의 경우매개 변수
at에서 빠르게 폐지되는 지수 분포를 잘라서 분포를 제어합니다.매개 변수
, 그런 다음 경계 사이의 정수에 투사합니다. 정확하게
f (x) = exp (-parameter*(x-min)/(max-min+1))/(1-exp (-parameter))
valuei
사이Min
andMAX
포괄적 인 확률로 그려집니다 :f (i) -f (i + 1)
.
직관적으로, 더 클수록매개 변수
Min
액세스하고, 덜 자주 값이 가까이MAX
액세스합니다. 0에 가까워매개 변수
는 액세스 분포입니다. 분포의 조잡한 근사치는 범위에서 가장 빈번한 1% 값 (에 가깝다는 것입니다.Min
, 그려진다매개 변수
시간의%. 그만큼매개 변수
값은 엄격하게 긍정적이어야합니다.
가우스 분포의 경우, 간격이 표준 정규 분포 (고전적인 벨 모양의 가우스 곡선)에 매핑됩니다.-Parameter
왼쪽 및+매개 변수
오른쪽. 간격 중간의 값이 그려질 가능성이 높습니다.Phi (x)
표준 정규 분포의 누적 분포 함수는 평균입니다.mu
정의(max + min) / 2.0
with
f (x) = phi (2.0*매개 변수*(x- mu)/(max-min+1))/
(2.0*phi (매개 변수) -1)
valuei
사이Min
andMAX
포괄적 인 확률로 그려집니다 :F (i + 0.5) -F (i -0.5)
. 직관적으로, 더 클수록매개 변수
Min
andMAX
경계. 값의 약 67%가 중간에서 도출됩니다1.0 / 매개 변수
, 그것은 상대적입니다0.5 / 매개 변수
평균 주위, 중간에서 95%2.0 / 매개 변수
, 그것은 상대적입니다1.0 / 매개 변수
평균 주위; 예를 들어,매개 변수
는 4.0, 값의 67%가 간격 (즉,의 중간 분기 (1.0 / 4.0)에서 그려집니다.3.0 / 8.0
to5.0 / 8.0
) 중간 반에서 95% (2.0 / 4.0
) 간격 (두 번째 및 세 번째 사 분위수). 최소 허용매개 변수
값은 2.0입니다.
random_zipfian
경계 Zipfian 분포를 생성합니다.매개 변수
분포가 어떻게 왜곡되는지 정의합니다. 클수록매개 변수
분포는 범위가 1부터 시작한다고 가정하면 그리기 확률의 비율입니다.k
대 그리기k+1
is((
. 예를 들어,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]로 제한됩니다.
행을 불균일하게 선택하는 벤치 마크를 설계 할 때 선택한 행이 시퀀스의 ID 또는 물리적 행 순서와 같은 다른 데이터와 상관 관계가있을 수 있으며, 이는 성능 측정을 왜곡시킬 수 있습니다..
이를 피하려면를 토토 커뮤니티하고 싶을 수도 있습니다.Permute
선택한 행을 셔플하고 그러한 상관 관계를 제거하기 위해 기능 또는 유사한 효과가있는 다른 추가 단계.
해시 함수Hash
, hash_murmur2
andhash_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 10000000
이후Hash
충돌을 생성하고, 일부 값은 도달 할 수없고 다른 값은 원래 분포에서 예상보다 더 빈번합니다.
예를 들어, 내장 TPC-B와 유사한 트랜잭션의 전체 정의는 다음과 같습니다.
\ aid random (1, 100000 * : 스케일)
이 스크립트는 트랜잭션의 각 반복이 다른 무작위로 선택된 행을 참조 할 수 있도록합니다. (이 예제는 또한 각 클라이언트 세션이 자체 변수를 갖는 것이 중요한 이유를 보여줍니다. 그렇지 않으면 다른 행에 독립적으로 만지지 않을 것입니다.)
with-l
옵션 (그러나-gregate-interval
옵션),토토 커뮤니티각 트랜잭션에 대한 정보를 로그 파일에 작성합니다. 로그 파일의 이름이 지정됩니다
, 여기서prefix
.NNN
prefix
기본값으로토토 커뮤니티_log
및NNN
토토 커뮤니티프로세스. 를 토토 커뮤니티하여 접두사를 변경할 수 있습니다.-로그-프리 픽스
옵션. 인 경우-j
옵션은 2 이상이므로 여러 작업자 스레드가 있으면 각각 자체 로그 파일이 있습니다. 첫 번째 작업자는 표준 단일 작업자 케이스에서와 동일한 로그 파일의 이름을 사용합니다.
, 여기서prefix
.NNN
.mmm
mmm
1로 시작하는 각 작업자의 순차적 번호입니다.
로그의 형식은 다음과 같습니다.
client_id
Transaction_No
Time
script_no
time_epoch
time_us
[schedule_lag
]
여기서client_id
트랜잭션을 실행 한 클라이언트 세션을 나타냅니다.Transaction_No
해당 세션에서 얼마나 많은 트랜잭션을 운영했는지 계산합니다.Time
총 마이크로 초의 총 경과 트랜잭션 시간입니다.script_no
토토 커뮤니티 된 스크립트 파일을 식별합니다 (여러 스크립트가 지정된 경우 유용-f
또는-B
) 및time_epoch
/time_us
는 트랜잭션이 완료된 시점을 보여주는 표시를 보여주는 UNIX-EPOCH 타임 스탬프 및 마이크로 초의 오프셋입니다 (분수 초가있는 ISO 8601 타임 스탬프를 생성하는 데 적합). 그만큼schedule_lag
필드는 트랜잭션의 예정된 시작 시간과 실제로 시작된 시간의 차이입니다. 만있을 때만--- 레이트
옵션이 토토 커뮤니티됩니다. 둘 다--- 레이트
and-latency-limit
토토 커뮤니티됩니다.Time
건너 뛰는 거래는로보고됩니다.건너 뛰기
.
여기 단일 클라이언트 실행에서 생성 된 로그 파일의 스 니펫이 있습니다 :
0 199 2241 0 1175850568 995598 0 200 2465 0 1175850568 998079 0 201 2513 0 1175850569 608 0 202 2038 0 1175850569 2663
다른 예제-레이트 = 100
and-latency-limit = 5
(추가 참고schedule_lag
열) :
0 81 4621 0 1412881037 912698 3005
이 예에서는 트랜잭션 (6.173ms)이 5ms 한도를 초과했기 때문에 트랜잭션 82가 늦었습니다. 다음 두 거래는 시작되기 전 이미 늦었 기 때문에 건너 뜁니다.
많은 트랜잭션을 처리 할 수있는 하드웨어에서 긴 테스트를 실행하면 로그 파일이 매우 커질 수 있습니다. 그만큼--샘플링-레이트
옵션을 사용하여 임의의 거래 샘플 만 기록 할 수 있습니다.
with-gregate-interval
옵션, 로그 파일에는 다른 형식이 토토 커뮤니티됩니다.
Interval_Start
NUM_TRANSACTION
sum_latency
sum_latency_2
min_latency
max_latency
[sum_lag
sum_lag_2
min_lag
max_lag
[건너 뛰기
] ]
여기서Interval_Start
간격의 시작입니다 (Unix Epoch 타임 스탬프로),NUM_TRANSACTION
간격 내의 트랜잭션 수입니다.sum_latency
간격 내의 트랜잭션 대기 시간의 합은입니다.sum_latency_2
간격 내에서 트랜잭션 대기 시간의 제곱의 합은min_latency
간격 내에서 최소 대기 시간이며max_latency
는 간격 내에서 최대 대기 시간입니다. 다음 필드,sum_lag
, sum_lag_2
, min_lag
및max_lag
|--- 레이트
옵션이 토토 커뮤니티됩니다. 각 거래가 이전 거래가 완료 될 때까지 기다려야 할 시간, 즉 각 트랜잭션의 예정된 시작 시간과 실제로 시작된 시간의 차이에 대한 통계를 제공합니다.건너 뛰기
-latency-limit
옵션도 토토 커뮤니티됩니다. 너무 늦게 시작했기 때문에 건너 뛰는 거래 수를 계산합니다.
여기 예제 출력이 있습니다 :
1345828501 5601 1542744 483552416 61 2573 1345828503 7884 1979812 565806736 60 1479 1345828505 7208 1979422 567277552 59 1391 1345828507 7685 1980268 569784714 60 1398 1345828509 7073 1979779 573489941 236 1411
일반 (집계되지 않은) 로그 파일은 각 트랜잭션에 어떤 스크립트가 사용되었는지 표시하지만 집계 된 로그는 그렇지 않습니다. 따라서 스크립트 별 데이터가 필요한 경우 직접 데이터를 집계해야합니다.
with-r
옵션,토토 커뮤니티모든 고객이 실행 한 각 문의 경과 트랜잭션 시간을 수집합니다. 그런 다음 벤치 마크가 완료된 후 각 문의 대기 시간이라고하는 평균 해당 값을보고합니다.
기본 스크립트의 경우 출력이 다음과 비슷해 보입니다.
진공 시작 ... 끝.
여러 스크립트 파일이 지정되면 각 스크립트 파일에 대해 평균이 별도로보고됩니다.
진술 당 대기 시간 계산에 필요한 추가 타이밍 정보를 수집하면 약간의 오버 헤드가 추가됩니다. 이렇게하면 평균 실행 속도가 느려지고 계산 된 TPS가 낮아집니다.
토토 커뮤니티하기가 매우 쉽습니다토토 커뮤니티완전히 무의미한 숫자를 생산합니다. 다음은 유용한 결과를 얻는 데 도움이되는 몇 가지 지침입니다.
처음에는절대몇 초만 실행되는 테스트를 믿습니다. 토토 커뮤니티-t
또는-t
평균 소음을 얻기 위해 적어도 몇 분 이상 지속되는 옵션. 경우에 따라 재현 할 수있는 숫자를 얻는 데 몇 시간이 필요할 수 있습니다.
기본 TPC-B 유사 테스트 시나리오의 경우 초기화 척도 계수 (-s
)는 테스트하려는 클라이언트의 가장 많은 수보다 더 커야합니다 (-c
); 그렇지 않으면 당신은 대부분 업데이트 경합을 측정 할 것입니다.-s
토토 커뮤니티_branches
테이블, 그리고 모든 트랜잭션이 그 중 하나를 업데이트하고 싶어하므로-c
초과 값-s
의심 할 여지없이 다른 거래를 기다리는 많은 거래가 차단 될 것입니다.
기본 테스트 시나리오는 테이블이 초기화 된 이후의 시간에 매우 민감합니다. 테이블의 죽은 줄과 데드 스페이스의 축적이 결과를 변경합니다. 결과를 이해하려면 총 업데이트 수와 진공 청소기가 발생할 때를 추적해야합니다.
의 제한토토 커뮤니티많은 수의 클라이언트 세션을 테스트 할 때 그 자체가 병목 현상이 될 수 있습니다. 이것은 실행에 의해 완화 될 수 있습니다토토 커뮤니티데이터베이스 서버와 다른 컴퓨터의 경우 네트워크 대기 시간이 낮지는 않지만. 몇 가지를 실행하는 것이 유용 할 수도 있습니다토토 커뮤니티동일한 데이터베이스 서버에 대해 여러 클라이언트 시스템에서 동시에 인스턴스.
신뢰할 수없는 토토 커뮤니티자가 채택되지 않은 데이터베이스에 액세스 할 수있는 경우보안 스키마 사용 패턴, 실행하지 마십시오토토 커뮤니티해당 데이터베이스에서.토토 커뮤니티자격이없는 이름을 사용하고 검색 경로를 조작하지 않습니다.
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다.이 양식문서 문제를보고하려면