File: PERFORMANCE.md

package info (click to toggle)
pgagroal 2.0.0-1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 5,384 kB
  • sloc: ansic: 39,090; sh: 684; python: 272; makefile: 36; sql: 13
file content (63 lines) | stat: -rw-r--r-- 2,074 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# pgagroal performance

Performance is an important goal for [**pgagroal**](https://github.com/pgagroal/pgagroal) and effort have been made
to make [**pgagroal**](https://github.com/pgagroal/pgagroal) scale and use a limited number of resources.

This report describe [**pgagroal**](https://github.com/pgagroal/pgagroal) in relationship to 3 other [PostgreSQL](https://www.postgresql.org)
connection pool implementations, which we will call `a`, `b` and `c`.

The [pgbench](https://www.postgresql.org/docs/11/pgbench.html) program was used in the runs. All pool
configurations were made with performance in mind.

All diagrams are using the same identifier for the connection pool in question, so `a` is `a` in all
diagrams and so on.

The runs were performed on [RHEL](https://www.redhat.com/en/technologies/linux-platforms/enterprise-linux) 7.7 /
[EPEL](https://access.redhat.com/solutions/3358) / [DevTools](https://developers.redhat.com/products/developertoolset/overview) 8
based machines on 10G network. All connection pools were the latest versions as of January 14, 2020. [**pgagroal**](https://github.com/pgagroal/pgagroal) was
using the `epoll` mode of [libev](http://software.schmorp.de/pkg/libev.html).

## Simple

This run uses

```
pgbench -M simple
```

![pgbench simple](https://github.com/pgagroal/pgagroal/raw/master/doc/images/perf-simple.png "pgbench simple")

## Extended

This run uses

```
pgbench -M extended
```

![pgbench extended](https://github.com/pgagroal/pgagroal/raw/master/doc/images/perf-extended.png "pgbench extended")

## Prepared

This run uses

```
pgbench -M prepared
```

![pgbench prepared](https://github.com/pgagroal/pgagroal/raw/master/doc/images/perf-prepared.png "pgbench prepared")

## ReadOnly

This run uses

```
pgbench -S -M prepared
```

![pgbench readonly](https://github.com/pgagroal/pgagroal/raw/master/doc/images/perf-readonly.png "pgbench readonly")

## Closing

**Please**, run your own benchmarks to see how [**pgagroal**](https://github.com/pgagroal/pgagroal) compare to your existing connection pool
deployment.