@@ -3,57 +3,67 @@ package main
3
3
import (
4
4
"fmt"
5
5
"sync"
6
- _"github.com/jgallagher/go-libpq "
6
+ _"github.com/lib/pq "
7
7
"database/sql"
8
8
"strconv"
9
9
"math/rand"
10
10
"time"
11
11
)
12
12
13
13
const (
14
- TRANSFER_CONNECTIONS = 10
15
- INIT_AMOUNT = 10000
16
- N_ITERATIONS = 10000
17
- N_ACCOUNTS = 2 * 100000
14
+ TRANSFER_CONNECTIONS = 150
15
+ INIT_AMOUNT = 1000
16
+ N_ITERATIONS = 3000
17
+ N_ACCOUNTS = 10000
18
18
)
19
19
20
- var cfg = "host=127.0.0.1 port=5432 sslmode=disable"
21
- var cfg1 = "host=127.0.0.1 port=5433 sslmode=disable"
22
- var cfg2 = "host=127.0.0.1 port=5434 sslmode=disable"
20
+ var cfg = "host=astro10 port=25432 dbname=postgres sslmode=disable"
21
+ var cfg1 = "host=astro9 port=25432 dbname=postgres sslmode=disable"
22
+ var cfg2 = "host=astro8 port=25432 dbname=postgres sslmode=disable"
23
+ var cfg3 = "host=astro6 port=25432 dbname=postgres sslmode=disable"
24
+
25
+ // var cfg = "host=127.0.0.1 port=5432 sslmode=disable"
26
+ // var cfg1 = "host=127.0.0.1 port=5433 sslmode=disable"
27
+ // var cfg2 = "host=127.0.0.1 port=5434 sslmode=disable"
23
28
24
29
var running = false
25
30
26
31
func prepare_db () {
27
- conn1 ,err := sql .Open ("libpq " ,cfg1 )
32
+ conn1 ,err := sql .Open ("postgres " ,cfg1 )
28
33
checkErr (err )
29
34
exec (conn1 ,"drop table if exists t_10000" )
30
35
conn1 .Close ()
31
36
32
- conn2 ,err := sql .Open ("libpq " ,cfg2 )
37
+ conn2 ,err := sql .Open ("postgres " ,cfg2 )
33
38
checkErr (err )
34
39
exec (conn2 ,"drop table if exists t_10001" )
35
40
conn2 .Close ()
36
41
37
42
38
- conn ,err := sql .Open ("libpq" ,cfg )
43
+ conn3 ,err := sql .Open ("postgres" ,cfg3 )
44
+ checkErr (err )
45
+ exec (conn3 ,"drop table if exists t_10003" )
46
+ conn3 .Close ()
47
+
48
+ conn ,err := sql .Open ("postgres" ,cfg )
39
49
checkErr (err )
40
50
41
51
exec (conn ,"drop extension if exists pg_shard CASCADE" )
42
52
exec (conn ,"create extension pg_shard" )
43
53
exec (conn ,"drop table if exists t" )
44
54
exec (conn ,"create table t(u int primary key, v int)" )
45
55
exec (conn ,"select master_create_distributed_table(table_name := 't', partition_column := 'u')" )
46
- exec (conn ,"select master_create_worker_shards(table_name := 't', shard_count :=2 , replication_factor := 1)" )
56
+ exec (conn ,"select master_create_worker_shards(table_name := 't', shard_count :=3 , replication_factor := 1)" )
47
57
48
58
for i := 1 ;i <= N_ACCOUNTS ;i ++ {
49
59
exec (conn ,"insert into t values(" + strconv .Itoa (i )+ ",10000)" )
50
60
}
51
-
61
+ fmt . Printf ( "Prepared! \n " )
52
62
conn .Close ()
53
63
}
54
64
55
65
func transfer (id int ,wg * sync.WaitGroup ) {
56
- conn ,err := sql .Open ("libpq " ,cfg )
66
+ conn ,err := sql .Open ("postgres " ,cfg )
57
67
checkErr (err )
58
68
defer conn .Close ()
59
69
@@ -81,7 +91,7 @@ func inspect(wg *sync.WaitGroup) {
81
91
var sum int64
82
92
var prevSum int64 = 0
83
93
84
- conn ,err := sql .Open ("libpq " ,cfg )
94
+ conn ,err := sql .Open ("postgres " ,cfg )
85
95
checkErr (err )
86
96
87
97
for running {
@@ -118,16 +128,8 @@ func main() {
118
128
119
129
inspectWg .Wait ()
120
130
121
- // conn, err := sql.Open("libpq", cfg)
122
- // checkErr(err)
123
-
124
- // exec(conn, "begin")
125
- // sum := execQuery(conn, "select sum(v) from t")
126
- // exec(conn, "commit")
127
-
128
- // fmt.Println(sum)
129
-
130
131
fmt .Printf ("Elapsed time %f seconds\n " ,time .Since (start ).Seconds ())
132
+ fmt .Printf ("TPS = %f\n " ,float64 (TRANSFER_CONNECTIONS * N_ITERATIONS )/ time .Since (start ).Seconds ())
131
133
}
132
134
133
135
func exec (conn * sql.DB ,stmt string ) {
@@ -149,5 +151,3 @@ func checkErr(err error) {
149
151
panic (err )
150
152
}
151
153
}
152
-
153
-