Statement Queuing

From: Mark Kirkwood <markir(at)paradise(dot)net(dot)nz>
To: pgsql-hackers(at)postgresql(dot)org
Subject: Statement Queuing
Date: 2006-07-09 23:02:58
Message-ID: 44B18B22.2050502@paradise.net.nz
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

A while ago in connection with the 8.2 planning [1] there was some
discussion of resource management and statement queuing [2].

I am currently looking at implementing a resource management/queuing
module for Greenplum - initially targeting Bizgres, but I'm thinking it
could be beneficial for non-Bizgres (i.e Postgresql) users too.

There has been some discussion on the Bizgres list already [3] together
with some WIP code [4] and a review [5].

the code is a little rough - representing my getting to grips with the
standard lock mechanism in order to produce enough of a prototype to
study the issues. In that light I would very much appreciate comments
concerning the design itself and also feedback for the questions posted
in the review [4] - either here, the Bizgres-general list or both.

Here is a lightning overview of this whole resource queuing/scheduling
business to hopefully put it in context (very short version of [3]):

For certain workloads (particularly DSS and reporting), the usual
controls (max_connections or a connection pool, work_mem etc) are not
really enough to stop the situation where several simultaneously
executing expensive queries temporarily cripple a system. This is
particularly the case where user specified queries are permitted. What
is needed is some way to throttle or queue these queries in some finer
manner - such as (simple case) restricting the number of simultaneously
executing queries, or restricting the total cost of all simultaneously
executing queries (others are obviously possible, these are just the
simplest).

To make this work a new object - a resource queue is proposed, which
holds limits and current counters for resources, plus a new sort of
lock, something like a standard one, but instead of deterministic
conflict rules based on lockmethod, a check on the counter/total for the
relevant resource is performed instead.

best wishes

Mark

[1] http://archives.postgresql.org/pgsql-hackers/2006-03/msg01122.php
[2] http://archives.postgresql.org/pgsql-hackers/2006-03/msg00821.php
[3] http://pgfoundry.org/pipermail/bizgres-general/2006-June/000492.html
[4]
http://homepages.paradise.net.nz/markir/download/bizgres/bizgres-resschedular-06-29.patch
[5]
http://lists.pgfoundry.org/pipermail/bizgres-general/2006-July/000521.html

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Tzahi Fadida 2006-07-09 23:03:11 Re: getting type name
Previous Message Martijn van Oosterhout 2006-07-09 21:29:29 Re: getting type name