Posts

Showing posts with the label connection pooler

Using Supavisor as a Connection Pool for PostgreSQL

Image
Introduction Connection Pool A Connection Pool is a mechanism to manage and reuse database connections. Without a connection pool, when an application sends a request to the database, it must undergo a successful TCP Handshake before executing the query and after receiving results, it must disconnect to release resources You can see the limitations of the traditional approach which is when there is a large volume of connections to the database, every request must experience all the steps mentioned above, greatly impacting system performance With a connection pool, right from startup, it pre-creates a fixed amount of connections to the database and keeps them alive, so when a request comes in, it only needs to take a connection from the pool and can use it immediately to execute the query and after completion, it just returns the connection to the pool for other applications to use instead of disconnecting Use cases Web/API applications with medium to large traffic: Any application serv...

Overhead in PostgreSQL

Image
Introduction In computer science and systems engineering, overhead is not a bug, but it is a phenomenon of system resource waste. Overhead is the amount of time, memory, bandwidth or CPU power consumed to manage or operate the system, rather than contributing directly to the actual data processing results. In database management systems, overhead occurs very frequently. Especially, if the system suffers from excessive memory (RAM) overhead, the Operating System (OS) will trigger a mechanism to kill that process to save the server. Common Types of Overhead in Postgres Postgres has a process-based architecture, meaning each client connection generates an independent process, so it easily encounters the following types of overhead: Connection Overhead: If you have 500 concurrent connections, Postgres will create 500 processes. The fact that the CPU must constantly context switch among these 500 processes creates a massive amount of overhead, significantly reducing performance. Memory Over...