acquire is an asyncpg coroutine operation that obtains an available database connection from a connection pool. If every connection is busy, it waits until one is released. Reusing pooled connections avoids the cost of creating a new connection for each query. section 5.5.2
Acquire a connection for one query
Use `async with pool.acquire() as connection:` to borrow a connection, execute `await connection.fetchrow(...)`, and return the connection automatically when the block ends. section 5.5.2
Figure 5.2 Coroutines 1 and 2 acquire connections to run their queries while Coroutine 3 waits for a connection. Once either Coroutine 1 or 2 finishes, Coroutine 3 will be able to use the newly released connection and will be able to execute its query.
A pool with two connections lets the first two query coroutines proceed while a third waits; releasing either connection lets the third continue. section 5.5.2
