[ 
https://issues.apache.org/jira/browse/DERBY-5493?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13239613#comment-13239613
 ] 

Rick Hillegas commented on DERBY-5493:
--------------------------------------

Thanks for the quick analysis, Mike. Some responses follow:

>o yet another system catalog, now we would have 2 for sequences

More files are bad, I understand. But this would be similar to adding another 
index on syssequences, which is well within the bounds of what we do during a 
feature release.

> o A hidden system catalog is going to present even more problems for users if 
> there is a problem with it.  How do run maintenance on it if necessary.  How 
> do you tell if there is a problem with it?

Another valid question. I see it as being similar to the property conglomerate. 
How do we do maintenance on the property conglomerate? With SYSGHOST there is a 
diagnostic VTI for inspecting it and looking for problems, so I think we are in 
a better situation than we are with the property conglomerate.

>o I can't tell from the patch description, but previous description of this 
>approach seemed to be funneling all sequence work to a single  
>thread/transaction.  This is the wrong architectural direction for derby, we 
>should always be looking to spread this work across many threads, as does 
>current implementation where work is done in the user thread.

It's true that everything happens in a single transaction controller. However, 
a thread switch does not happen. Instead, a context manager is pushed and 
popped around the use of the shared transaction controller. It's also true that 
calls to the GhostController are synchronized, which will single-thread access 
to SYSGHOST. We could introduce a separate transaction controller per sequence 
and synchronize on those sequence-specific transaction controllers. The 
additional single-threading introduced by the current patch funnels all 
pre-allocation requests for all sequences through the same chokepoint. This 
might be an issue for an application which has small pre-allocation ranges and 
many sequences. I don't know how typical that usage will be or whether it is 
worth the extra complexity of more transaction controllers.

>o brand new boot time work.  I would rather not add sql layer garbage 
>collection to the architecture. I know there are existing applications that 
>boot quite often, and any additional work at boot time will cause the 
>performance issues.  

I doubt that this extra boot cost will be measurable. However, we could add an 
initial tuple to SYSGHOST which would flag whether there was any boot-time work 
to do. This would reduce the extra boot cost to one page read.

Thanks,
-Rick

                
> Same value returned by successive calls to a sequence generator.
> ----------------------------------------------------------------
>
>                 Key: DERBY-5493
>                 URL: https://issues.apache.org/jira/browse/DERBY-5493
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 10.6.1.0, 10.6.2.1, 10.7.1.1, 10.8.1.2, 10.8.2.2, 
> 10.9.0.0
>            Reporter: Rick Hillegas
>            Assignee: Rick Hillegas
>              Labels: derby_triage10_9
>         Attachments: derby-5493-01-aa-correctnessPlusPeekerPlusTest.diff
>
>
> The following script shows the same value being returned from a sequence 
> generator by two successive NEXT VALUE FOR calls. Thanks to Knut for finding 
> this:
> connect 'jdbc:derby:memory:db;create=true';
> create table t (x int);
> create sequence s;
> autocommit off;
> select count(*) from sys.syssequences with rs;
> values next value for s;
> drop table t;
> rollback;
> -- same value as previous call
> values next value for s; 

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to