> Hi Yugo, > > I tested with serialization error scenario by setting: > default_transaction_isolation = 'repeatable read' > The result was: > > $ pgbench -t 10 -c 10 --max-tries=10 test > transaction type: <builtin: TPC-B (sort of)> > scaling factor: 10 > query mode: simple > number of clients: 10 > number of threads: 1 > maximum number of tries: 10 > number of transactions per client: 10 > number of transactions actually processed: 100/100 > number of failed transactions: 0 (0.000%) > number of transactions retried: 35 (35.000%) > total number of retries: 74 > latency average = 5.306 ms > initial connection time = 15.575 ms > tps = 1884.516810 (without initial connection time) > > I had hard time to understand what those numbers mean: > number of transactions retried: 35 (35.000%) > total number of retries: 74 > > It seems "total number of retries" matches with the number of ERRORs > reported in PostgreSQL. Good. What I am not sure is "number of > transactions retried". What does this mean?
Oh, ok. I see it now. It turned out that "number of transactions retried" does not actually means the number of transactions rtried. Suppose pgbench exectutes following in a session: BEGIN; -- transaction A starts : (ERROR) ROLLBACK; -- transaction A aborts (retry) BEGIN; -- transaction B starts : (ERROR) ROLLBACK; -- transaction B aborts (retry) BEGIN; -- transaction C starts : END; -- finally succeeds In this case "total number of retries:" = 2 and "number of transactions retried:" = 1. In this patch transactions A, B and C are regarded as "same" transaction, so the retried transaction count becomes 1. But it's confusing to use the language "transaction" here because A, B and C are different transactions. I would think it's better to use different language instead of "transaction", something like "cycle"? i.e. number of cycles retried: 35 (35.000%) Best reagards, -- Tatsuo Ishii SRA OSS, Inc. Japan English: http://www.sraoss.co.jp/index_en.php Japanese:http://www.sraoss.co.jp