PGCon2019 - 3.4

PGCon 2019
The PostgreSQL Conference

Andrey Borodin
Day Talks - Day 2 - 2019-05-31
Room DMS 1110
Start time 10:00
Duration 00:45
ID 1312
Event type Lecture
Track DBA
Language used for presentation English


Advanced multi-threaded PostgreSQL connection pooler and request router.

Odyssey is new PostgreSQL connection pooler designed for the high-load environment. It can significantly scale processing performance by specifying the number of additional worker threads. This allows to increase SSL/TLS performance and provide more balanced pooling control using by sharing global server connection pools.

Odyssey is PostgreSQL connection pooler designed from scratch to provide multi-threaded processing. Each worker thread is responsible for authentication and proxying client-to-server and server-to-client requests. All worker threads are sharing global server connection pools.

It tracks a transaction state and in case of unexpected client disconnection can emit automatic Cancel and do Rollback of an abandoned transaction, before putting server connection back to the server pool for reuse. Odyssey allows defining connection pools as a pair of Database and User. Each defined pool can have separate authentication, pooling mode, and limits settings.

Odyssey has a sophisticated asynchronous multi-threaded architecture which is driven by custom made coroutine engine. One of the main goal was to make codebase understandable for new developers and to make an architecture easily extensible for future development. Ideas behind the coroutine design and more detailed features overview will be presented during the talk.