db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Mike Matrigali (JIRA)" <j...@apache.org>
Subject [jira] Updated: (DERBY-2746) If table only has fixed sized fields then derby should automatically set reserved space to 0.
Date Fri, 01 Jun 2007 23:11:16 GMT

     [ https://issues.apache.org/jira/browse/DERBY-2746?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel

Mike Matrigali updated DERBY-2746:

I agree that a good place to implement this is in the langauge layer where we already make
some calculations to set 
internal defaults based on "guesses" about the static table structure.  To do this this layer
is going to have to make some
assumptions about what the storage layer actually does with data.  So as you point out it
is problem reasonable to assume
small amount of space (1 byte?) used for storing a null vs. the number of bytes write exterrnal
outputs for a non-null value.  
This layer also doesn't really know how what writeExternal of a datatype corresponds to a
specific implementation's on disk
overhead for a column (so in current impl there are per row and per field overhead and rest
is byte for byte what the datatype
writes out, but an alternate implementation could compress the data so on disk might actually
be varying length even for 
what the datatype expects is fixed).  So reservedSpace is basically just a hint at what kind
of operations the storage engine 
should try to optimize for.  

The suggestion to even more finely tune the number based on analysis of all the fields is
also interesting.

I agree that alter table later can make these defaults not good anymore.  But the staitic
number is not really good either , just a wild
guess currently using no information about the table.   If user provided no default then I
think Derby should do the best it can to choose a reasonable default at the time.  This is
the same kind of logic added when we try to pick a reasonable page size default based on the
columns in the table.  If the user later adds a CLOB to the table, we may have chosen wrong
 -- user did have chance to set it if they wanted to.   The good news is that this is just
affects performance, it never will affect whether or not you will be able to update a row
on the table, we automatically will overflow the row if no space remains on the 
table.  Also a  given conglomerate implementation may be able to accept a change to this default(this
one is likely easier to change than page size), so that alter table could modify
the default based on the new column.  If we were to do this we probably would need  a way
to track if the user had explicitly set
a default and we probably should not change it if they did.

Also a few commands result in a reorg of all the data (like compress table), and it might
be reasonable to somehow use that data to see what the actual existing empty space is and
somehow use that to pick a new default.  Again if we did this we should preserve the value
if the user explicitly set a value.

> If table only has fixed sized fields then derby should automatically set reserved space
to 0.
> ---------------------------------------------------------------------------------------------
>                 Key: DERBY-2746
>                 URL: https://issues.apache.org/jira/browse/DERBY-2746
>             Project: Derby
>          Issue Type: Improvement
>          Components: SQL
>            Reporter: Mike Matrigali
>            Priority: Minor
> At create table time the system should be able to tell if all the columns are fixed length,
and if the user has not set  reserved space it should be changed to 
> 0.  

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message