Re: Thanks, naming conventions, and count() - Mailing list pgsql-hackers

From Bruce Momjian
Subject Re: Thanks, naming conventions, and count()
Date
Msg-id 200104300235.f3U2ZSE04618@candle.pha.pa.us
Whole thread Raw
In response to Thanks, naming conventions, and count()  (Casey Lyon <casey@earthcars.com>)
Responses Re: Thanks, naming conventions, and count()  (The Hermit Hacker <scrappy@hub.org>)
Re: Thanks, naming conventions, and count()  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-hackers
> First off I just wanted to give a big 'thank you' to all the
> developers and contributors who have made PostgreSQL what it is
> today. I haven't come across a single thing since my first
> experience with it a few years ago that hasn't been corrected,
> sped up, or otherwise postively enhanced!
> 
> In working with 7.1 over the past couple weeks, I've noted the
> following mods may add to usability and speed:
> 
> o v7.1 changed the database naming convention to be all numeric;
> I suggest having
>    the DB engine create symbolic links when creating a new DB
>    and subsequent tables.  For instance, in creating a database
>    'foo' with table 'bar' the /path/to/pgsql/data/base folder
>    will have a new folder named something like '18720'; this
>    folder could also have a symbolic link to 'foo'. Then in the
>    '18720' folder rather than just having numeric files for each
>    table, pk, index, etc.   there could be symbolic links
>    following the naming convention 'bar', 'pk_foo_pkey',
>    'field1_foo_ukey', 'field2_foo_key'.
> 
>    Maybe this would work best as configurable flag that could
>    be set during compilation or in the conf file.

I think this is an excellent idea, and will add it to the TODO list.  We
agonized over moving to numeric names, and we couldn't think of a good
way to allow administrators to know that table matched what files.  The
big problem is that there is no good way to make the symlinks reliable
because in a crash, the symlink could point to a table creation that got
rolled back or the renaming of a table that got rolled back.  I think
symlinks with some postmaster cleanup script that fixed bad symlinks
would be great for 7,2.

I have added this to the TODO list.  If someone objects, I will remove
it:
* Add tablename symlinks for numeric file names

> 
> o count() should use index scans for tables with a PK; scans
> would be on the PK index;
>    even after running 'vacuum analyze' such a query still uses
>    a sequential scan. For instance, "select count(*) from bar"
>    and even "select(pk_name) from bar" both use sequential scans.
>    Likewise, scans on fields with indexes should use the index.

The problem here is that now we don't have commit status in the index
rows, so they have to check the heap for every row.  One idea is to
update the index status on an index scan, and if we can do that, we can
easily use the index.  However, the table scan is pretty quick.

-- Bruce Momjian                        |  http://candle.pha.pa.us pgman@candle.pha.pa.us               |  (610)
853-3000+  If your life is a hard drive,     |  830 Blythe Avenue +  Christ can be your backup.        |  Drexel Hill,
Pennsylvania19026
 


pgsql-hackers by date:

Previous
From: Casey Lyon
Date:
Subject: Thanks, naming conventions, and count()
Next
From: The Hermit Hacker
Date:
Subject: Re: Thanks, naming conventions, and count()