Niice :-) I'll take a look at it tomorrow. I wrote a db view that creates a 
folder structure form existing blobs. And there are several thousand blobs, 
which is how i found the list command being slow. Thank you.

Kenneth

On Apr 27, 2010, at 11:13 PM, Brett M. Bergquist wrote:

> I just did a quick modification of my code to not do a select on each file. 
> Basically when the "list" is done, I gather all of the information and cache 
> it in the DbFile object.  This greatly increased performance so that at 
> directory with a couple of hundred files takes less than a second to return a 
> directory listing.
> 
> I have created a Jira issue and attached a Netbeans project which is a 
> running sample against a Derby database.  This has this changed code in it.  
> So you might want to download the code and make the same changes in your 
> version.
> 
> This is Jira Issue: FTPSERVER-372 </jira/browse/FTPSERVER-372>
> 
> https://issues.apache.org/jira/browse/FTPSERVER-372
> 
> 
> Brett M. Bergquist wrote:
>> Sorry, I just saw this among the hundreds of emails that I get ;)
>> 
>> I don't have a quick answer.  It is doing 1 select to get the list of files 
>> and then for each other check on each file (isDirectory, isReadable, etc.) 
>> it is doing another select.  It is a very naive implementation in that it is 
>> caching nothing and always refreshing its knowledge from the database.   And 
>> your right, with many files in a directory it is slow and resource intensive.
>> 
>> Kenneth Vanvik Hansen wrote:
>>> No, i don't have a need to do a select for every file. It just seems it does
>>> a lot of queries when it receives a LIST command. Only change I have done to
>>> the original code is I have changed from Derby to ODBC. It works great for
>>> folders with up to 10 or so files in it, after that it starts to get really
>>> slow.
>>> 
>>> -----Original Message-----
>>> From: David Latorre [mailto:[email protected]] Sent: 27. april 2010 14:10
>>> To: ftpserver-users
>>> Subject: Re: LIST from database
>>> 
>>> If I inderstood you correctly, it is your code that is doing a SELECT for
>>> every file, isn't it?
>>> 
>>> Since I haven't seen your code, I cannot give you advice on this, why do you
>>> need to do a select for every file?
>>> 
>>> Maybe Brett's solution can help you... did you get the time to work on this,
>>> Brett?
>>> 
>>> 
>>> 
>>> 
>>> 2010/4/27 Kenneth Vanvik Hansen <[email protected]>:
>>> 
>>>> Hi, I've been working on this a bit now but I'm having some trouble when 
>>>> there are many files/folders in a folder. Seems like LIST does a select 
>>>> for every file in a folder. Any good ideas on how to solve this? In my 
>>>> db(which is a bit slow) it can take several minutes to list
>>>>    
>>> 40+ files/folders.
>>> 
>>>> Kenneth
>>>> 
>>>> -----Original Message-----
>>>> From: Brett M. Bergquist [mailto:[email protected]]
>>>> Sent: 23. mars 2010 17:40
>>>> To: [email protected]
>>>> Subject: Re: LIST from database
>>>> 
>>>> Okay.  That will work.  Thanks.
>>>> 
>>>> Niklas Gustavsson wrote:
>>>>   
>>>>> On Tue, Mar 23, 2010 at 4:08 PM, Brett M. Bergquist 
>>>>> <[email protected]> wrote:
>>>>> 
>>>>>     
>>>>>> I actually have a working Netbeans project that works against a Derby 
>>>>>> database.  I am going to do a little more cleanup and see if I cannot 
>>>>>> factor out the database specifics like the db user manager does and then 
>>>>>> I would like to provide the whole thing, probably to go into the 
>>>>>> examples.  So should I send this to you Niklas when I am
>>>>>>        
>>> ready?
>>> 
>>>>> If you would like to contribute the code to the project, the best way is 
>>>>> to create a JIRA issue and attach the code there (making sure you check 
>>>>> the donate to ASF checkbox).
>>>>> 
>>>>> /niklas
>>>>> 
>>>>> 
>>>>>      
>>>> 
>>>>    
>>> 
>>> 
>>> 
>>>  
>> 
> 
> 

Kenneth Vanvik Hansen
[email protected]



Reply via email to