Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1WKqrh-0002bu-EH for pgsql-admin@arkaria.postgresql.org; Tue, 04 Mar 2014 15:02:41 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.80) (envelope-from ) id 1WKqrg-0004jo-Ve for pgsql-admin@arkaria.postgresql.org; Tue, 04 Mar 2014 15:02:40 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1WKqrf-0004jh-W9 for pgsql-admin@postgresql.org; Tue, 04 Mar 2014 15:02:40 +0000 Received: from mail2.sorint.it ([212.210.10.18] helo=mail1.sorint.it) by magus.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1WKqrc-0002Sw-Jr for pgsql-admin@postgresql.org; Tue, 04 Mar 2014 15:02:39 +0000 X-AuditID: d4d20a12-b7f5a8e000000a93-5d-5315eb0828aa Received: from mfe1.sorint.it (Unknown_Domain [212.210.10.161]) by mail1.sorint.it (Symantec Mail Security) with SMTP id 9D.31.02707.80BE5135; Tue, 4 Mar 2014 16:02:33 +0100 (CET) MIME-version: 1.0 Content-type: multipart/alternative; boundary="Boundary_(ID_8pPspM8qXMQpuoy8+BbI4w)" Received: from [172.29.7.115] ([194.185.42.2]) by mfe1.sorint.it (Sun Java(tm) System Messaging Server 6.3-6.03 (built Mar 14 2008; 32bit)) with ESMTPSA id <0N1X00AZ033YA040@mfe1.sorint.it> for pgsql-admin@postgresql.org; Tue, 04 Mar 2014 16:02:32 +0100 (CET) Message-id: <5315EAF7.2060703@sorint.it> Date: Tue, 04 Mar 2014 16:02:15 +0100 From: Marcello Lorenzi User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130110 Thunderbird/17.0.2 To: "Campbell, Lance" Cc: "pgsql-admin@postgresql.org" Subject: Re: Enhancement Request References: In-reply-to: X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrAKsWRmVeSWpSXmKPExsVy5RLXQl3O16LBBpM2Mllca1nN5sDocWHf NPYAxigum5TUnMyy1CJ9uwSujB8P29gL7vQxVix7P5u5gfFKfRcjJ4eEgInE/rtXWCFsMYkL 99azdTFycQgJbGOUmPj/GgtIgldAUOLH5HtgNrNAmMTZb4/ZQGwhgU4miU931bsYOYBqNCTO PZUCCbMIqEq0LZ8OVsImoC1xb/I3sFZRgQiJH3u3MoLYIgJaEufWvmUEaWUWsJU4/UUaJCwM NOXt3iYmiOnBEpfvPAUbwykQIrH7+XWWCYz8s5AcNAvJQRC2tcTKSdsYZ4FNlZc4eF4WIhwg MenLfXYIW1vi+ckWJgwl+hId385ATRSXOLn9MNRERYlpixoYFzByrWLkz03MzDHSK84vAsaA XmbJJkZIBAjtYHz2WeQQowAHoxIP74cZIsFCrIllxZW5hxglOZiURHmFX4gGC/El5adUZiQW Z8QXleakFh9ilOBgVhLhNQXJ8aYkVlalFuXDpKQ5WJTEeZWc1gcICaQnlqRmp6YWpBbBZGU4 OJQkeNe+BGoULEpNT61Iy8wpQUgzcXCCDOcBGr4IpIa3uCAxtzgzHSJ/itGS4/Lu358YOa6C yesgUoglLz8vVUqctxWkQQCkIaM0D24mLKG9YhQHelGY9wpIFQ8wEOCmvgJayAS0kHsy2MKS RISUVAOj4PzInTvupvq3ndzWuT3nBrNjbM3K7rX9j9omCu9yvm325/CO00cnfbuo37qk6ua7 V/uTRVMuSHzPLuu1KJ6weJYHn9D+FTrKhodL/p7eelv3/eoNd8NiZV6/fTftQNTqb5MDJov+ X344TG7VZsdjbvqCDodbVj1S/vi/8GDJgvVHdqmH9zca+CmxFGckGmoxFxUnAgBbe3a6QwMA AA== X-Pg-Spam-Score: -1.9 (-) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgsql-admin Precedence: bulk Sender: pgsql-admin-owner@postgresql.org This is a multi-part message in MIME format. --Boundary_(ID_8pPspM8qXMQpuoy8+BbI4w) Content-type: text/plain; charset=ISO-8859-1; format=flowed Content-transfer-encoding: 7BIT Hi Lance, I don't know if you can create a tmpfs on your server and move the table with a tablespace to the tmpfs mountpoint. In this case you can reach the data on memory, but you have to mount and create the table to every server restart. Marcello On 03/04/2014 03:49 PM, Campbell, Lance wrote: > > Web Services at the University of Illinois has been using PostgreSQL > for 11 years for serving up web content. We generate around two > million pages of database driven content a month. We love the work > you are doing. > > I have an enhancement request. Sometimes when using a database there > is a need to have particular tables always in memory. An example of > this would be our web application session data. The session data is > used by a cluster of tomcat nodes. It would be nice to have a way to > say to PostgreSQL, put this particular table data in memory always. > If you already have this feature please let me know. There would > probably also need to be a way to see how much data is being taken up > by these preferred tables. This would probably require other things > to also be put into memory as well like indexes. > > To get around this issue we are planning on implementing a second > PostgreSQL database on a dedicated server in order to make sure the > session data is always in memory. But it would be nice to not > actually have a second server for just session data if we really don't > need it. > > Thanks for considering this idea. > > Thanks, > > Lance Campbell > > Software Architect > > Web Services at Public Affairs > > 217-333-0382 > > University of Illinois at Urbana-Champaign logo > --Boundary_(ID_8pPspM8qXMQpuoy8+BbI4w) Content-type: multipart/related; boundary="Boundary_(ID_No6kaAYOqvN3GsbfCslgGA)" --Boundary_(ID_No6kaAYOqvN3GsbfCslgGA) Content-type: text/html; charset=ISO-8859-1 Content-transfer-encoding: 7BIT Hi Lance,
I don't know if you can create a tmpfs on your server and move the table with a tablespace to the tmpfs mountpoint. In this case you can reach the data on memory, but you have to mount and create the table to every server restart.

Marcello

On 03/04/2014 03:49 PM, Campbell, Lance wrote:

Web Services at the University of Illinois has been using PostgreSQL for 11 years for serving up web content.  We generate around two million pages of database driven content a month.  We love the work you are doing.

 

I have an enhancement request.  Sometimes when using a database there is a need to have particular tables always in memory.  An example of this would be our web application session data.  The session data is used by a cluster of tomcat nodes.  It would be nice to have a way to say to PostgreSQL, put this particular table data in memory always.  If you already have this feature please let me know.  There would probably also need to be a way to see how much data is being taken up by these preferred tables.  This would probably require other things to also be put into memory as well like indexes. 

 

To get around this issue we are planning on implementing a second PostgreSQL database on a dedicated server in order to make sure the session data is always in memory.  But it would be nice to not actually have a second server for just session data if we really don’t need it.

 

Thanks for considering this idea.

 

 

Thanks,

 

Lance Campbell

Software Architect

Web Services at Public Affairs

217-333-0382

University of Illinois at Urbana-Champaign logo

 

 


--Boundary_(ID_No6kaAYOqvN3GsbfCslgGA) Content-id: Content-type: image/png Content-transfer-encoding: base64 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 --Boundary_(ID_No6kaAYOqvN3GsbfCslgGA)-- --Boundary_(ID_8pPspM8qXMQpuoy8+BbI4w)--