Skip to content

Commit 754e495

Browse files
committed
perf.go: do not produce unused connections
1 parent dc88d68 commit 754e495

File tree

2 files changed

+43
-25
lines changed

2 files changed

+43
-25
lines changed

tests/perf.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
gather_facts: no
3434
tasks:
3535
- name: run transfers
36-
shell: "go run ~/perf.go ~/transfers.go {{connections}} {{runkeys | d('-g -w 400 -r 1 -n 1000 -a 100000')}}"
36+
shell: "go run ~/perf.go ~/transfers.go {{connections}} {{runkeys | d('-g -w 200 -r 1 -n 1000 -a 100000')}}"
3737
register: transfers_result
3838
- debug: var=transfers_result
3939

tests/perf/transfers.go

Lines changed: 42 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ func (t TransfersTS) prepare_one(connstr string, wg *sync.WaitGroup) {
4343
}
4444

4545
func (t TransfersTS) writer(id int, cCommits chan int, cAborts chan int, wg *sync.WaitGroup) {
46-
var conns []*pgx.Conn
4746
var nGlobalTrans = 0
4847
var snapshot int64
4948
var csn int64
@@ -52,45 +51,64 @@ func (t TransfersTS) writer(id int, cCommits chan int, cAborts chan int, wg *syn
5251
cfg.ConnStrs.Set(cfg.ConnStrs[0])
5352
}
5453

55-
for _, connstr := range cfg.ConnStrs {
56-
dbconf, err := pgx.ParseDSN(connstr)
57-
checkErr(err)
58-
conn, err := pgx.Connect(dbconf)
59-
checkErr(err)
60-
defer conn.Close()
61-
conns = append(conns, conn)
62-
}
54+
// for _, connstr := range cfg.ConnStrs {
55+
// dbconf, err := pgx.ParseDSN(connstr)
56+
// checkErr(err)
57+
// conn, err := pgx.Connect(dbconf)
58+
// checkErr(err)
59+
// defer conn.Close()
60+
// conns = append(conns, conn)
61+
// }
62+
63+
dbconf1, err := pgx.ParseDSN(cfg.ConnStrs[ id % len(cfg.ConnStrs) ])
64+
checkErr(err)
65+
conn1, err := pgx.Connect(dbconf1)
66+
checkErr(err)
67+
defer conn1.Close()
68+
69+
dbconf2, err := pgx.ParseDSN(cfg.ConnStrs[ (id + 1) % len(cfg.ConnStrs) ])
70+
checkErr(err)
71+
conn2, err := pgx.Connect(dbconf2)
72+
checkErr(err)
73+
defer conn2.Close()
6374

6475

6576
for i := 0; i < cfg.IterNum; i++ {
6677

67-
6878
gtid := strconv.Itoa(id) + "." + strconv.Itoa(i)
6979
amount := 2*rand.Intn(2) - 1
7080
from_acc := rand.Intn(cfg.AccountsNum)//cfg.Writers.StartId + 2*id + 1
7181
to_acc := rand.Intn(cfg.AccountsNum)//cfg.Writers.StartId + 2*id + 2
7282

73-
conn1 := conns[rand.Intn(len(conns))]
74-
conn2 := conns[rand.Intn(len(conns))]
75-
for conn1 == conn2 {
76-
conn1 = conns[rand.Intn(len(conns))]
77-
conn2 = conns[rand.Intn(len(conns))]
78-
}
83+
// conn1 := conns[rand.Intn(len(conns))]
84+
// conn2 := conns[rand.Intn(len(conns))]
85+
// for conn1 == conn2 {
86+
// conn1 = conns[rand.Intn(len(conns))]
87+
// conn2 = conns[rand.Intn(len(conns))]
88+
// }
7989

8090
exec(conn1, "begin transaction")
8191
exec(conn2, "begin transaction")
82-
snapshot = _execQuery(conn1, "select dtm_extend($1)", gtid)
83-
snapshot = _execQuery(conn2, "select dtm_access($1, $2)", snapshot, gtid)
92+
93+
if cfg.UseDtm {
94+
snapshot = _execQuery(conn1, "select dtm_extend($1)", gtid)
95+
snapshot = _execQuery(conn2, "select dtm_access($1, $2)", snapshot, gtid)
96+
}
97+
8498
exec(conn1, "update t set v = v - $1 where u=$2", amount, from_acc)
8599
exec(conn2, "update t set v = v + $1 where u=$2", amount, to_acc)
86100
exec(conn1, "prepare transaction '" + gtid + "'")
87101
exec(conn2, "prepare transaction '" + gtid + "'")
88-
exec(conn1, "select dtm_begin_prepare($1)", gtid)
89-
exec(conn2, "select dtm_begin_prepare($1)", gtid)
90-
csn = _execQuery(conn1, "select dtm_prepare($1, 0)", gtid)
91-
csn = _execQuery(conn2, "select dtm_prepare($1, $2)", gtid, csn)
92-
exec(conn1, "select dtm_end_prepare($1, $2)", gtid, csn)
93-
exec(conn2, "select dtm_end_prepare($1, $2)", gtid, csn)
102+
103+
if cfg.UseDtm {
104+
exec(conn1, "select dtm_begin_prepare($1)", gtid)
105+
exec(conn2, "select dtm_begin_prepare($1)", gtid)
106+
csn = _execQuery(conn1, "select dtm_prepare($1, 0)", gtid)
107+
csn = _execQuery(conn2, "select dtm_prepare($1, $2)", gtid, csn)
108+
exec(conn1, "select dtm_end_prepare($1, $2)", gtid, csn)
109+
exec(conn2, "select dtm_end_prepare($1, $2)", gtid, csn)
110+
}
111+
94112
exec(conn1, "commit prepared '" + gtid + "'")
95113
exec(conn2, "commit prepared '" + gtid + "'")
96114
nGlobalTrans++

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy