Re: location for pg_default tablespace - Mailing list pgsql-general

From Scott Mead
Subject Re: location for pg_default tablespace
Date
Msg-id d3ab2ec81001112229y2f539fa7k27d8ce47280401e7@mail.gmail.com
Whole thread Raw
In response to Re: location for pg_default tablespace  (Greg Smith <greg@2ndquadrant.com>)
List pgsql-general

On Tue, Jan 12, 2010 at 7:17 AM, Greg Smith <greg@2ndquadrant.com> wrote:
AI Rumman wrote:
I used the followings:
 create tablespace mytabspc location '/var/lib/pgsql/data/pg_tblspc';
 create database mydb with tablespace=mytabspc;
 drop database mydb;
 drop tablespace mytabspc;
ERROR: tablspace 'mytabspc' is not empty
 Please tell me why?

You don't put things in pg_tblspace yourself; that directory is for the database to manage.  Your tablespace should be somewhere completely outside of /var/lib/pgsql/data altogether.

Tablespaces in postgres are quite a bit different from Oracle.  In Oracle, you define a tablespace to be a location that uses one or more datafiles, and everything belongs in a tablespace.  

    In postgres, a tablespace is not required.  It is nothing more than a directory on some filesystem that you tell postgres about so that you can store relations in it.  If you don't define a tablespace in postgres, all of your relations are going to be located in /var/lib/pgsql/base.


    That's the difference, you don't NEED a tablespace like Oracle, you'll only use them in postgres when you're trying to store data in postgres on a different mountpoint.

 Hope this helps.

--Scott

pgsql-general by date:

Previous
From: Greg Smith
Date:
Subject: Re: location for pg_default tablespace
Next
From: Pavel Stehule
Date:
Subject: Re: transaction logging in the form of SQL statements