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

사설 토토

사설 토토 — 벤치마크 테스트 실행포스트그레SQL

시놉시스

사설 토토 -i [옵션...] [db이름]

사설 토토 [옵션...] [db이름]

설명

사설 토토벤치마크 테스트를 실행하기 위한 간단한 프로그램입니다.포스트그레SQL. 여러 개의 동시 데이터베이스 세션에서 동일한 일련의 SQL 명령을 계속해서 실행한 다음 평균 트랜잭션 속도(초당 트랜잭션)를 계산합니다. 기본적으로,사설 토토5개가 포함된 TPC-B를 느슨하게 기반으로 한 시나리오를 테스트합니다.선택, 업데이트삽입트랜잭션당 명령. 그러나 자체 트랜잭션 스크립트 파일을 작성하면 다른 사례를 쉽게 테스트할 수 있습니다.

일반적인 출력사설 토토다음과 같습니다:

트랜잭션 유형: <내장: TPC-B (일종의)
배율 인수: 10
쿼리 모드: 단순
클라이언트 수: 10
스레드 수: 1
클라이언트당 거래 수: 1000
실제로 처리된 트랜잭션 수: 10000/10000
tps = 85.184871(연결 설정 포함)
tps = 85.296346(연결 설정 제외)

처음 6줄은 가장 중요한 매개변수 설정 중 일부를 보고합니다. 다음 줄은 완료되고 의도된 트랜잭션 수를 보고합니다. 후자는 클라이언트 수와 클라이언트당 트랜잭션 수의 곱입니다. 실행이 완료되기 전에 실패하지 않는 한 이는 동일합니다. (에서)-티모드에서는 실제 트랜잭션 수만 인쇄됩니다.) 마지막 두 줄은 데이터베이스 세션 시작 시간을 계산하거나 계산하지 않고 계산된 초당 트랜잭션 수를 보고합니다.

기본 TPC-B와 유사한 트랜잭션 테스트에서는 사전에 특정 테이블을 설정해야 합니다.사설 토토다음과 함께 호출되어야 합니다-i(초기화) 옵션을 사용하면 이 테이블을 생성하고 채울 수 있습니다. (사용자 정의 스크립트를 테스트할 때는 이 단계가 필요하지 않지만 대신 테스트에 필요한 모든 설정을 수행해야 합니다.) 초기화는 다음과 같습니다.

사설 토토 -i [ 기타 옵션 ] db이름

어디에서DB이름은 테스트할 이미 생성된 데이터베이스의 이름입니다. (필요할 수도 있습니다.-h, -p및/또는-유데이터베이스 서버에 연결하는 방법을 지정하는 옵션.)

주의

사설 토토 -i테이블 4개 생성사설 토토_accounts, 사설 토토_branches, 사설 토토_history사설 토토_tellers, 해당 이름의 기존 테이블을 모두 삭제합니다. 이러한 이름을 가진 테이블이 있는 경우 다른 데이터베이스를 사용하도록 주의하세요!

기본값축척 계수of 1, 테이블에는 처음에 다음과 같은 행이 포함됩니다.

테이블 행 수
---------------------------------
사설 토토_branches 1
사설 토토_tellers 10
사설 토토_accounts 100000
사설 토토_history 0

다음을 사용하여 행 수를 늘릴 수 있습니다(대부분의 경우 아마도 그래야 합니다).-s(축척계수) 옵션.-F(fillfactor) 옵션도 이 시점에서 사용될 수 있습니다.

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

사설 토토 [ 옵션 ] db이름

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

옵션

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

초기화 옵션

사설 토토다음 명령줄 초기화 인수를 허용합니다:

DB이름

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

-i
--초기화

초기화 모드를 호출하는 데 필요합니다.

-나init_steps
--init-steps=init_steps

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

d(드롭)

기존 항목 삭제사설 토토테이블.

t(테이블 생성)

표준에서 사용하는 테이블 생성사설 토토시나리오, 즉사설 토토_accounts, 사설 토토_branches, 사설 토토_history사설 토토_tellers.

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

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

함께g(클라이언트 측 데이터 생성), 데이터는 다음에서 생성됩니다.사설 토토클라이언트를 거쳐 서버로 전송됩니다. 이는 다음을 통해 클라이언트/서버 대역폭을 광범위하게 사용합니다.복사. 사용g로그에 대한 데이터를 생성하는 동안 100,000행마다 하나의 메시지를 인쇄하도록 로깅합니다.사설 토토_accounts테이블.

함께G(서버측 데이터 생성), 작은 쿼리만 다음에서 전송됩니다.사설 토토클라이언트를 사용하면 실제로 서버에서 데이터가 생성됩니다. 이 변형에는 상당한 대역폭이 필요하지 않지만 서버가 더 많은 작업을 수행합니다. 사용G로깅으로 인해 데이터를 생성하는 동안 진행 메시지가 인쇄되지 않습니다.

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

v(진공)

호출진공표준 테이블에.

p(기본 키 생성)

표준 테이블에 기본 키 인덱스를 생성하십시오.

f(외부 키 생성)

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

-F 채우기 요소
--fillfactor=채우기 요소

생성사설 토토_accounts, 사설 토토_tellers그리고사설 토토_branches주어진 fillfactor가 있는 테이블입니다. 기본값은 100입니다.

-n
--진공 없음

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

-q
--조용함

로깅을 자동 모드로 전환하여 5초당 하나의 진행 메시지만 생성합니다. 기본 로깅은 100,000개 행마다 하나의 메시지를 인쇄하며, 이는 종종 초당 많은 줄을 출력합니다(특히 좋은 하드웨어에서).

이 설정은 다음과 같은 경우에는 효과가 없습니다.G다음에 지정됨-I.

-s scale_factor
--scale=scale_factor

축척 비율에 의해 생성된 행 수를 곱합니다. 예를 들어,-s 100다음에 10,000,000개의 행을 생성합니다사설 토토_accounts테이블. 기본값은 1입니다. 척도가 20,000 이상이면 계정 식별자(도움열)은 더 큰 정수()를 사용하도록 전환됩니다.bigint), 계정 식별자 범위를 보유할 수 있을 만큼 충분히 커집니다.

--외래 키

표준 테이블 사이에 외래 키 제약 조건을 생성합니다. (이 옵션은 다음을 추가합니다.f초기화 단계 시퀀스로 이동합니다(아직 없는 경우).)

--index-tablespace=index_tablespace

기본 테이블스페이스가 아닌 지정된 테이블스페이스에 인덱스를 생성합니다.

--파티션-방법=이름

파티션 생성사설 토토_accounts테이블 포함이름방법. 예상 값은 다음과 같습니다.범위또는해시. 이 옵션에는 다음이 필요합니다.--파티션은 0이 아닌 값으로 설정되어 있습니다. 지정하지 않으면 기본값은범위.

--파티션=NUM

파티션 생성사설 토토_accounts테이블 포함NUM확장된 계정 수에 대해 거의 동일한 크기의 파티션. 기본값은0, 분할이 없음을 의미합니다.

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

기본 테이블스페이스가 아닌 지정된 테이블스페이스에 테이블을 생성하십시오.

--기록되지 않은 테이블

모든 테이블을 영구 테이블이 아닌 기록되지 않은 테이블로 생성하십시오.

벤치마킹 옵션

사설 토토다음 명령줄 벤치마킹 인수를 허용합니다.

-b 스크립트 이름[@weight]
--내장=스크립트 이름[@weight]

지정된 내장 스크립트를 실행될 스크립트 목록에 추가하십시오. 사용 가능한 내장 스크립트는 다음과 같습니다.tpcb와 유사한, 간단한 업데이트그리고선택 전용. 내장 이름의 명확한 접두사가 허용됩니다. 특별한 이름으로목록, 내장 스크립트 목록을 표시하고 즉시 종료합니다.

선택적으로 뒤에 정수 가중치를 쓰세요@다른 스크립트와 비교하여 이 스크립트를 선택할 확률을 조정합니다. 기본 가중치는 1입니다. 자세한 내용은 아래를 참조하세요.

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

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

-C
--연결

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

-d
--디버그

디버깅 출력을 인쇄합니다.

-D varname=
--정의=varname=

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

-f 파일 이름[@weight]
--파일=파일 이름[@weight]

다음에서 읽은 트랜잭션 스크립트 추가파일 이름실행할 스크립트 목록에.

선택적으로 뒤에 정수 가중치를 쓰세요@다른 스크립트와 비교하여 이 스크립트를 선택할 확률을 조정합니다. 기본 가중치는 1입니다. (다음을 포함하는 스크립트 파일 이름을 사용하려면@문자, 모호함이 없도록 가중치를 추가합니다. 예를 들어filen@me@1.) 자세한 내용은 아래를 참조하세요.

-j 스레드
--작업=스레드

내부 작업자 스레드 수사설 토토. 다중 CPU 시스템에서는 둘 이상의 스레드를 사용하는 것이 도움이 될 수 있습니다. 클라이언트는 사용 가능한 스레드 간에 최대한 균등하게 분산됩니다. 기본값은 1입니다.

-l
--로그

각 거래에 대한 정보를 로그 파일에 기록합니다. 자세한 내용은 아래를 참조하세요.

-L 한계
--latency-limit=한계

다음 이상 지속되는 거래한계밀리초는 다음과 같이 별도로 계산되고 보고됩니다.늦음.

조절이 사용될 때 (--rate=...), 일정보다 더 지연되는 거래한계ms는 대기 시간 제한을 충족할 희망이 없으며 서버로 전혀 전송되지 않습니다. 다음과 같이 별도로 계산 및 보고됩니다.건너뛰었습니다.

-M 쿼리모드
--프로토콜=쿼리모드

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

  • 간단한: 간단한 쿼리 프로토콜을 사용합니다.

  • 확장: 확장 쿼리 프로토콜을 사용합니다.

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

그 안에서준비됨모드,사설 토토두 번째 쿼리 반복부터 구문 분석 결과를 재사용하므로사설 토토다른 모드보다 빠르게 실행됩니다.

기본값은 단순 쿼리 프로토콜입니다. (참조PostgreSQL : 문서 : 13 : 52 장. 프론트 엔드/백엔드 범퍼카 토토자세한 내용은.)

-n
--진공 없음

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

-N
--일부 업데이트 건너뛰기

내장된 단순 업데이트 스크립트를 실행합니다. 의 약어-b 단순 업데이트.

-P
--진행=

진행 보고서 표시 간격초. 보고서에는 실행 시작 이후의 시간, 마지막 보고 이후의 TPS, 마지막 보고 이후의 트랜잭션 대기 시간 평균 및 표준 편차가 포함됩니다. 제한 중(-R), 지연 시간은 실제 트랜잭션 시작 시간이 아닌 트랜잭션 예정 시작 시간을 기준으로 계산되므로 평균 일정 지연 시간도 포함됩니다.

-r
--보고 대기 시간

벤치마크가 완료된 후 각 명령의 평균 문당 대기 시간(클라이언트 관점에서 실행 시간)을 보고합니다. 자세한 내용은 아래를 참조하세요.

-R 비율
--rate=비율

가능한 한 빨리 실행하는 대신(기본값) 지정된 속도를 목표로 하는 트랜잭션을 실행합니다. 비율은 초당 트랜잭션 수로 제공됩니다. 목표 비율이 가능한 최대 비율보다 높으면 비율 제한은 결과에 영향을 미치지 않습니다.

비율은 푸아송 분포 일정 시간선을 따라 트랜잭션을 시작하여 목표로 삼습니다. 예상 시작 시간 일정은 이전 트랜잭션이 종료된 시점이 아닌 클라이언트가 처음 시작된 시점을 기준으로 앞으로 이동합니다. 이러한 접근 방식은 트랜잭션이 원래 예정된 종료 시간을 초과하면 나중에 트랜잭션이 다시 따라잡을 수 있음을 의미합니다.

조절이 활성화되면 실행 종료 시 보고된 트랜잭션 대기 시간은 예약된 시작 시간에서 계산되므로 각 트랜잭션이 이전 트랜잭션이 완료될 때까지 기다려야 했던 시간이 포함됩니다. 대기 시간을 일정 지연 시간이라고 하며 평균과 최대도 별도로 보고됩니다. 실제 트랜잭션 시작 시간에 대한 트랜잭션 지연 시간, 즉 데이터베이스에서 트랜잭션을 실행하는 데 소요된 시간은 보고된 지연 시간에서 일정 지연 시간을 빼서 계산할 수 있습니다.

만약--대기 시간 제한다음과 함께 사용됩니다.--rate, 지연 시간은 예약된 시작 시간을 기준으로 계산되므로 이전 트랜잭션이 종료될 때 이미 지연 시간 제한을 초과할 정도로 트랜잭션이 지연될 수 있습니다. 이러한 거래는 서버로 전송되지 않고 모두 건너뛰어 별도로 계산됩니다.

긴 일정 지연 시간은 시스템이 선택한 수의 클라이언트 및 스레드를 사용하여 지정된 속도로 트랜잭션을 처리할 수 없음을 나타냅니다. 평균 트랜잭션 실행 시간이 각 트랜잭션 사이의 예정된 간격보다 길면 각 연속 트랜잭션이 더 뒤쳐지고 테스트 실행이 길어질수록 일정 지연 시간이 계속 증가합니다. 그런 일이 발생하면 지정된 거래율을 줄여야 합니다.

-s scale_factor
--scale=scale_factor

지정된 배율 인수를 보고합니다.사설 토토의 출력입니다. 내장된 테스트에서는 이것이 필요하지 않습니다. 올바른 배율 인수는의 행 수를 계산하여 감지됩니다.사설 토토_branches테이블. 그러나 커스텀 벤치마크만 테스트하는 경우(-f옵션), 이 옵션을 사용하지 않으면 배율 인수가 1로 보고됩니다.

-S
--선택 전용

내장된 선택 전용 스크립트를 실행합니다. 의 약어-b 선택 전용.

-t 거래
--거래=거래

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

-T
--시간=

클라이언트당 고정된 트랜잭션 수 대신 이 시간 동안 테스트를 실행하십시오.-t그리고-T상호 배타적입니다.

-v
--진공-모두

테스트를 실행하기 전에 4개의 표준 테이블을 모두 진공화하십시오. 둘 다 없음-n아니요-v, 사설 토토청소할 것입니다사설 토토_tellers그리고사설 토토_branches테이블이 잘립니다.사설 토토_history.

--집계-간격=

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

--로그-접두사=접두사

다음에 의해 생성된 로그 파일의 파일 이름 접두어 설정--로그. 기본값은사설 토토_log.

--진행-타임스탬프

진행상황을 표시할 때(옵션)-P), 실행 시작 이후의 초 수 대신 타임스탬프(Unix epoch)를 사용합니다. 단위는 초 단위이며 점 뒤의 정밀도는 밀리초입니다. 이는 다양한 도구에서 생성된 로그를 비교하는 데 도움이 됩니다.

--무작위 시드=씨앗

무작위 생성기 시드를 설정합니다. 시스템 난수 생성기를 시드하여 각 스레드에 하나씩 일련의 초기 생성기 상태를 생성합니다. 값:씨앗아마도:시간(기본값, 시드는 현재 시간을 기준으로 함),랜드(강력한 무작위 소스 사용, 사용 가능한 것이 없으면 실패) 또는 부호 없는 십진 정수 값. 무작위 생성기는 사설 토토 스크립트에서 명시적으로 호출됩니다(무작위...함수) 또는 암시적으로(예: 옵션--rate트랜잭션을 예약하는 데 사용합니다). 명시적으로 설정하면 시드에 사용된 값이 터미널에 표시됩니다. 허용되는 모든 값씨앗환경 변수를 통해서도 제공될 수 있습니다사설 토토_RANDOM_SEED. 제공된 시드가 가능한 모든 용도에 영향을 미치도록 하려면 이 옵션을 먼저 넣거나 환경 변수를 사용하세요.

시드를 명시적으로 설정하면 a를 재현할 수 있습니다.사설 토토난수에 관한 한 정확하게 실행됩니다. 임의의 상태가 스레드별로 관리되므로 이는 정확히 동일함을 의미합니다.사설 토토스레드당 하나의 클라이언트가 있고 외부 또는 데이터 종속성이 없는 경우 동일한 호출을 위해 실행됩니다. 통계적 관점에서 실행을 정확하게 재현하는 것은 성능 변동성을 숨기거나 이전 실행과 동일한 페이지를 기록하는 등의 방식으로 성능을 과도하게 향상시킬 수 있기 때문에 좋지 않은 생각입니다. 그러나 오류가 발생하는 까다로운 사례를 다시 실행하는 등 디버깅에도 큰 도움이 될 수 있습니다. 현명하게 사용하세요.

--샘플링 속도=비율

로그에 데이터를 쓸 때 생성되는 로그 양을 줄이기 위해 사용되는 샘플링 속도입니다. 이 옵션을 지정하면 지정된 트랜잭션 부분만 기록됩니다. 1.0은 모든 거래가 기록된다는 의미이고, 0.05는 거래의 5%만 기록된다는 의미입니다.

로그 파일을 처리할 때 샘플링 속도를 고려해야 한다는 것을 기억하십시오. 예를 들어 TPS 값을 계산할 때 그에 따라 숫자를 곱해야 합니다. 예를 들어 샘플링 레이트가 0.01이면 실제 TPS의 1/100만 얻을 수 있습니다.

--쇼-스크립트=스크립트 이름

내장 스크립트의 실제 코드 표시스크립트 이름stderr에서 즉시 종료합니다.

공통 옵션

사설 토토또한 연결 매개변수에 대해 다음과 같은 일반적인 명령줄 인수를 허용합니다.

-h 호스트 이름
--호스트=호스트 이름

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

-p 포트
--포트=포트

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

-U 로그인
--사용자 이름=로그인

연결할 사용자 이름

-V
--버전

인쇄사설 토토버전 및 종료.

-?
--도움말

다음에 대한 도움말 보기사설 토토명령줄 인수 및 종료.

종료 상태

성공적인 실행은 상태 0으로 종료됩니다. 종료 상태 1은 잘못된 명령줄 옵션과 같은 정적 문제를 나타냅니다. 데이터베이스 오류나 스크립트 문제 등 실행 중 오류가 발생하면 종료 상태 2가 됩니다. 후자의 경우,사설 토토부분 결과를 인쇄합니다.

환경

PGDATABASE
PGHOST
PGPORT
PGUSER

기본 연결 매개변수.

이 유틸리티는 대부분의 다른 유틸리티와 같습니다.PostgreSQL유틸리티, 지원되는 환경 변수를 사용합니다libpq(참조PostgreSQL : 문서 : 13 : 33.14. 환경 토토 베이).

환경 변수PG_COLOR진단 메시지에 색상을 사용할지 여부를 지정합니다. 가능한 값은 다음과 같습니다.항상, 자동그리고절대로.

참고

이것이 무엇입니까거래실제 수행 날짜:사설 토토?

사설 토토지정된 목록에서 무작위로 선택된 테스트 스크립트를 실행합니다. 스크립트에는 다음으로 지정된 내장 스크립트가 포함될 수 있습니다.-b및 다음으로 지정된 사용자 제공 스크립트-f. 각 스크립트에는 뒤에 지정된 상대적 가중치가 부여될 수 있습니다.@선택 확률을 변경하기 위해. 기본 가중치는1. 가중치가 있는 스크립트0무시됩니다.

기본 내장 트랜잭션 스크립트(다음으로도 호출됨-b tpcb와 유사)는 무작위로 선택된 트랜잭션당 7개의 명령을 실행합니다.도움, tid, 입찰그리고델타. 이 시나리오는 TPC-B 벤치마크에서 영감을 얻었지만 실제로는 TPC-B가 아니므로 이름이 붙었습니다.

  1. 시작;

  2. 업데이트 사설 토토_accounts SET abalance = abalance + :delta WHERE 지원 = :aid;

  3. 사설 토토_accounts에서 abalance를 선택하세요. 여기서 help = :aid;

  4. 업데이트 사설 토토_tellers SET tbalance = tbalance + :delta WHERE tid = :tid;

  5. UPDATE 사설 토토_branches SET bbalance = bbalance + :delta WHERE bid = :bid;

  6. 사설 토토_history에 삽입(tid, bid,aid, delta, mtime) VALUES(:tid, :bid, :aid, :delta, CURRENT_TIMESTAMP);

  7. END;

다음을 선택하는 경우간단한 업데이트내장 (또한-N), 4단계와 5단계는 트랜잭션에 포함되지 않습니다. 이렇게 하면 해당 테이블에 대한 업데이트 경합이 방지되지만 테스트 사례가 TPC-B와 훨씬 덜 비슷해집니다.

다음을 선택하는 경우선택 전용내장 (또한-S), 오직선택발행되었습니다.

맞춤 스크립트

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

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

참고

이전포스트그레SQL9.6, 스크립트 파일의 SQL 명령은 줄바꿈으로 종료되었으므로 여러 줄에 걸쳐 계속될 수 없습니다. 이제 세미콜론은필수연속적인 SQL 명령을 분리합니다(단, SQL 명령 뒤에 메타 명령이 오면 필요하지 않습니다). 이전 버전과 새 버전 모두에서 작동하는 스크립트 파일을 생성해야 하는 경우사설 토토, 세미콜론으로 끝나는 한 줄에 각 SQL 명령을 작성해야 합니다.

스크립트 파일을 위한 간단한 변수 대체 기능이 있습니다. 변수 이름은 문자(라틴 문자가 아닌 문자 포함), 숫자, 밑줄로 구성되어야 하며 첫 번째 문자는 숫자가 아니어야 합니다. 변수는 명령줄로 설정할 수 있습니다.-D48353_48461-D명령줄 옵션에는 자동으로 사전 설정된 몇 가지 변수가 나열되어 있습니다.표 273. 다음을 사용하여 이러한 변수에 대해 지정된 값은-D자동 사전 설정보다 우선합니다. 일단 설정되면 다음을 작성하여 변수 값을 SQL 명령에 삽입할 수 있습니다.:변수이름. 둘 이상의 클라이언트 세션을 실행하는 경우 각 세션에는 고유한 변수 세트가 있습니다.사설 토토하나의 명령문에서 최대 255개의 변수 사용을 지원합니다.

표 273. 사설 토토 자동 변수

변수 설명
클라이언트_ID 클라이언트 세션을 식별하는 고유 번호(0부터 시작)
default_seed 기본적으로 해시 함수에 사용되는 시드
random_seed 무작위 생성기 시드(덮어쓰지 않는 한-D)
규모 현재 배율 인자

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

\gset [접두사] \aset [접두사]

이 명령은 종료 세미콜론(;).

\gset명령이 사용되는 경우 앞의 SQL 쿼리는 하나의 행을 반환할 것으로 예상되며, 그 열은 열 이름 뒤에 이름이 붙고 접두사가 붙은 변수에 저장됩니다.접두사제공된 경우.

\aset명령이 사용됨, 모든 결합된 SQL 쿼리(구분\;) 해당 열은 열 이름을 따서 명명된 변수에 저장되고 접두사는접두사제공된 경우. 쿼리가 행을 반환하지 않으면 할당이 수행되지 않으며 이를 감지하기 위해 변수의 존재 여부를 테스트할 수 있습니다. 쿼리가 두 개 이상의 행을 반환하는 경우 마지막 값이 유지됩니다.

다음 예는 첫 번째 쿼리의 최종 계정 잔액을 변수에 넣습니다.균형, 변수 채우기p_two그리고p_세세 번째 쿼리의 정수로. 두 번째 쿼리의 결과는 삭제됩니다. 마지막 두 개의 결합된 쿼리의 결과는 변수에 저장됩니다.4그리고다섯.

사설 토토_accounts 업데이트
  SET 불균형 = 불균형 + :delta
  어디에서 도움 = :aid
  반환 중 균형 \gset
-- 두 쿼리의 합성
1개 선택 \;
2를 2로, 3을 3으로 선택 \gset p_
4를 4로 선택하십시오 \; 5를 5로 선택하세요 \aset
\if 표현
\elif 표현
\else
\endif

이 명령 그룹은 다음과 유사하게 중첩 가능한 조건부 블록을 구현합니다.psql's\if 표현. 조건식은 다음과 동일합니다.\세트, 0이 아닌 값은 true로 해석됩니다.

\세트varname 표현

변수 설정varname에서 계산된 값으로표현. 표현식에는 다음이 포함될 수 있습니다.NULL상수, 부울 상수그리고거짓, 정수 상수(예:)5432, 다음과 같은 이중 상수3.14159, 변수에 대한 참조:변수 이름, 연산자일반적인 SQL 우선 순위 및 연관성을 사용하여함수 호출, SQL사례일반 조건식및 괄호.

함수 및 대부분의 연산자가 반환됨NULL켜짐NULL입력합니다.

조건부 목적의 경우 0이 아닌 숫자 값은, 숫자 값이 0이고NULL아르거짓.

너무 크거나 작은 정수 및 이중 상수와 정수 산술 연산자(+, -, *그리고/) 오버플로 시 오류가 발생합니다.

마지막이 없을 때ELSE절이 a에 제공됩니다.사례, 기본값은NULL.

예:

\set ntellers 10 * :scale
\ set 보조 (1021 * random(1, 100000 * :scale)) % \
           (100000 * :규모) + 1
\set divx CASE WHEN :x < 0 THEN :y/:x ELSE NULL END
\수면번호[ 우리 | ms | 초 ]

마이크로초 단위로 지정된 기간 동안 스크립트 실행을 휴면 상태로 만듭니다. (우리), 밀리초(ms) 또는 초(s). 단위를 생략하면 초가 기본값입니다.번호정수 상수이거나 a일 수 있습니다.:변수 이름정수 값을 갖는 변수에 대한 참조입니다.

예:

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

변수 설정varname셸 명령의 결과명령주어진 내용으로인수(들). 명령은 표준 출력을 통해 정수 값을 반환해야 합니다.

명령그리고 각각인수텍스트 상수이거나 a일 수 있습니다.:변수 이름변수에 대한 참조입니다. 을 사용하고 싶다면인수콜론으로 시작하고, 시작 부분에 추가 콜론을 쓰세요.인수.

예:

\setshell 변수_to_be_할당 명령 literal_argument :variable ::literal_starting_with_colon
\쉘명령 [ 인수 ... ]

다음과 동일\setshell, 그러나 명령 결과는 삭제됩니다.

예:

\쉘 명령 literal_argument :variable ::literal_starting_with_colon

내장 연산자

다음에 나열된 산술, 비트, 비교 및 논리 연산자표 274내장되어 있습니다사설 토토다음에 나타나는 표현에 사용될 수 있습니다.\세트. 연산자는 우선순위가 높아지는 순서로 나열됩니다. 명시된 경우를 제외하고 두 개의 숫자 입력을 사용하는 연산자는 입력 중 하나가 double이면 double 값을 생성하고, 그렇지 않으면 정수 결과를 생성합니다.

표 274. 사설 토토 운영자

운영자

설명

예제

부울 또는 부울부울

논리 OR

5 또는 0

부울 그리고 부울부울

논리적 AND

3과 0거짓

아님 부울부울

논리적 NOT

거짓이 아님

부울 IS [NOT] (NULL|TRUE|FALSE)부울

부울 값 테스트

1은 null입니다.거짓

ISNULL|NOTNULL부울

무효성 테스트

1 notnull

번호 = 번호부울

같음

5 = 4거짓

번호 < 번호부울

같지 않음

5 < 4

번호 != 번호부울

같지 않음

5 != 5거짓

번호 < 번호부울

미만

5 < 4거짓

번호 <= 번호부울

보다 작거나 같음

5 <= 4거짓

번호 번호부울

보다 큼

5 4

번호 = 번호부울

보다 크거나 같음

5 = 4

정수 | 정수정수

비트별 OR

1 | 23

정수 # 정수정수

비트 XOR

1 # 32

정수 & 정수정수

비트 AND

1 & 31

~ 정수정수

비트별 NOT

~ 1-2

정수 << 정수정수

비트 왼쪽으로 이동

1 << 24

정수 정수정수

비트 오른쪽으로 이동

8 22

번호 + 번호번호

추가

5 + 49

번호 - 번호번호

뺄셈

3 - 2.01.0

번호 * 번호번호

곱셈

5 * 420

번호 / 번호번호

나눗셈(두 입력이 모두 정수인 경우 결과를 0으로 자릅니다.)

5 / 31

정수 % 정수정수

모듈로(나머지)

3 % 21

- 번호번호

부정

- 2.0-2.0


내장 함수

다음에 나열된 기능표 275내장되어 있습니다사설 토토다음에 나타나는 표현에 사용될 수 있습니다.\세트.

표 275. 사설 토토 함수

기능

설명

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

절대값

복근(-17)17

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

인수를 인쇄합니다.stderr, 인수를 반환합니다.

디버그(5432.1)5432.1

더블 ( 번호 ) → 더블

더블 캐스팅합니다.

더블(5432)5432.0

특급 ( 번호 ) → 더블

지수(e주어진 힘으로 상승)

exp(1.0)2.718281828459045

최고 ( 번호 [, ... ] ) → 더블인수가 이중이면 else정수

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

가장 큰(5, 4, 3, 2)5

해시 ( [, 씨앗 ] ) → 정수

이것은 다음의 별칭입니다.hash_murmur2.

해시(10, 5432)-5817877081768721676

hash_fnv1a ( [, 씨앗 ] ) → 정수

컴퓨팅FNV-1a 해시.

hash_fnv1a(10, 5432)-7793829335365542153

hash_murmur2 ( [, 씨앗 ] ) → 정수

컴퓨팅MurmurHash2 해시.

hash_murmur2(10, 5432)-5817877081768721676

int ( 번호 ) → 정수

정수로 변환합니다.

정수(5.4 + 3.8)9

최소 ( 번호 [, ... ] ) → 더블인수가 이중이면 else정수

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

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

ln ( 번호 ) → 더블

자연로그

ln(2.718281828459045)1.0

모드 ( 정수, 정수 ) → 정수

모듈로(나머지)

모드(54, 32)22

파이 () → 더블

대략적인 값π

파이()3.14159265358979323846

( x, y ) → 더블

( x, y ) → 더블

x의 힘으로 키워졌습니다y

파우(2.0, 10)1024.0

무작위 ( lb, ub ) → 정수

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

무작위(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 분산 무작위 정수를 계산합니다.[lb, ub], 아래를 참조하세요.

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

sqrt ( 번호 ) → 더블

제곱근

sqrt(2.0)1.414213562


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

  • 지수 분포의 경우,매개변수빠르게 감소하는 지수 분포를 잘라서 분포를 제어합니다.매개변수, 경계 사이의 정수로 투영합니다. 정확히 말하자면,


    f(x) = exp(-매개변수 * (x--min) / (최대 -- 최소 + 1)) / (1 - exp(-매개변수))

    그러면 값i사이그리고최대포함은 확률로 추첨됩니다:f(i) - f(i + 1).

    직관적으로, 더 클수록매개변수, 더 자주 값이에 가까울수록액세스되며 빈도가 낮은 값은최대접속되었습니다. 0에 가까울수록매개변수는 액세스 분포가 더 평평할수록(더 균일합니다). 분포의 대략적인 근사치는 범위에서 가장 빈번한 1% 값이 다음과 같다는 것입니다., 그려졌습니다매개변수%의 시간입니다.매개변수값은 반드시 양수여야 합니다.

  • 가우스 분포의 경우 간격은 다음에서 잘린 표준 정규 분포(고전적인 종 모양의 가우스 곡선)에 매핑됩니다.-매개변수왼쪽 및+매개변수오른쪽. 간격 중간에 있는 값이 그려질 가능성이 더 높습니다. 정확히 말하면, 만약PHI(x)는 평균을 갖는 표준 정규 분포의 누적 분포 함수입니다.다음으로 정의됨(최대 + 최소) / 2.0, 와


    f(x) = PHI(2.0 * 매개변수 * (x--mu) / (최대 - 최소 + 1)) /
           (2.0 * PHI(매개변수) - 1)

    다음 값i사이그리고최대포함은 확률로 그려집니다:f(i + 0.5) - f(i - 0.5). 직관적으로, 더 클수록매개변수, 간격의 중간에 가까운 값이 더 자주 그려지고, 간격의 중간에 가까운 값이 덜 자주 그려집니다.그리고최대경계. 값의 약 67%가 중간에서 추출됩니다.1.0 / 매개변수, 친척이군요0.5 / 매개변수평균 근처, 95% 중간2.0 / 매개변수그건 친척이군요1.0 / 매개변수평균 근처; 예를 들어, 만약매개변수은 4.0이며, 값의 67%는 간격의 중간 부분(1.0 / 4.0)에서 가져옵니다(즉,3.0 / 8.05.0 / 8.0) 및 중간 절반에서 95%(2.0 / 4.088005_88075매개변수값은 2.0입니다.

  • random_zipfian제한된 Zipfian 분포를 생성합니다.매개변수은 분포가 얼마나 편향되었는지 정의합니다. 더 클수록매개변수, 간격의 시작 부분에 더 가까운 값이 더 자주 그려집니다. 분포는 범위가 1부터 시작한다고 가정할 때 추첨 확률의 비율이 됩니다.k그림과 비교k+1이다((k+1)/k)**매개변수. 예를 들어,random_zipfian(1, ..., 2.5)값을 생성합니다1정보(2/1)**2.5 = 5.66보다 더 자주2, 자체적으로 생성됨(3/2)**2.5 = 2.76보다 더 자주3등.

    사설 토토의 구현은 "Non-Uniform Random Variate Generation", Luc Devroye, p. 550-551, Springer 1986. 해당 알고리즘의 제한으로 인해매개변수값은 [1.001, 1000] 범위로 제한됩니다.

해시 함수해시, hash_murmur2그리고hash_fnv1a입력 값과 선택적 시드 매개변수를 허용합니다. 시드 값이 제공되지 않은 경우:default_seed사용되며 명령줄에서 설정하지 않는 한 무작위로 초기화됩니다.-D옵션. 해시 함수는 다음과 같은 임의 함수의 분포를 분산하는 데 사용될 수 있습니다.random_zipfian또는random_exponential. 예를 들어 다음 사설 토토 스크립트는 과도한 로드를 생성하는 계정이 거의 없는 소셜 미디어 및 블로그 플랫폼에 일반적으로 발생할 수 있는 실제 워크로드를 시뮬레이션합니다.

\set r random_zipfian(0, 100000000, 1.07)
\set k abs(hash(:r)) % 1000000

어떤 경우에는 서로 상관되지 않는 몇 가지 별개의 분포가 필요하며 이때 암시적 시드 매개변수가 유용합니다.

\set k1 abs(hash(:r, :default_seed + 123)) % 1000000
\set k2 abs(hash(:r, :default_seed + 321)) % 1000000

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

\set 보조 무작위(1, 100000 * :scale)
\입찰 무작위 설정(1, 1 * :scale)
\set tid 무작위(1, 10 * :scale)
\세트 델타 무작위(-5000, 5000)
시작;
업데이트 사설 토토_accounts SET abalance = abalance + :delta WHERE 보조 = :aid;
사설 토토_accounts에서 잔고 선택 WHEREaid = :aid;
업데이트 사설 토토_tellers SET tbalance = tbalance + :delta WHERE tid = :tid;
업데이트 사설 토토_branches SET bbalance = bbalance + :delta WHERE bid = :bid;
사설 토토_history에 삽입(tid, bid,aid, delta, mtime) VALUES(:tid, :bid, :aid, :delta, CURRENT_TIMESTAMP);
끝;

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

트랜잭션별 로깅

와 함께-l옵션(그러나 없음--집계-간격옵션),사설 토토각 트랜잭션에 대한 정보를 로그 파일에 기록합니다. 로그 파일의 이름은 다음과 같습니다.접두사.nnn, 여기서접두사기본값은사설 토토_lognnn는의 PID입니다.사설 토토프로세스. 접두사는를 사용하여 변경할 수 있습니다.--로그 접두사옵션. 만약-j옵션은 2 이상이므로 여러 작업자 스레드가 있고 각 스레드에는 자체 로그 파일이 있습니다. 첫 번째 작업자는 표준 단일 작업자의 경우와 동일한 로그 파일 이름을 사용합니다. 다른 작업자에 대한 추가 로그 파일의 이름은 다음과 같습니다.접두사.nnn., 여기서은 1로 시작하는 각 작업자의 일련 번호입니다.

로그 형식은 다음과 같습니다:

클라이언트_ID transaction_no 시간 script_no time_epoch time_us [ schedule_lag ]

어디에서클라이언트_ID트랜잭션을 실행한 클라이언트 세션을 나타냅니다.transaction_no해당 세션에서 실행된 트랜잭션 수를 계산합니다.시간마이크로초 단위의 총 경과된 트랜잭션 시간입니다.script_no사용된 스크립트 파일을 식별합니다(여러 스크립트가 지정된 경우 유용함-f또는-b) 및time_epoch/time_us은 Unix-epoch 타임스탬프와 트랜잭션이 완료된 시기를 보여주는 마이크로초 단위의 오프셋(소수 초로 ISO 8601 타임스탬프를 생성하는 데 적합)입니다.schedule_lag필드는 트랜잭션의 예약된 시작 시간과 실제로 시작된 시간 간의 차이(마이크로초)입니다. 이는 다음과 같은 경우에만 존재합니다.--rate옵션이 사용됩니다. 둘 다일 때--rate그리고--대기 시간 제한사용됩니다.시간건너뛴 거래의 경우 다음과 같이 보고됩니다.건너뛰었습니다.

다음은 단일 클라이언트 실행에서 생성된 로그 파일의 일부입니다:

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

또 다른 예--rate=100그리고--latency-limit=5(추가 사항 참고schedule_lag열):

0 81 4621 0 1412881037 912698 3005
0 82 6173 0 1412881037 914578 4304
0 83 건너뛰기 0 1412881037 914578 5217
0 83 건너뛰기 0 1412881037 914578 5099
0 83 4722 0 1412881037 916203 3108
0 84 4142 0 1412881037 918023 2333
0 85 2465 0 1412881037 919759 740

이 예에서 트랜잭션 82는 지연 시간(6.173ms)이 5ms 제한을 초과했기 때문에 지연되었습니다. 다음 두 트랜잭션은 시작하기도 전에 이미 늦었기 때문에 건너뛰었습니다.

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

집계된 로깅

와 함께--집계-간격옵션, 로그 파일에 다른 형식이 사용됩니다:

interval_start num_transactionssum_latency sum_latency_2 최소 지연 시간 max_latency​ [ sum_lag sum_lag_2 min_lag max_lag [ 건너뛰었습니다 ] ]

어디에서interval_start간격의 시작입니다(Unix epoch 타임스탬프로서).num_transactions은 간격 내의 트랜잭션 수입니다.sum_latency은 해당 간격 내의 트랜잭션 지연 시간의 합입니다.sum_latency_2은 해당 간격 내 트랜잭션 지연 시간의 제곱의 합입니다.최소 지연 시간은 간격 내 최소 지연 시간이며max_latency은 간격 내의 최대 대기 시간입니다. 다음 필드는,sum_lag, sum_lag_2, min_lagmax_lag는 다음과 같은 경우에만 존재합니다.--rate옵션이 사용됩니다. 각 트랜잭션이 이전 트랜잭션이 완료될 때까지 기다려야 했던 시간, 즉 각 트랜잭션의 예정된 시작 시간과 실제로 시작된 시간 간의 차이에 대한 통계를 제공합니다. 가장 마지막 필드인건너뛰었습니다은 다음과 같은 경우에만 존재합니다.--대기 시간 제한옵션도 사용됩니다. 너무 늦게 시작되었기 때문에 건너뛴 트랜잭션 수를 계산합니다. 각 트랜잭션은 커밋된 간격으로 계산됩니다.

다음은 몇 가지 출력 예입니다:

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

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

문별 지연 시간

와 함께-r옵션,사설 토토모든 클라이언트가 실행한 각 명령문의 경과된 트랜잭션 시간을 수집합니다. 그런 다음 벤치마크가 완료된 후 각 문의 지연 시간이라고 하는 해당 값의 평균을 보고합니다.

기본 스크립트의 경우 출력은 다음과 유사합니다:

진공 시작...끝.
거래 유형: <내장: TPC-B(일종의)
배율 인수: 1
쿼리 모드: 단순
클라이언트 수: 10
스레드 수: 1
클라이언트당 거래 수: 1000
실제로 처리된 트랜잭션 수: 10000/10000
평균 지연 시간 = 15.844ms
대기 시간 표준 편차 = 2.715ms
tps = 618.764555(연결 설정 포함)
tps = 622.977698(연결 설정 제외)
명령문 대기 시간(밀리초):
        0.002 \set 보조 무작위(1, 100000 * :scale)
        0.005 \set 입찰 무작위(1, 1 * :scale)
        0.002 \set tid 무작위(1, 10 * :scale)
        0.001 \set 델타 무작위(-5000, 5000)
        0.326 시작;
        0.603 업데이트 사설 토토_accounts SET abalance = abalance + :delta WHERE 보조 = :aid;
        0.454 사설 토토_accounts에서 잔액 선택 WHEREaid = :aid;
        5.528 업데이트 사설 토토_tellers SET tbalance = tbalance + :delta WHERE tid = :tid;
        7.335 업데이트 사설 토토_branches SET bbalance = bbalance + :delta WHERE bid = :bid;
        0.371 사설 토토_history에 삽입(tid, bid,aid, delta, mtime) VALUES(:tid, :bid, :aid, :delta, CURRENT_TIMESTAMP);
        1.212 종료;

여러 스크립트 파일이 지정된 경우 평균은 각 스크립트 파일에 대해 별도로 보고됩니다.

문별 대기 시간 계산에 필요한 추가 타이밍 정보를 수집하면 약간의 오버헤드가 추가된다는 점에 유의하세요. 이렇게 하면 평균 실행 속도가 느려지고 계산된 TPS가 낮아집니다. 속도 저하 정도는 플랫폼과 하드웨어에 따라 크게 다릅니다. 지연 시간 보고가 활성화된 상태와 활성화되지 않은 상태의 평균 TPS 값을 비교하는 것은 타이밍 오버헤드가 중요한지 측정하는 좋은 방법입니다.

우수 사례

사용이 매우 쉽습니다사설 토토완전히 의미 없는 숫자를 생성합니다. 다음은 유용한 결과를 얻는 데 도움이 되는 몇 가지 지침입니다.

먼저,절대로단 몇 초 동안만 실행되는 테스트를 믿으세요. 다음을 사용하세요.-t또는-T노이즈를 평균화하기 위해 실행이 최소 몇 분 동안 지속되도록 하는 옵션입니다. 어떤 경우에는 재현 가능한 수치를 얻으려면 몇 시간이 필요할 수도 있습니다. 테스트를 여러 번 시도하여 수치가 재현 가능한지 확인하는 것이 좋습니다.

기본 TPC-B와 유사한 테스트 시나리오의 경우 초기화 배율 인수(-s)은 최소한 테스트하려는 최대 클라이언트 수만큼 커야 합니다(-c); 그렇지 않으면 대부분 업데이트 경합을 측정하게 될 것입니다. 뿐입니다-s사설 토토_branches테이블이며, 모든 트랜잭션은 그 중 하나를 업데이트하려고 합니다. 따라서-c값 초과-s의심할 여지없이 많은 트랜잭션이 다른 트랜잭션을 기다리면서 차단될 것입니다.

기본 테스트 시나리오는 또한 테이블이 초기화된 후 얼마나 오랜 시간이 흘렀는지에 매우 민감합니다. 테이블에 데드 행과 데드 스페이스가 누적되면 결과가 변경됩니다. 결과를 이해하려면 총 업데이트 수와 데이터 정리가 발생하는 시기를 추적해야 합니다. autovacuum이 활성화되면 측정된 성능에 예측할 수 없는 변화가 발생할 수 있습니다.

제한사항사설 토토많은 수의 클라이언트 세션을 테스트하려고 할 때 자체적으로 병목 현상이 발생할 수 있다는 것입니다. 이는 다음을 실행하여 완화할 수 있습니다.사설 토토데이터베이스 서버와 다른 시스템에 있지만 네트워크 대기 시간이 짧아야 합니다. 여러 개를 실행하는 것이 유용할 수도 있습니다.사설 토토동일한 데이터베이스 서버에 대해 여러 클라이언트 시스템에서 동시에 인스턴스를 실행합니다.

보안

신뢰할 수 없는 사용자가 다음을 채택하지 않은 데이터베이스에 액세스할 수 있는 경우보안 스키마 사용 패턴, 실행하지 마세요사설 토토해당 데이터베이스에 있습니다.사설 토토규정되지 않은 이름을 사용하며 검색 경로를 조작하지 않습니다.

수정사항 제출

문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.