>136_word_end< — 벤치마크 테스트 실행>158_word_end<
>136_word_end< >167_word_end< [>169_word_end<>170_word_end<>171_word_end<]
>136_word_end< [>169_word_end<>170_word_end<>171_word_end<]
>136_word_end<>189_word_end<>158_word_end<. 여러 개의 동시 데이터베이스 세션에서 동일한 일련의 SQL 명령을 계속해서 실행한 >148_word_end< 평균 트랜잭션 속도(초당 트랜잭션)를 계산합니다. 기본적으로,>136_word_end<>193_word_end<>194_word_end<, >196_word_end<및>198_word_end<>199_word_end<
>201_word_end<>136_word_end<>148_word_end<과 같습니다:
>205_word_end<
처음 6줄은 가장 중요한 매개변수 설정 중 일부를 보고합니다. >148_word_end< 줄은 완료되고 의도된 트랜잭션 수를 보고합니다. 후자는 클라이언트 수와 클라이언트당 트랜잭션 수의 곱입니다. 실행이 완료되기 전에 실패하지 않는 한 이는 동일합니다. (안에>208_word_end<>209_word_end<
>211_word_end<>136_word_end<>148_word_end<과 >361_word_end< >390_word_end<되어야 합니다>167_word_end<(초기화) >169_word_end<을 사용하면 이 테이블을 >419_word_end<하고 채울 수 있습니다. (사용자 정의 스크립트를 테스트할 때는 이 단계가 필요하지 않지만 대신 테스트에 필요한 모든 설정을 수행해야 합니다>436_word_end< 초기화는 >148_word_end<과 같습니다.
>136_word_end< >167_word_end< [기타 >169_word_end<]>171_word_end<
>224_word_end<>225_word_end<>226_word_end<>227_word_end<, >229_word_end<>230_word_end<>231_word_end<데이터베이스 서버에 연결하는 방법을 지정하는 >169_word_end<>436_word_end<
>136_word_end< >167_word_end<>238_word_end<>136_word_end<_accounts, >136_word_end<_branches, >136_word_end<_history및>136_word_end<_tellers, 해당 >486_word_end<의 기존 테이블을 모두 삭제합니다. 이러한 >486_word_end<을 가진 테이블이 있는 경우 다른 데이터베이스를 사용하도록 >235_word_end<하세요!
>249_word_end<“>251_word_end<”of 1, 테이블에는 처음에 >148_word_end<과 같은 행이 포함되어 있습니다.
테이블 행 수 --------------------------------- >136_word_end<_branches 1 >136_word_end<_tellers 10 >136_word_end<_accounts 100000 >136_word_end<_history 0
>148_word_end<을 사용하여 행 수를 늘릴 수 있습니다(대부분의 경우 아마도 그래야 합니다>383_word_end<>258_word_end<(축척계수) >169_word_end<. 그만큼>260_word_end<(fillfactor) >169_word_end<도 이 시점에서 사용될 수 있습니다.
필요한 설정을 완료한 후에는 >148_word_end<을 포함하지 않는 명령으로 벤치마크를 실행할 수 있습니다.>167_word_end<>265_word_end<
>136_word_end< [>169_word_end<]>171_word_end<
거의 모든 경우에 유용한 테스트를 수행하려면 몇 가지 >169_word_end<이 필요합니다. 가장 중요한 >169_word_end<은 >148_word_end<과 같습니다.>275_word_end<>276_word_end<>277_word_end<>278_word_end<>208_word_end<>280_word_end<>281_word_end<>282_word_end<
>148_word_end<은 세 개의 하위 섹션으로 구분됩니다. 데이터베이스 초기화 및 벤치마크 실행 중에는 다양한 >169_word_end<이 사용되지만 일부 >169_word_end<은 두 경우 모두에 유용합니다.
>136_word_end<>148_word_end< 명령줄 초기화 인수를 허용합니다:
>171_word_end<>301_word_end<>302_word_end<>303_word_end<
>167_word_end<>307_word_end<>310_word_end<
>313_word_end<>314_word_end<->167_word_end258_word_end>314_word_end< 일반 초기화 단계 중 >194_word_end<된 세트만 수행합니다.>314_word_end<단계당 하나의 문자를 사용하여 수행할 초기화 단계를 지정합니다. 각 단계는 지정된 순서로 >390_word_end<됩니다. >249_word_end<은>322_word_end<>367_word_end< 가능한 단계는 >148_word_end<과 같습니다.
d>328_word_end<>331_word_end<>136_word_end<>333_word_end<
t>337_word_end<>340_word_end<>136_word_end<>342_word_end<>136_word_end<_accounts, >136_word_end<_branches, >136_word_end<_history및>136_word_end<_tellers.
g>354_word_end<G(데이터 >419_word_end<, 클라이언트측 >354_word_end< 서버측)>359_word_end<
>361_word_end<g(클라이언트 측 데이터 >419_word_end<), 데이터는 >148_word_end<에서 >419_word_end<됩니다.>136_word_end<클라이언트를 거쳐 서버로 전송됩니다. 이는 >148_word_end<을 통해 클라이언트/서버 대역폭을 광>494_word_end<하게 사용합니다.>366_word_end<>367_word_end<g>369_word_end<>136_word_end<_accounts>333_word_end<
>361_word_end<G(서버측 데이터 >419_word_end<), 작은 쿼리만 >148_word_end<에서 전송됩니다.>136_word_end<클라이언트를 사용하면 실제로 서버에서 데이터가 >419_word_end<됩니다. 이 변형에는 상당한 대역폭이 필요하지 않지만 서버가 더 많은 작업을 수행합니다>367_word_end<G>379_word_end<
>381_word_end<g>383_word_end<
v>387_word_end<>390_word_end<>391_word_end<>392_word_end<
p>396_word_end<>399_word_end<
f>403_word_end<>406_word_end<
>260_word_end< >414_word_end<->281_word_end>414_word_end<>419_word_end<>136_word_end<_accounts, >136_word_end<_tellers>423_word_end<>136_word_end<_branches주어진 fillfactor가 있는 >333_word_end< >249_word_end<은 100입니다.
>428_word_end<-->391_word_end< 없음초기화 중에는 >391_word_end<청소를 수행하지 마십시오. (이 >169_word_end<은 >148_word_end<을 억제합니다.v>434_word_end<>313_word_end<>436_word_end<
>439_word_end<>440_word_end<로깅을 자동 모드로 전환하여 5초당 하나의 진행 메시지만 >419_word_end<합니다. 기본 로깅은 100,000개 행마다 하나의 메시지를 인쇄하며, 이는 종종 초당 많은 줄을 출력합니다(특히 좋은 하드웨어에서>383_word_end<
이 설정은 >148_word_end<과 같은 경우에는 효과가 없습니다.G>148_word_end<에 지정됨>448_word_end<.
>258_word_end< >454_word_end<->258_word_end>454_word_end<축척 비율에 의해 >419_word_end<된 행 수를 곱합니다. 예를 들어,>258_word_end< 100>148_word_end<에 10,000,000개의 행을 >419_word_end<합니다>136_word_end<_accounts>333_word_end< >249_word_end<은 1입니다. 척도가 20,000 이상이면 계정 식별자(>464_word_end<>465_word_end<>466_word_end<>467_word_end<
>470_word_end<표준 테이블 사이에 외래 키 제약 조건을 >419_word_end<합니다. (이 >169_word_end<은 >148_word_end<을 추가합니다.f초기화 단계 시퀀스로 이동합니다(아직 없는 경우>383_word_end<)
->167_word_end277_word_end>479_word_end< 기본 테이블스페이스가 아닌 지정된 테이블스페이스에 인덱스를 >419_word_end<하십시오.
>485_word_end<>486_word_end<파티션 >419_word_end<>136_word_end<_accounts>491_word_end<>486_word_end<방법. 예상 값은 >148_word_end<과 같습니다.>494_word_end<or해시. 이 >169_word_end<에는 >148_word_end<이 필요합니다.--파티션은 0이 아닌 값으로 설정되었습니다. 지정하지 않으면 >249_word_end<은>494_word_end<.
--파티션=NUM파티션 >419_word_end<>136_word_end<_accounts>491_word_end<NUM확장된 계정 수에 대해 거의 동일한 크기의 파티션. >249_word_end<은0, 분할이 없음을 의미합니다.
--테이블스페이스=테이블스페이스기본 테이블스페이스가 아닌 지정된 테이블스페이스에 테이블을 >419_word_end<하십시오.
--기록되지 않은 테이블모든 테이블을 영구 테이블이 아닌 기록되지 않은 테이블로 >419_word_end<하십시오.
>136_word_end<>148_word_end< 명령줄 벤치마킹 인수를 허용합니다.
-b 스크립트 >486_word_end<[@weight]--내장=스크립트 >486_word_end<[@weight]지정된 내장 스크립트를 실행될 스크립트 목록에 추가하십시오>367_word_end< 가능한 내장 스크립트는 >148_word_end<과 같습니다.tpcb와 유사한, 간단한 >196_word_end<>423_word_end<>194_word_end< 전용. 내장 >486_word_end<의 명확한 접두사가 허용됩니다. 특별한 >486_word_end<으로목록, 내장 스크립트 목록을 표시하고 즉시 종료합니다.
>194_word_end<적으로 뒤에 정수 가중치를 쓰세요@다른 스크립트와 비교하여 이 스크립트를 >194_word_end<할 확률을 조정합니다. 기본 가중치는 1입니다. 자세한 내용은 아래를 참조하세요.
>275_word_end< 클라이언트--클라이언트=클라이언트시뮬레이트된 클라이언트 수, 즉 동시 데이터베이스 세션 수. >249_word_end<은 1입니다.
-C--연결클라이언트 세션당 한 번만 수행하는 대신 각 트랜잭션에 대해 새 연결을 설정하십시오. 이는 연결 오버헤드를 측정하는 데 유용합니다.
-d--디버그디버깅 출력을 인쇄합니다.
-D varname=값--정의=varname=값사용자 정의 스크립트에서 사용할 변수를 정의하십시오(아래 참조>383_word_end< 다수의-D>169_word_end<이 허용됩니다.
>281_word_end< 파일 >486_word_end<[@weight]--파일=파일 >486_word_end<[@weight]>148_word_end<에서 읽은 트랜잭션 스크립트 추가파일 >486_word_end<실행할 스크립트 목록에.
>194_word_end<적으로 뒤에 정수 가중치를 씁니다.@다른 스크립트와 비교하여 이 스크립트를 >194_word_end<할 확률을 조정합니다. 기본 가중치는 1입니다. (>148_word_end<을 포함하는 스크립트 파일 >486_word_end<을 사용하려면@문자, 모호함이 없도록 가중치를 추가합니다. 예를 들어filen@me@1>436_word_end< 자세한 내용은 아래를 참조하세요.
-j 스레드--작업=스레드내부 작업자 스레드 수>136_word_end<. 다중 CPU 시스템에서는 둘 이상의 스레드를 사용하는 것이 도움이 될 수 있습니다. 클라이언트는 사용 가능한 스레드 간에 최대한 균등하게 분산됩니다. >249_word_end<은 1입니다.
-l--로그각 거래에 대한 >14_word_end<를 로그 파일에 기록합니다. 자세한 내용은 아래를 참조하세요.
-L 한계--latency-limit=한계>148_word_end< 이상 지속되는 거래한계밀리초는 >148_word_end<과 같이 별도로 계산되고 보고됩니다.늦음.
조절이 사용될 때 (--rate=...), 일>14_word_end<다 많이 지연되는 거래한계ms는 대기 시간 제한을 충족할 희망이 없으며 서버로 전혀 전송되지 않습니다. >148_word_end<과 같이 별도로 계산 및 보고됩니다.건너뛰었습니다.
-M 쿼리모드--프로토콜=쿼리모드서버에 쿼리를 제출하는 데 사용하는 프로토콜:
간단한: 간단한 쿼리 프로토콜을 사용합니다.
확장: 확장 쿼리 프로토콜을 사용합니다.
준비됨: 준비된 문과 >361_word_end< 확장 쿼리 프로토콜을 사용합니다.
그 안에서준비됨모드,>136_word_end<두 번째 쿼리 반복부터 구문 분석 결과를 재사용하므로>136_word_end<다른 모드보다 빠르게 실행됩니다.
>249_word_end<은 단순 쿼리 프로토콜입니다. (보다53장자세한 내용은>436_word_end<
>428_word_end<-->391_word_end< 없음테스트를 실행하기 전에 >391_word_end< 청소를 수행하지 마십시오. 이 >169_word_end<은필요함표준 테이블을 포함하지 않는 사용자 정의 테스트 시나리오를 실행하는 경우>136_word_end<_accounts, >136_word_end<_branches, >136_word_end<_history및>136_word_end<_tellers.
-N--일부 >196_word_end< 건너뛰기내장된 단순 >196_word_end< 스크립트를 실행합니다. 의 약어-b 단순 >196_word_end<.
-P 초--진행=초진행 보고서 표시 간격초초. 보고서에는 실행 시작 이후의 시간, 마지막 보고 이후의 TPS, 마지막 보고 이후의 트랜잭션 대기 시간 평균 및 표준 편차가 포함됩니다. 제한 중(-R), 지연 시간은 실제 트랜잭션 시작 시간이 아닌 트랜잭션 예정 시작 시간을 기준으로 계산되므로 평균 일정 지연 시간도 포함됩니다.
-r--보고 대기 시간벤치마크가 완료된 후 각 명령의 평균 문당 대기 시간(클라이언트 관점에서 실행 시간)을 보고합니다. 자세한 내용은 아래를 참조하세요.
-R 비율--rate=비율가능한 한 빨리 실행하는 대신(>249_word_end<) 지정된 속도를 목표로 하는 트랜잭션을 실행합니다. 비율은 초당 트랜잭션 수로 제공됩니다. 목표 비율이 가능한 최대 비율보다 높으면 비율 제한은 결과에 영향을 미치지 않습니다.
비율은 푸아송 분포 일정 시간선을 따라 트랜잭션을 시작하여 목표로 삼습니다. 예상 시작 시간 일정은 >140_word_end< 트랜잭션이 종료된 시점이 아닌 클라이언트가 처음 시작된 시점을 기준으로 앞으로 이동합니다. 이러한 접근 방식은 트랜잭션이 원래 예정된 종료 시간을 초과하면 나중에 트랜잭션이 다시 따라잡을 수 있음을 의미합니다.
조절이 활성화되면 실행 종료 시 보고된 트랜잭션 대기 시간은 예약된 시작 시간에서 계산되므로 각 트랜잭션이 >140_word_end< 트랜잭션이 완료될 때까지 기다려야 했던 시간이 포함됩니다. 대기 시간을 일정 지연 시간이라고 하며 평균과 최대도 별도로 보고됩니다. 실제 트랜잭션 시작 시간에 대한 트랜잭션 지연 시간, 즉 데이터베이스에서 트랜잭션을 실행하는 데 소요된 시간은 보고된 지연 시간에서 일정 지연 시간을 빼서 계산할 수 있습니다.
만약--대기 시간 제한>148_word_end<과 >361_word_end< 사용됩니다.--rate, 지연 시간은 예약된 시작 시간을 기준으로 계산되므로 >140_word_end< 트랜잭션이 종료될 때 이미 지연 시간 제한을 초과할 정도로 트랜잭션이 지연될 수 있습니다. 이러한 거래는 서버로 전송되지 않고 모두 건너뛰어 별도로 계산됩니다.
긴 일정 지연 시간은 시스템이 >194_word_end<한 수의 클라이언트 및 스레드를 사용하여 지정된 속도로 트랜잭션을 처리할 수 없음을 나타냅니다. 평균 트랜잭션 실행 시간이 각 트랜잭션 사이의 예정된 간격보다 길면 각 연속 트랜잭션이 더 뒤쳐지고 테스트 실행이 길어질수록 일정 지연 시간이 계속 증가합니다. 그런 일이 발생하면 지정된 거래율을 줄여야 합니다.
>258_word_end< >454_word_end<->258_word_end>454_word_end<지정된 배율 인수를 보고합니다.>136_word_end<의 출력입니다. 내장된 테스트에서는 이것이 필요하지 않습니다. 올바른 배율 인수는의 행 수를 계산하여 감지됩니다.>136_word_end<_branches>333_word_end< 그러나 커스텀 벤치마크만 테스트하는 경우(>281_word_end<>169_word_end<), 이 >169_word_end<을 사용하지 않으면 배율 인수가 1로 보고됩니다.
-S-->194_word_end< 전용내장된 >194_word_end< 전용 스크립트를 실행합니다. 의 약어-b >194_word_end< 전용.
>277_word_end< 거래--거래=거래각 클라이언트가 실행하는 트랜잭션 수. >249_word_end<은 10입니다.
>208_word_end< 초--시간=초클라이언트당 고정된 트랜잭션 수 대신 이 시간 동안 테스트를 실행하십시오.>277_word_end<>423_word_end<>208_word_end<상호 배타적입니다.
-v-->391_word_end<-모두테스트를 실행하기 전에 4개의 표준 테이블을 모두 >391_word_end<화하십시오. 둘 다 없음>428_word_end<아니요-v, >136_word_end<청소할 것입니다>136_word_end<_tellers>423_word_end<>136_word_end<_branches테이블이 잘립니다.>136_word_end<_history.
--집계-간격=초Length of aggregation interval (in seconds>383_word_end< May be used only with-l>169_word_end<. 이 >169_word_end<을 사용하면 아래에 >186_word_end<된 대로 로그에 간격별 요약 데이터가 포함됩니다.
--로그-접두사=접두사>148_word_end<에 의해 >419_word_end<된 로그 파일의 파일 >486_word_end< 접두어 설정--로그. >249_word_end<은>136_word_end<_log.
--진행-타임스탬프진행상황을 표시할 때(>169_word_end<)-P), 실행 시작 이후의 초 수 대신 타임스탬프(Unix epoch)를 사용합니다. 단위는 초 단위이며 점 뒤의 정밀도는 밀리초입니다. 이는 다양한 도구에서 >419_word_end<된 로그를 비교하는 데 도움이 됩니다.
--무작위 시드=씨앗무작위 >419_word_end<기 시드를 설정합니다. 시스템 난수 >419_word_end<기를 시드하여 각 스레드에 하나씩 일련의 초기 >419_word_end<기 상태를 >419_word_end<합니다. 값:씨앗may be:시간(>249_word_end<, 시드는 >69_word_end< 시간을 기준으로 함),랜드(강력한 무작위 소스 사용, 사용 가능한 것이 없으면 실패) >354_word_end< 부호 없는 십진 정수 값. 무작위 >419_word_end<기는 >136_word_end< 스크립트에서 명시적으로 >390_word_end<됩니다(무작위...함수) >354_word_end< 암시적으로(예: >169_word_end<--rate트랜잭션을 예약하는 데 사용합니다>383_word_end< 명시적으로 설정하면 시드에 사용된 값이 터미널에 표시됩니다. 허용되는 모든 값씨앗환경 변수를 통해서도 제공될 수 있습니다토토 커뮤니티_RANDOM_SEED. 제공된 시드가 가능한 모든 용도에 영향을 미치도록 하려면 이 >169_word_end<을 먼저 넣거나 환경 변수를 사용하세요.
시드를 명시적으로 설정하면 a를 재현할 수 있습니다.>136_word_end<난수에 관한 한 정확하게 실행됩니다. 임의의 상태가 스레드별로 관리되므로 이는 정확히 동일함을 의미합니다.>136_word_end<스레드당 하나의 클라이언트가 있고 외부 >354_word_end< 데이터 종속성이 없는 경우 동일한 >390_word_end<을 위해 실행됩니다. 통계적 관점에서 실행을 정확하게 재현하는 것은 성능 변동성을 숨기거나 >140_word_end< 실행과 동일한 페이지를 기록하는 등의 방식으로 성능을 과도하게 향상시킬 수 있기 때문에 좋지 않은 생각입니다. 그러나 오류가 발생하는 까다로운 사례를 다시 실행하는 등 디버깅에도 큰 도움이 될 수 있습니다. 현명하게 사용하세요.
--샘플링 속도=비율로그에 데이터를 쓸 때 >419_word_end<되는 로그 양을 줄이기 위해 사용되는 샘플링 속도입니다. 이 >169_word_end<을 지정하면 지정된 트랜잭션 부분만 기록됩니다. 1.0은 모든 거래가 기록된다는 의미이고, 0.05는 거래의 5%만 기록된다는 의미입니다.
로그 파일을 처리할 때 샘플링 속도를 고려해야 한다는 것을 기억하십시오. 예를 들어 TPS 값을 계산할 때 그에 따라 숫자를 곱해야 합니다. 예를 들어 샘플링 레이트가 0.01이면 실제 TPS의 1/100만 얻을 수 있습니다.
--쇼-스크립트=스크립트 >486_word_end<내장 스크립트의 실제 코드 표시스크립트 >486_word_end<stderr에서 즉시 종료합니다.
>136_word_end<또한 연결 매개변수에 대해 >148_word_end<과 같은 일반적인 명령줄 인수를 허용합니다.
>227_word_end< 호스트 >486_word_end<--호스트=호스트 >486_word_end<데이터베이스 서버의 호스트 >486_word_end<
>229_word_end< 포트--포트=포트데이터베이스 서버의 포트 번호
>231_word_end< 로그인--사용자 >486_word_end<=로그인연결할 사용자 >486_word_end<
-V--버전인쇄>136_word_end<버전 및 종료.
-?--도움말>148_word_end<에 관한 도움말 표시>136_word_end<명령줄 인수 및 종료.
성공적인 실행은 상태 0으로 종료됩니다. 종료 상태 1은 잘못된 명령줄 >169_word_end<과 같은 정적 문제를 나타냅니다. 데이터베이스 오류나 스크립트 문제 등 실행 중 오류가 발생하면 종료 상태 2가 됩니다. 후자의 경우,>136_word_end<부분 결과를 인쇄합니다.
>302_word_end<PGHOSTPGPORTPGUSER기본 연결 매개변수.
이 유틸리티는 대부분의 다른 유틸리티와 마찬가지로PostgreSQL유틸리티는 에서 >24_word_end<하는 환경 변수를 사용합니다.libpq(참조PostgreSQL : 문서 : 14 : 34.15. 환경 배트맨 토토>383_word_end<
환경 변수PG_COLOR진단 메시지에 색상을 사용할지 여부를 지정합니다. 가능한 값은 >148_word_end<과 같습니다.항상, 자동>423_word_end<절대로.
>136_word_end<지정된 목록에서 무작>142_word_end< >194_word_end<된 테스트 스크립트를 실행합니다. 스크립트에는 >148_word_end<으로 지정된 내장 스크립트가 포함될 수 있습니다.-b및 >148_word_end<으로 지정된 사용자 제공 스크립트>281_word_end<. 각 스크립트에는 뒤에 지정된 상대적 가중치가 부여될 수 있습니다.@>194_word_end< 확률을 변경하기 위해. 기본 가중치는1. 가중치가 있는 스크립트0무시됩니다.
기본 내장 트랜잭션 스크립트(>148_word_end<으로도 >390_word_end<됨-b tpcb와 유사)는 무작>142_word_end< >194_word_end<된 트랜잭션당 7개의 명령을 실행합니다.도움, tid, 입찰>423_word_end<델타. 이 시나리오는 TPC-B 벤치마크에서 영감을 얻었지만 실제로는 TPC-B가 아니므로 >486_word_end<이 붙었습니다.
시작;
>196_word_end< >136_word_end<_accounts SET abalance = abalance + :delta WHERE >24_word_end< = :aid;
>136_word_end<_accounts에서 abalance를 >194_word_end<하세요 WHERE help = :aid;
>196_word_end< >136_word_end<_tellers SET tbalance = tbalance + :delta WHERE tid = :tid;
>196_word_end< >136_word_end<_branches SET bbalance = bbalance + :delta WHERE bid = :bid;
>136_word_end<_history에 >198_word_end<(tid, bid,aid, delta, mtime) VALUES(:tid, :bid, :aid, :delta, CURRENT_TIMESTAMP);
END;
>148_word_end<을 >194_word_end<하는 경우간단한 >196_word_end<내장 (또한-N), 4단계와 5단계는 트랜잭션에 포함되지 않습니다. 이렇게 하면 해당 테이블에 대한 >196_word_end< 경합이 방지되지만 테스트 사례가 TPC-B와 훨씬 덜 비슷해집니다.
>148_word_end<을 >194_word_end<하는 경우>194_word_end< 전용내장 (또한-S), 오직>194_word_end<발행되었습니다.
>136_word_end<기본 트랜잭션 스크립트(위에 >186_word_end<됨)를 파일에서 읽은 트랜잭션 스크립트로 대체하여 사용자 정의 벤치마크 시나리오 실행을 >24_word_end<합니다(>281_word_end<>169_word_end<>383_word_end< 이 경우에는 a“거래”스크립트 파일의 한 실행으로 계산됩니다.
스크립트 파일에는 세미콜론으로 끝나는 하나 이상의 SQL 명령이 포함되어 있습니다. 빈 줄과 로 시작하는 줄--무시됩니다. 스크립트 파일에는 >148_word_end<도 포함될 수 있습니다.“메타 명령”, >148_word_end<으로 해석됨>136_word_end<아래에 >186_word_end<된 대로 자체적으로.
>140_word_end<PostgreSQL>99_word_end<, 스크립트 파일의 SQL 명령은 줄바꿈으로 종료되었으므로 여러 줄에 걸쳐 계속될 수 없습니다. 이제 세미콜론은필수연속적인 SQL 명령을 분리하기 위해(단, SQL 명령 뒤에 메타 명령이 오는 경우에는 필요하지 않습니다>383_word_end< >140_word_end< 버전과 새 버전 모두에서 작동하는 스크립트 파일을 >419_word_end<해야 하는 경우>136_word_end<, 세미콜론으로 끝나는 한 줄에 각 SQL 명령을 작성해야 합니다.
스크립트 파일을 위한 간단한 변수 대체 기능이 있습니다. 변수 >486_word_end<은 문자(라틴 문자가 아닌 문자 포함), 숫자, 밑줄로 구성되어야 하며 첫 번째 문자는 숫자가 아니어야 합니다. 변수는 명령줄로 설정할 수 있습니다.-D48314_48422-D명령줄 >169_word_end<에는 자동으로 사전 설정된 몇 가지 변수가 나열되어 있습니다.표 282. >148_word_end<을 사용하여 이러한 변수에 대해 지정된 값은-D자동 사전 설>14_word_end<다 우선합니다. 일단 설정되면 >148_word_end<을 작성하여 변수 값을 SQL 명령에 >198_word_end<할 수 있습니다.:변수>486_word_end<. 둘 이상의 클라이언트 세션을 실행하는 경우 각 세션에는 고유한 변수 세트가 있습니다.>136_word_end<하나의 명령문에서 최대 255개의 변수 사용을 >24_word_end<합니다.
표 282. >136_word_end< 자동 변수
| 변수 | >186_word_end< |
|---|---|
클라이언트_ID |
클라이언트 세션을 식별하는 고유 번호(0부터 시작) |
default_seed |
기본적으로 해시 및 의사 난수 순열 함수에 사용되는 시드 |
random_seed |
무작위 >419_word_end<기 시드(덮어쓰지 않는 한-D) |
규모 |
>69_word_end< 배율 인자 |
스크립트 파일 메타 명령은 백슬래시로 시작합니다(\)이며 일반적으로 줄 끝까지 확장되지만 백슬래시-리턴을 작성하여 추가 줄로 계속될 수 있습니다. 메타 명령에 대한 인수는 공백으로 구분됩니다. >148_word_end< 메타 명령이 >24_word_end<됩니다.
\gset [접두사] \aset [접두사]이 명령은 종료 세미콜론(;>383_word_end<
때\gset명령이 사용되면 >140_word_end< SQL 쿼리는 하나의 행을 반환할 것으로 예상되며, 그 열은 열 >486_word_end< 뒤에 >486_word_end<이 붙고 접두사가 붙은 변수에 저장됩니다.접두사제공된 경우.
때\aset명령이 사용됨, 모든 결합된 SQL 쿼리(구분\;) 해당 열은 열 >486_word_end<을 따서 명명된 변수에 저장되고 접두사는접두사제공된 경우. 쿼리가 행을 반환하지 않으면 할당이 수행되지 않으며 이를 감지하기 위해 변수의 존재 여부를 테스트할 수 있습니다. 쿼리가 두 개 이상의 행을 반환하는 경우 마지막 값이 유지됩니다.
\gset>423_word_end<\aset명령에 필요할 때까지 쿼리 결과를 아직 사용할 수 없으므로 파이프라인 모드에서 사용할 수 없습니다.
>148_word_end< 예는 첫 번째 쿼리의 최종 계정 잔액을 변수에 넣습니다.균형, 변수 채우기p_two>423_word_end<p_세세 번째 쿼리의 정수로. 두 번째 쿼리의 결과는 삭제됩니다. 마지막 두 개의 결합된 쿼리의 결과는 변수에 저장됩니다.4>423_word_end<다섯.
>136_word_end<_accounts >196_word_end< SET 불균형 = 불균형 + :delta >224_word_end< 도움 = :aid 반환 중 균형 \gset -- 두 쿼리의 합성 1개 >194_word_end< \; 2를 2로, 3을 3으로 >194_word_end< \gset p_ 4를 4로 >194_word_end<하십시오 \; 5를 5로 >194_word_end<하세요 \aset
\if 표현\elif 표현\else\endif이 명령 그룹은 >148_word_end<과 유사하게 중첩 가능한 조건부 블록을 구현합니다.psql's\if 표현. Conditional expressions are identical to those with\세트, 0이 아닌 값은 true로 해석됩니다.
\세트varname 표현변수 설정varname>148_word_end<에서 계산된 값으로표현. 표현식에는 >148_word_end<이 포함될 수 있습니다.NULL상수, 부울 상수참>423_word_end<거짓, 정수 상수(예:)5432, >148_word_end<과 같은 이중 상수3.14159, 변수에 대한 참조:변수 >486_word_end<, 연산자일반적인 SQL 우선 순위 및 연관성을 사용하여함수 >390_word_end<, SQL사례일반 조건식및 괄호.
함수 및 대부분의 연산자가 반환됨NULL켜짐NULL입력합니다.
조건부 목적의 경우 0이 아닌 숫자 값은 >148_word_end<과 같습니다.참, 숫자 값이 0이고NULL아르거짓.
너무 크거나 작은 정수, 이중 상수 및 정수 산술 연산자(+, -, *>423_word_end</) 오버플로 시 오류가 발생합니다.
마지막이 없을 때ELSE절은 a에 제공됩니다.사례, >249_word_end<은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 | 초 ]스크립트 실행을 마이크로초 단>142_word_end< 지정된 기간 동안 휴면 상태로 만듭니다. (우리), 밀리초(ms) >354_word_end< 초(s>383_word_end< 단위를 생략하면 초가 >249_word_end<입니다.번호정수 상수이거나 a일 수 있습니다.:변수 >486_word_end<정수 값을 갖는 변수에 대한 참조입니다.
예:
\수면 10ms
\setshellvarname 명령 [ 인수 ... ]변수 설정varname셸 명령의 결과명령주어진 내용으로인수(들>383_word_end< 명령은 표준 출력을 통해 정수 값을 반환해야 합니다.
명령>423_word_end< 각각인수텍스트 상수이거나 a일 수 있습니다.:변수 >486_word_end<변수에 대한 참조입니다. 을 사용하고 싶다면인수콜론으로 시작하고, 시작 부분에 추가 콜론을 쓰세요.인수.
예:
\setshell 변수_to_be_할당 명령 literal_argument :variable ::literal_starting_with_colon
\쉘명령 [ 인수 ... ]>148_word_end<과 동일\setshell, 그러나 명령 결과는 삭제됩니다.
예:
\쉘 명령 literal_argument :variable ::literal_starting_with_colon
\startpipeline\endpipeline이 명령은 SQL 문의 파이프라인의 시작과 끝을 구분합니다. 파이프라인 모드에서는 >140_word_end< 문의 결과를 기다리지 않고 명령문이 서버로 전송됩니다. 보다섹션 34.5자세한 내용을 확인하세요. 파이프라인 모드에서는 확장 쿼리 프로토콜을 사용해야 합니다.
>148_word_end<에 나열된 산술, 비트, 비교 및 논리 연산자표 283내장되어 있습니다>136_word_end<>148_word_end<에 나타나는 표현에 사용될 수 있습니다.\세트. 연산자는 우선순위가 높아지는 순서로 나열됩니다. 명시된 경우를 제외하고 두 개의 숫자 입력을 사용하는 연산자는 입력 중 하나가 double이면 double 값을 >419_word_end<하고, 그렇지 않으면 정수 결과를 >419_word_end<합니다.
표 283. >136_word_end< 연산자
|
운영자 >186_word_end< 예 |
|---|
|
논리 OR
|
|
논리적 AND
|
|
논리적 NOT
|
|
부울 값 테스트
|
|
무효성 테스트
|
|
같음
|
|
같지 않음
|
|
같지 않음
|
|
미만
|
|
보다 작거나 같음
|
|
보다 큼
|
|
보다 크거나 같음
|
|
비트별 OR
|
|
비트 XOR
|
|
비트 AND
|
|
비트별 NOT
|
|
비트 왼쪽으로 이동
|
|
비트 오른쪽으로 이동
|
|
추가
|
|
뺄셈
|
|
곱셈
|
|
Division (truncates the result towards zero if both inputs are integers)
|
|
모듈로(나머지)
|
|
부정
|
>148_word_end<에 나열된 함수테이블 284내장되어 있습니다>136_word_end<>148_word_end<에 나타나는 표현에 사용될 수 있습니다.\세트.
표 284. >136_word_end< 함수
|
기능 >186_word_end< 예제 |
|---|
|
절대값
|
|
인수를 인쇄합니다.stderr, 인수를 반환합니다.
|
|
더블 캐스팅합니다.
|
|
지수(
|
|
인수 중 가장 큰 값을 >194_word_end<합니다.
|
|
이것은 >148_word_end<의 별칭입니다.
|
|
컴퓨팅FNV-1a 해시.
|
|
컴퓨팅MurmurHash2 해시.
|
|
정수로 변환합니다.
|
|
인수 중 가장 작은 값을 >194_word_end<합니다.
|
|
자연로그
|
|
모듈로(나머지)
|
|
치열된 값
|
|
대략적인 값π
|
|
|
|
균일하게 분포된 임의의 정수를 계산합니다.
|
|
지수적으로 분포된 임의의 정수를 계산합니다.
|
|
가우스 분포 무작위 정수를 계산합니다.
|
|
Zipfian 분산 무작위 정수를 계산합니다.
|
|
제곱근
|
그무작위함수는 균등 분포를 사용하여 값을 >419_word_end<합니다. >265_word_end< 모든 값이 지정된 >494_word_end< 내에서 동일한 확률로 그려집니다. 그만큼random_exponential, random_gaussian>423_word_end<random_zipfian함수에는 분포의 정확한 모양을 결정하는 추가 이중 매개변수가 필요합니다.
지수 분포의 경우,매개변수빠르게 감소하는 지수 분포를 잘라서 분포를 제어합니다.매개변수, 경계 사이의 정수에 투영합니다. 정확히 말하자면,
f(x) = exp(-매개변수 * (x - min) / (최대 - 최소 + 1)) / (1 - exp(-매개변수))
그러면 값i사이분>423_word_end<최대포함은 확률로 그려집니다:f(i) - f(i + 1).
직관적으로, 더 큰 것은매개변수, 더 자주 값이에 가까울수록분액세스되며 빈도가 낮은 값이 >148_word_end<에 가깝습니다.최대접속되었습니다. 0에 가까울수록매개변수은 액세스 분포가 더 평평할수록(더 균일합니다>383_word_end< 분포의 대략적인 근사치는 >494_word_end<에서 가장 빈번한 1% 값이 >148_word_end<과 같다는 것입니다.분, 그려집니다매개변수%의 시간입니다. 그만큼매개변수값은 반드시 양수여야 합니다.
가우스 분포의 경우 간격은 >148_word_end<에서 잘린 표준 정규 분포(고전적인 종 모양의 가우스 곡선)에 매핑됩니다.-매개변수왼쪽 및+매개변수오른쪽. 간격 중간에 있는 값이 그려질 가능성이 더 높습니다. 정확히 말하면, 만약PHI(x)is the cumulative distribution function of the standard normal distribution, with mean뮤>148_word_end<으로 정의됨(최대 + 최소) / 2.0, 와
f(x) = PHI(2.0 * 매개변수 * (x--mu) / (최대 - 최소 + 1)) /
(2.0 * PHI(매개변수) - 1)
>148_word_end< 값i사이분>423_word_end<최대포함은 확률로 그려집니다:f(i + 0.5) - f(i - 0.5). 직관적으로, 더 클수록매개변수, 간격의 중간에 가까운 값이 더 자주 그려지고,에 가까운 값은 덜 자주 그려집니다.분>423_word_end<최대경계. 값의 약 67%가 중간에서 추출됩니다.1.0 / 매개변수그건 친척이군요0.5 / 매개변수평균 근처, 95% 중간2.0 / 매개변수그건 친척이군요1.0 / 매개변수평균 근처; 예를 들어, 만약매개변수은 4.0이며, 값의 67%는 간격의 중간 부분(1.0 / 4.0)에서 가져옵니다(>265_word_end<3.0 / 8.0에5.0 / 8.0) 및 중간 절반에서 95%(2.0 / 4.089754_89824매개변수값은 2.0입니다.
random_zipfian제한된 Zipfian 분포를 >419_word_end<합니다.매개변수은 분포가 얼마나 편향되었는지 정의합니다. 더 클수록매개변수, 간격의 시작 부분에 더 가까운 값이 더 자주 그려집니다. 분포는 >494_word_end<가 1부터 시작한다고 가정할 때 추첨 확률의 비율이 됩니다.k대 그림k+1is((. 예를 들어,k+1)/k)**매개변수random_zipfian(1, ..., 2.5)값을 >419_word_end<합니다1>14_word_end<(2/1)**2.5 = 5.66보다 더 자주2, 자체적으로 >419_word_end<됨(3/2)**2.5 = 2.76보다 더 자주3등.
>136_word_end<의 구현은 "Non>231_word_end매개변수value is restricted to the range [1.001, 1000].
행을 불균일하게 >194_word_end<하는 벤치마크를 설계할 때 >194_word_end<한 행은 시퀀스의 ID >354_word_end< 물리적 행 순서와 같은 다른 데이터와 상호 연관될 수 있으며 이로 인해 성능 측정이 왜곡될 수 있다는 점에 유의하세요.
이를 방지하려면 >148_word_end<을 사용하는 것이 좋습니다.순열함수 >354_word_end< 유사한 효과를 갖는 다른 추가 단계를 사용하여 >194_word_end<한 행을 섞고 그러한 상관 관계를 제거합니다.
해시 함수해시, hash_murmur2>423_word_end<hash_fnv1a입력 값과 >194_word_end<적 시드 매개변수를 허용합니다. 시드 값이 제공되지 않은 경우:default_seed이 사용되며 명령줄에서 설정하지 않는 한 무작>142_word_end< 초기화됩니다.-D>169_word_end<.
순열입력 값, 크기 및 >194_word_end<적 시드 매개변수를 허용합니다. >494_word_end< 내 정수의 의사 난수 순열을 >419_word_end<합니다.[0, 크기), 순열된 값에서 입력 값의 인덱스를 반환합니다. >194_word_end<된 순열은 시드에 의해 매개변수화되며 >249_word_end<은:default_seed, 지정되지 않은 경우. 해시 함수와 달리순열출력 값에 충돌이나 구멍이 없는지 확인합니다. 간격 밖의 입력 값은 크기의 모듈로 해석됩니다. 크기가 양수가 아닌 경우 함수에서 오류가 발생합니다.순열>148_word_end<과 같은 불균일한 무작위 함수의 분포를 분산시키는 데 사용할 수 있습니다.random_zipfian>354_word_end<random_exponential그래서 더 자주 그려지는 값은 사소하게 상관되지 않습니다. 예를 들어 >148_word_end<과 같습니다.>136_word_end<스크립트는 몇몇 계정이 과도한 부하를 >419_word_end<하는 소셜 미디어 및 블로그 플랫폼에 일반적으로 발생할 수 있는 실제 작업 부하를 시뮬레이션합니다.
\세트 크기 1000000 \set r random_zipfian(1, :size, 1.07) \set k 1 + 순열(:r, :size)
어떤 경우에는 서로 상관되지 않는 몇 가지 별개의 분포가 필요하며 이때 >194_word_end<적 시드 매개변수가 유용합니다:
\set k1 1 + permute(:r, :size, :default_seed + 123) \set k2 1 + 순열(:r, :size, :default_seed + 321)
비슷한 동작을 >148_word_end<과 같이 근사화할 수도 있습니다.해시:
\세트 크기 1000000 \set r random_zipfian(1, 100 * :size, 1.07) \set k 1 + abs(hash(:r)) % :size
그러나 그 이후로해시generates collisions, some values will not be reachable and others will be more frequent than expected from the original distribution.
예를 들어, 내장된 TPC-B와 유사한 트랜잭션의 전체 정의는 >148_word_end<과 같습니다:
\set 보조 무작위(1, 100000 * :scale) \입찰 무작위 설정(1, 1 * :scale) \set tid 무작위(1, 10 * :scale) \세트 델타 무작위(-5000, 5000) 시작하다; >196_word_end< >136_word_end<_accounts SET abalance = abalance + :delta WHERE 보조 = :aid; >136_word_end<_accounts에서 잔고 >194_word_end< WHEREaid = :aid; >196_word_end< >136_word_end<_tellers SET tbalance = tbalance + :delta WHERE tid = :tid; >196_word_end< >136_word_end<_branches SET bbalance = bbalance + :delta WHERE bid = :bid; >136_word_end<_history에 >198_word_end<(tid, bid,aid, delta, mtime) VALUES(:tid, :bid, :aid, :delta, CURRENT_TIMESTAMP); 끝;
이 스크립트는 트랜잭션의 각 반복이 무작>142_word_end< >194_word_end<된 서로 다른 행을 참조하도록 허용합니다. (이 예는 또한 각 클라이언트 세션이 자체 변수를 갖는 것이 중요한 이유를 보여줍니다. 그렇지 않으면 독립적으로 다른 행을 건드리지 않을 것입니다>436_word_end<
와 >361_word_end<-l>169_word_end<(그러나 없음--집계-간격>169_word_end<),>136_word_end<각 트랜잭션에 대한 >14_word_end<를 로그 파일에 기록합니다. 로그 파일의 >486_word_end<은 >148_word_end<과 같습니다., 여기서접두사.nnn접두사>249_word_end<은>136_word_end<_log및nnn은의 PID입니다.>136_word_end<프로세스. 접두사는를 사용하여 변경할 수 있습니다.--로그 접두사>169_word_end<. 만약-j>169_word_end<은 2 이상이므로 여러 작업자 스레드가 있고 각 스레드에는 자체 로그 파일이 있습니다. 첫 번째 작업자는 표준 단일 작업자의 경우와 동일한 로그 파일 >486_word_end<을 사용합니다. 다른 작업자에 대한 추가 로그 파일의 >486_word_end<은 >148_word_end<과 같습니다., 여기서접두사.nnn.음음은 1로 시작하는 각 작업자의 일련 번호입니다.
로그 형식은 >148_word_end<과 같습니다:
클라이언트_IDtransaction_no시간script_notime_epochtime_us[schedule_lag]
>224_word_end<클라이언트_ID트랜잭션을 실행한 클라이언트 세션을 나타냅니다.transaction_no해당 세션에서 실행된 트랜잭션 수를 계산합니다.시간마이크로초 단위의 총 경과된 트랜잭션 시간입니다.script_no사용된 스크립트 파일을 식별합니다(여러 스크립트가 지정된 경우 유용함>281_word_end<>354_word_end<-b) 및time_epoch/time_us은 Unix-epoch 타임스탬프와 트랜잭션이 완료된 시기를 보여주는 마이크로초 단위의 오프셋(소수 초로 ISO 8601 타임스탬프를 >419_word_end<하는 데 적합)입니다. 그만큼schedule_lag필드는 트랜잭션의 예약된 시작 시간과 실제로 시작된 시간 간의 차이(마이크로초)입니다. 이는 >148_word_end<과 같은 경우에만 존재합니다.--rate>169_word_end<이 사용됩니다. 둘 다일 때--rate>423_word_end<--대기 시간 제한사용됩니다.시간건너뛴 거래의 경우 >148_word_end<과 같이 보고됩니다.건너뛰었습니다.
>148_word_end<은 단일 클라이언트 실행에서 >419_word_end<된 로그 파일의 일부입니다:
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>423_word_end<--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 제한을 초과했기 때문에 지연되었습니다. >148_word_end< 두 트랜잭션은 시작하기도 전에 이미 늦었기 때문에 건너뛰었습니다.
많은 트랜잭션을 처리할 수 있는 하드웨어에서 장기간 테스트를 실행할 때 로그 파일이 매우 커질 수 있습니다. 그만큼--샘플링 속도>169_word_end<은 임의의 트랜잭션 샘플만 기록하는 데 사용할 수 있습니다.
와 >361_word_end<--집계-간격>169_word_end<, 로그 파일에 다른 형식이 사용됩니다.
interval_startnum_transactionssum_latencysum_latency_2최소 지연 시간max_latency [sum_lagsum_lag_2min_lagmax_lag[건너뛰었습니다] ]
>224_word_end<interval_start간격의 시작입니다(Unix 에포크 타임스탬프>383_word_end<num_transactions은 간격 내의 트랜잭션 수입니다.sum_latency간격 내의 트랜잭션 지연 시간의 합입니다.sum_latency_2은 해당 간격 내 트랜잭션 지연 시간의 제곱합입니다.min_latency간격 내 최소 지연 시간이며max_latency은 간격 내 최대 지연 시간입니다. >148_word_end< 필드는,sum_lag, sum_lag_2, min_lag및max_lag, >148_word_end<의 경우에만 존재합니다.--rate>169_word_end<이 사용되었습니다. 각 트랜잭션이 >140_word_end< 트랜잭션이 완료될 때까지 기다려야 했던 시간, 즉 각 트랜잭션의 예정된 시작 시간과 실제로 시작된 시간 간의 차이에 대한 통계를 제공합니다. 가장 마지막 필드인건너뛰었습니다, >148_word_end< 경우에만 존재합니다.--지연 시간 제한>169_word_end<도 사용됩니다. 너무 늦게 시작되었기 때문에 건너뛴 트랜잭션 수를 계산합니다. 각 트랜잭션은 커밋된 간격으로 계산됩니다.
>148_word_end<은 몇 가지 출력 예입니다.
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
일반(집계되지 않은) 로그 파일에는 각 트랜잭션에 사용된 스크립트가 표시되지만 집계된 로그는 표시되지 않습니다. 따라서 스크립트별 데이터가 필요한 경우 직접 데이터를 집계해야 합니다.
와 >361_word_end<-r>169_word_end<,>136_word_end<모든 클라이언트가 실행한 각 명령문의 경과된 트랜잭션 시간을 수집합니다. 그런 >148_word_end< 벤치마크가 완료된 후 각 문의 지연 시간이라고 하는 해당 값의 평균을 보고합니다.
기본 스크립트의 경우 출력은 >148_word_end<과 유사합니다.
>391_word_end< 시작...끝.
거래 유형: <내장: TPC-B(일종의)
배율 인수: 1
쿼리 모드: 단순
클라이언트 수: 10
스레드 수: 1
클라이언트당 거래 수: 1000
실제로 처리된 트랜잭션 수: 10000/10000
평균 지연 시간 = 10.870ms
대기 시간 표준 편차 = 7.341ms
초기 연결 시간 = 30.954ms
tps = 907.949122 (초기 연결 시간 없음)
명령문 대기 시간(밀리초):
0.001 \set 보조 무작위(1, 100000 * :scale)
0.001 \set 입찰 무작위(1, 1 * :scale)
0.001 \set tid 무작위(1, 10 * :scale)
0.000 \set 델타 무작위(-5000, 5000)
0.046 시작;
0.151 >196_word_end< >136_word_end<_accounts SET abalance = abalance + :delta WHERE 보조 = :aid;
0.107 >136_word_end<_accounts에서 잔액 >194_word_end< WHEREaid = :aid;
4.241 >196_word_end< >136_word_end<_tellers SET tbalance = tbalance + :delta WHERE tid = :tid;
5.245 >196_word_end< >136_word_end<_branches SET bbalance = bbalance + :delta WHERE bid = :bid;
0.102 >136_word_end<_history에 >198_word_end<(tid, bid,aid, delta, mtime) VALUES(:tid, :bid, :aid, :delta, CURRENT_TIMESTAMP);
0.974 종료;
여러 스크립트 파일이 지정된 경우 평균은 각 스크립트 파일에 대해 별도로 보고됩니다.
문별 대기 시간 계산에 필요한 추가 타이밍 >14_word_end<를 수집하면 약간의 오버헤드가 추가된다는 점에 유의하세요. 이렇게 하면 평균 실행 속도가 느려지고 계산된 TPS가 낮아집니다. 속도 저하 정도는 플랫폼과 하드웨어에 따라 크게 다릅니다. 지연 시간 보고가 활성화된 상태와 활성화되지 않은 상태의 평균 TPS 값을 비교하는 것은 타이밍 오버헤드가 중요한지 측정하는 좋은 방법입니다.
사용이 매우 쉽습니다>136_word_end<완전히 의미 없는 숫자를 >419_word_end<합니다. >148_word_end<은 유용한 결과를 얻는 데 도움이 되는 몇 가지 지침입니다.
먼저,절대로단 몇 초 동안만 실행되는 테스트를 믿으세요. >148_word_end<을 사용하세요.>277_word_end<>354_word_end<>208_word_end<노이즈를 평균화하기 위해 실행이 최소 몇 분 동안 지속되도록 하는 >169_word_end<입니다. 어떤 경우에는 재현 가능한 수치를 얻으려면 몇 시간이 필요할 수도 있습니다. 테스트를 여러 번 시도하여 수치가 재현 가능한지 확인하는 것이 좋습니다.
기본 TPC-B와 유사한 테스트 시나리오의 경우 초기화 배율 인수(>258_word_end<)은 적어도 테스트하려는 최대 클라이언트 수만큼 커야 합니다(>275_word_end<); 그렇지 않으면 대부분 >196_word_end< 경합을 측정하게 될 것입니다. 뿐입니다>258_word_end<행>136_word_end<_branches테이블이며, 모든 트랜잭션은 그 중 하나를 >196_word_end<하려고 합니다. 따라서>275_word_end<값 초과>258_word_end<의심할 여지없이 많은 트랜잭션이 다른 트랜잭션을 기다리면서 차단될 것입니다.
기본 테스트 시나리오는 또한 테이블이 초기화된 후 얼마나 오래되었는지에 매우 민감합니다. 테이블에 데드 행과 데드 스페이스가 누적되면 결과가 변경됩니다. 결과를 이해하려면 총 >196_word_end< 수와 데이터 정리가 발생하는 시기를 추적해야 합니다. autovacuum이 활성화되면 측정된 성능에 예측할 수 없는 변화가 발생할 수 있습니다.
제한사항>136_word_end<많은 수의 클라이언트 세션을 테스트하려고 할 때 자체적으로 병목 현상이 발생할 수 있다는 것입니다. 이는 >148_word_end<을 실행하여 완화할 수 있습니다.>136_word_end<on a different machine from the database server, although low network latency will be essential. 여러 개를 실행하는 것이 유용할 수도 있습니다.>136_word_end<동일한 데이터베이스 서버에 대해 여러 클라이언트 시스템에서 동시에 인스턴스.
신뢰할 수 없는 사용자가 >148_word_end<을 채택하지 않은 데이터베이스에 액세스할 수 있는 경우보안 스키마 사용 패턴, 실행하지 마세요>136_word_end<해당 데이터베이스에 있습니다.>136_word_end<규정되지 않은 >486_word_end<을 사용하며 검색 경로를 조작하지 않습니다.
>18_word_end<에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 >186_word_end<이 필요한 경우 이용해주세요이 양식>18_word_end< 문제를 보고합니다.