pg.ddx.io  pgsql-performance@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Craig Ringer <craig@postnewspapers.com.au>
To: firerox@centrum.cz
Cc: pgsql-performance@postgresql.org
Subject: Re: slow pg_connect()
Date: Mon, 24 Mar 2008 16:58:16 +0900
Message-ID: <47E75F18.9060206@postnewspapers.com.au> (raw)
In-Reply-To: <200803240840.8128@centrum.cz>
References: <200803240840.8128@centrum.cz>

firerox@centrum.cz wrote:
> It takes more then 0.05s :(
>
> Only this function reduce server speed max to 20request per second.
>   
If you need that sort of frequent database access, you might want to 
look into:

- Doing more work in each connection and reducing the number of 
connections required;
- Using multiple connections in parallel;
- Pooling connections so you don't need to create a new one for every job;
- Using a more efficient database connector and/or language;
- Dispatching requests to a persistent database access provider that's 
always connected

However, your connections are indeed taking a long time. I wrote a 
trivial test using psycopg for Python and found that the following script:

#!/usr/bin/env python
import psycopg
conn = pyscopg.connect("dbname=testdb")

generally took 0.035 seconds (350ms) to run on my workstation - 
including OS process creation, Python interpreter startup, database 
interface loading, connection, disconnection, and process termination.

A quick timing test shows that the connection/disconnection can be 
performed 100 times in 1.2 seconds:

import psycopg
import timeit
print timeit.Timer('conn = psycopg.connect("dbname=craig")', 'import 
psycopg').timeit(number=100);

... and this is still with an interpreted language. I wouldn't be too 
surprised if much better again could be achieved with the C/C++ APIs, 
though I don't currently feel the desire to write a test for that.

--
Craig Ringer



view thread (7+ messages)  latest in thread

Message-ID: <47E75F18.9060206@postnewspapers.com.au>
Permalink:  ../47E75F18.9060206@postnewspapers.com.au/
Also on:    postgresql.org/message-id/47E75F18.9060206@postnewspapers.com.au

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-performance@postgresql.org
  Cc: craig@postnewspapers.com.au, firerox@centrum.cz
  Subject: Re: slow pg_connect()
  In-Reply-To: <47E75F18.9060206@postnewspapers.com.au>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox