Thank you for the pointers. I will try those suggestions. As I mentioned
later, resolving the query solved the problem for now.
Regards,
Jayadevan


On Thu, Sep 19, 2013 at 11:40 AM, Kevin Grittner-5 [via PostgreSQL] <
ml-node+s1045698n5771567...@n5.nabble.com> wrote:

> Jayadevan <[hidden 
> email]<http://user/SendEmail.jtp?type=node&node=5771567&i=0>>
> wrote:
>
> > "Merge Join  (cost=9268.34..26193.41 rows=6282 width=24) (actual
> time=892.188..892.190 rows=1 loops=1)"
> > "  Merge Cond: (l.id = b.location_id)"
> > "  ->  Index Scan using locations_pkey on locations l
> (cost=0.42..15739.22 rows=438386 width=24) (actual time=0.022..865.025
> rows=336605 loops=1)"
> > "  ->  Sort  (cost=9267.84..9283.54 rows=6282 width=8) (actual
> time=1.329..1.330 rows=1 loops=1)"
> > "        Sort Key: b.location_id"
> > "        Sort Method: quicksort  Memory: 25kB"
> > "        ->  Index Scan using ix_end_start_ip on blocks b
> (cost=0.43..8871.54 rows=6282 width=8) (actual time=0.573..1.268 rows=1
> loops=1)"
> > "              Index Cond: ((3721196957::bigint <= end_ip) AND
> (3721196957::bigint >= start_ip))"
> > "Total runtime: 892.439 ms"
>
> This is the query which needs to be optimized.  When I multiply the
> runtime of this function's query by the estimated number of
> function calls, I get 2.6 hours.
>
> Copying the query from the first email on the thread:
>
> SELECT l.id || l.country || l.region || l.city
>   FROM blocks b
>   JOIN locations l ON (b.location_id = l.id)
>   WHERE $1 >= start_ip
>     and $1 <= end_ip
>   limit 1;
>
> Can you provide the table definitions for blocks and locations,
> including indexes?  Also, could you tell us what the OS is, how
> much RAM is on the system, what the storage system looks like, and
> provide the output from running this?:
>
> SELECT version();
> SELECT name, current_setting(name), source
>   FROM pg_settings
>   WHERE source NOT IN ('default', 'override');
>
> You might also try running EXPLAIN ANALYZE for this query after
> running these statements on the connection, and see if you get a
> different plan:
>
> VACUUM ANALYZE blocks;
> VACUUM ANALYZE locations;
> SET cpu_tuple_cost = 0.03;
> SET random_page_cost = 1;
> SET effective_cache_size = <75% of machine RAM>
> SET work_mem = <25% of machine RAM / max_connections>
>
> --
> Kevin Grittner
> EDB: http://www.enterprisedb.com
> The Enterprise PostgreSQL Company
>
>
> --
> Sent via pgsql-general mailing list ([hidden 
> email]<http://user/SendEmail.jtp?type=node&node=5771567&i=1>)
>
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-general
>
>
> ------------------------------
>  If you reply to this email, your message will be added to the discussion
> below:
>
> http://postgresql.1045698.n5.nabble.com/Query-CPU-issue-tp5771421p5771567.html
>  To unsubscribe from Query - CPU issue, click 
> here<http://postgresql.1045698.n5.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=5771421&code=bWF5bWFsYS5qYXlhZGV2YW5AZ21haWwuY29tfDU3NzE0MjF8LTE0MDY3ODcxNjA=>
> .
> NAML<http://postgresql.1045698.n5.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml>
>




--
View this message in context: 
http://postgresql.1045698.n5.nabble.com/Query-CPU-issue-tp5771421p5771569.html
Sent from the PostgreSQL - general mailing list archive at Nabble.com.

Reply via email to