Hi,

Here is my function. If I comment out the update then it would run all the
cores, if not then only one core will run....


CREATE OR REPLACE FUNCTION my_update_device(this_mac text, number_of_devices
integer, this_sysuptime integer)
  RETURNS integer AS
$BODY$
       DECLARE
        fake_mac macaddr;
        this_id integer;
        new_avgld integer;
 BEGIN
     new_avgld = (this_sysuptime / 120) % 100;
     for i in 1..Number_of_devices loop
           fake_mac = substring(this_mac from 1 for 11) ||  ':' ||
upper(to_hex((i-1)/256)) || ':' || upper(to_hex((i-1)%256));
           select into this_id id from ap where lan_mac =
upper(fake_mac::text);
           if not found then
              return -1;
           end if;
           select into this_sysuptime sysuptime from ap_sysuptime where
ap_id = this_id for update;
-- 
==============================================================================
-- >>>>>>>> if I comment out the next update then all cores will be running,
else only one core will be running
-- 
==============================================================================
          update ap_sysuptime set sysuptime = this_sysuptime, last_contacted
= now() where ap_id = this_id;
                      select into new_avgld avg_ld_1min from colubris_device
where node_id = this_id for update;
                      new_avgld = (this_avgld / 120 ) % 100;
         end loop;
  return this_id;
  END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;






On Fri, Mar 18, 2011 at 12:06 PM, Kevin Grittner <
kevin.gritt...@wicourts.gov> wrote:

> [rearranged - please don't top-post]
>
> [also, bringing this back to the list - please keep the list copied]
>
> Red Maple <redmaplel...@gmail.com> wrote:
> > Kevin Grittner <kevin.gritt...@wicourts.gov> wrote:
>
> >> It should be parallel by default.  Are you taking out any
> >> explicit locks?
>
> > my clients use psql to remotely run an update function on the
> > postgres server. Each client run its own psql to connect to the
> > server. What I have noticed is that if I commented out the update
> > in the function so that only query is being done then all the core
> > would kick in and run at 100%. However if I allow the update on
> > the function then only one core would run.
>
> > Currently it take 40min to update all the client statistics
>
> Please show us the part you commented out to get the faster run
> time, and the source code for the function you mentioned.
>
> > Do you know if I have configured something incorrectly?
> >
> > I am running postgres 9.0.2 on fedora core 14. Here is my
> > postgres.conf file
> >
> >
> > [over 500 lines of configuration, mostly comments, wrapped]
>
> If you're going to post that, please strip the comments or post the
> results of this query:
>
>  http://wiki.postgresql.org/wiki/Server_Configuration
>
> I don't think anything in your configuration will affect this
> particular problem, but it seems likely that you could do some
> overall tuning.  If you want to do that, you should probably start a
> new thread after this issue is sorted out.
>
> -Kevin
>
>

Reply via email to