Re: important decrease of performance using the 7.1 BETA version of PostgreSQL in one particular case - Mailing list pgsql-bugs

From Tom Lane
Subject Re: important decrease of performance using the 7.1 BETA version of PostgreSQL in one particular case
Date
Msg-id 7956.985044370@sss.pgh.pa.us
Whole thread Raw
In response to important decrease of performance using the 7.1 BETA version of PostgreSQL in one particular case  (Isabelle Therrien <therriei@LUB.UMontreal.CA>)
List pgsql-bugs
Isabelle Therrien <therriei@LUB.UMontreal.CA> writes:
> <!doctype html public "-//w3c//dtd html 4.0 transitional//en">
> <html>
> <font face="Courier New,Courier">Your
name              
> :       Isabelle Therrien</font>
> <br><font face="Courier New,Courier">Your email address     
> :       therriei@cirano.qc.ca</font>
> <br><font face="Courier New,Courier"></font> <font face="Courier New,Courier"></font>
> <p><font face="Courier New,Courier">System Configuration</font>
> <br><font face="Courier New,Courier">---------------------</font>
> <br><font face="Courier New,Courier">  Architecture         
> : Intel Pentium</font><font face="Courier New,Courier"></font>
> <p><font face="Courier New,Courier">  Operating System     
> : Linux</font><font face="Courier New,Courier"></font>
> <p><font face="Courier New,Courier">  PostgreSQL version   
> : PostgreSQL-7.1 Beta (but I use JDBC drivers v7.0.2)</font><font face="Courier New,Courier"></font>
> <p><font face="Courier New,Courier">I'm using Weblogic Server 5.1</font><font face="Courier New,Courier"></font>
> <p><font face="Courier New,Courier">Please enter a FULL description of
> your problem:</font>
> <br><font face="Courier New,Courier">------------------------------------------------</font>
> <br><font face="Courier New,Courier">I observed an important decrease of
> performance using the BETA version of PostgreSQL in one particular case:</font><font face="Courier
New,Courier"></font>
> <p><font face="Courier New,Courier">I have a big query, reported below,
> that is called several times in my application.</font>
> <br><font face="Courier New,Courier">At least 4 active connections call
> it at the same time.</font>
> <br><font face="Courier New,Courier">Normally, this query is executed in
> about 30-50 milliseconds.</font>
> <br><font face="Courier New,Courier">But after a while (depending on how
> many connections are used, and how often the query is called),</font>
> <br><font face="Courier New,Courier">the query is executed in 1000ms, then
> 2000ms, and it continues to grow exponentially. I've already seen it reaching
> 80 seconds.</font><font face="Courier New,Courier"></font>
> <p><font face="Courier New,Courier">While having these time reports, I
> tried to query the database directly using "psql", and I got the same result
> (around 80 sec)</font><font face="Courier New,Courier"></font>
> <p><font face="Courier New,Courier">I compared this to an older version
> (7.0.2) of PostgreSQL, in the same circumstances, and the worst</font>
> <br><font face="Courier New,Courier">I had was a 4000ms, without going
> any further. That's why I suppose the problem comes from the BETA version.</font>
> <br><font face="Courier New,Courier"></font> <font face="Courier New,Courier"></font>
> <p><font face="Courier New,Courier">----------</font>
> <br><font face="Courier New,Courier">The query: (the ? are replaced by
> 'GPK', GPK being the key we want to look for)</font>
> <br><font face="Courier New,Courier">----------</font>
> <br><font face="Courier New,Courier">SELECT quotes.xmldocument, prodrefs.xmldocument,
> orders.filteredorder, responses.xmldocument</font>
> <br><font face="Courier New,Courier">     FROM quotes,prodrefs,responses,orders</font>
> <br><font face="Courier New,Courier">     WHERE quotes.negotiationGPK
> = ?</font>
> <br><font face="Courier New,Courier">       
> AND quotes.ctime = (SELECT MAX(ctime) FROM quotes WHERE negotiationgpk
> = ?)</font>
> <br><font face="Courier New,Courier">       
> AND prodrefs.negotiationGPK = ?</font>
> <br><font face="Courier New,Courier">       
> AND orders.productreferenceGPK = prodrefs.gpk</font>
> <br><font face="Courier New,Courier">       
> AND owner=u1 AND overridden=FALSE</font>
> <br><font face="Courier New,Courier">       
> AND responses.orderGPK = orders.gpk</font>
> <br><font face="Courier New,Courier">       
> AND responses.ctime = (SELECT MAX(ctime) FROM responses WHERE ordergpk=orders.gpk)</font>
> <br><font face="Courier New,Courier">UNION</font>
> <br><font face="Courier New,Courier">SELECT quotes.xmldocument,prodrefs.xmldocument,(''),('')</font>
> <br><font face="Courier New,Courier">    FROM quotes,prodrefs</font>
> <br><font face="Courier New,Courier">    WHERE quotes.negotiationGPK
> = ?</font>
> <br><font face="Courier New,Courier">       
> AND quotes.ctime = (SELECT MAX(ctime) FROM quotes WHERE negotiationgpk
> = ?)</font>
> <br><font face="Courier New,Courier">       
> AND prodrefs.negotiationGPK = ?</font><font face="Courier New,Courier"></font>
> <p><font face="Courier New,Courier">-----------</font>
> <br><font face="Courier New,Courier">The tables:</font>
> <br><font face="Courier New,Courier">-----------</font>
> <br><font face="Courier New,Courier">           
> Table "quotes"</font>
> <br><font face="Courier New,Courier">   Attribute   
> |   Type    | Modifier</font>
> <br><font face="Courier New,Courier">----------------+-----------+----------</font>
> <br><font face="Courier New,Courier"> gpk           
> | bigint    | not null</font>
> <br><font face="Courier New,Courier"> xmldocument   
> | text      | not null</font>
> <br><font face="Courier New,Courier"> negotiationgpk | bigint   
> | not null</font>
> <br><font face="Courier New,Courier"> ctime         
> | timestamp | not null</font>
> <br><font face="Courier New,Courier">Index: quotes_pkey</font><font face="Courier New,Courier"></font>
> <p><font face="Courier New,Courier">          
> Table "prodrefs"</font>
> <br><font face="Courier New,Courier">   Attribute   
> |   Type    | Modifier</font>
> <br><font face="Courier New,Courier">----------------+-----------+----------</font>
> <br><font face="Courier New,Courier"> gpk           
> | bigint    | not null</font>
> <br><font face="Courier New,Courier"> ctime         
> | timestamp | not null</font>
> <br><font face="Courier New,Courier"> xmldocument   
> | text      | not null</font>
> <br><font face="Courier New,Courier"> negotiationgpk | bigint   
> | not null</font>
> <br><font face="Courier New,Courier">Index: prodrefs_pkey</font>
> <br><font face="Courier New,Courier"> </font>
> <br><font face="Courier New,Courier">            
> Table "orders"</font>
> <br><font face="Courier New,Courier">      Attribute     
> |   Type    | Modifier</font>
> <br><font face="Courier New,Courier">---------------------+-----------+----------</font>
> <br><font face="Courier
New,Courier"> gpk                
> | bigint    | not null</font>
> <br><font face="Courier
New,Courier"> ctime              
> | timestamp | not null</font>
> <br><font face="Courier New,Courier"> productreferencegpk | bigint   
> |</font>
> <br><font face="Courier
New,Courier"> owner              
> | text      | not null</font>
> <br><font face="Courier New,Courier"> overridden         
> | boolean   |</font>
> <br><font face="Courier New,Courier"> overridingordergpk  | bigint   
> |</font>
> <br><font face="Courier
New,Courier"> rawdata            
> | text      | not null</font>
> <br><font face="Courier New,Courier"> filteredorder      
> | text      | not null</font>
> <br><font face="Courier New,Courier"> previousquotegpk   
> | bigint    |</font>
> <br><font face="Courier New,Courier">Index: orders_pkey</font><font face="Courier New,Courier"></font>
> <p><font face="Courier New,Courier">        
> Table "responses"</font>
> <br><font face="Courier New,Courier">  Attribute  |  
> Type    | Modifier</font>
> <br><font face="Courier New,Courier">-------------+-----------+----------</font>
> <br><font face="Courier New,Courier"> gpk        
> | bigint    | not null</font>
> <br><font face="Courier New,Courier"> ctime      
> | timestamp | not null</font>
> <br><font face="Courier New,Courier"> ordergpk    |
> bigint    |</font>
> <br><font face="Courier New,Courier"> xmldocument | text     
> | not null</font>
> <br><font face="Courier New,Courier"> quotegpk    |
> bigint    |</font>
> <br><font face="Courier New,Courier">Index: responses_pkey</font>
> <br><font face="Courier New,Courier"></font> 
> <br><font face="Courier New,Courier"></font> 
> <br><font face="Courier New,Courier"></font> 
> <br><font face="Courier New,Courier"></font> </html>

Please don't send HTML to mailing lists.

I'd be willing to look at your issue if you'd submit it in a form
I could read with less pain.

            regards, tom lane

pgsql-bugs by date:

Previous
From: Isabelle Therrien
Date:
Subject: important decrease of performance using the 7.1 BETA version of PostgreSQL in one particular case
Next
From: Isabelle Therrien
Date:
Subject: important decrease of performance using the BETA version in one particular case