The SQLite part was an analogy.  That must have been beyond you.  You 
can have the last word.  You're beyond my help.

Fred Williams wrote:
> I never said a word aboout SQLite.  You ass U Me too much I suspect.
>
> -----Original Message-----
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED] Behalf Of Mark Spiegel
> Sent: Thursday, September 18, 2008 11:25 AM
> To: General Discussion of SQLite Database
> Subject: Re: [sqlite] Vista frustrations
>
>
> I'm sorry, I have to take issue with that statement.  The design of the
> file system/cache manager is not "pitiful".  It strives to provide good
> performance in the entire application space, not just your little corner
> of it.  It is doing the best it can with the "hint" you've given it.  If
> another (or no) hint provides better performance in your application,
> who's fault is that?  Do you realize that without the cache manager,
> fast I/O would not be possible?  Run on a debug system where only IRP
> based I/O is possible any you will be singing another tune in a hurry.
> Why do you think these hints are even available?  It is to help you
> optimize your application.
>
> The SQLite memory subsystem doesn't work well on my platform  I don't
> run around calling SQLite "pitiful".  I recognize that the authors'
> implementation(s) is probably a good performance compromise in the
> generic case.  If it is a big enough problem (which it is for me), I
> write my own version to optimize my performance.  While better, the
> integer encoding is not as good as it could be for me.  Does that mean
> the SQLite is pitiful?
>
> I should also note that as of the last time I talked to her, Molly is no
> longer handling the cache manager.  I believe she has moved back into
> the kernel group after a brief departure, but is working on something
> else.  I haven't seen the talks that Robert refers to, but suspect they
> are close to the versions I have seen in person.  I would bet they are
> still very useful and relevant.
>
> Fred Williams wrote:
>   
>> Is a sad day when an application program is forced to compensate for
>>     
> pitiful
>   
>> OS design and performance :-(
>>
>> -----Original Message-----
>> From: [EMAIL PROTECTED]
>> [mailto:[EMAIL PROTECTED] Behalf Of Robert Simpson
>> Sent: Thursday, September 18, 2008 10:31 AM
>> To: 'General Discussion of SQLite Database'
>> Subject: Re: [sqlite] Vista frustrations
>>
>>
>> After watching Molly Brown's Channel9 videos on the cache manager, I'm
>> convinced the behavior for SQLite should be to not give the filesystem any
>> hints about caching and let the cache manager itself figure it out.  The
>> exception being Windows CE, where we can confirm that when this flag is
>>     
> not
>   
>> set, the device will use compression in memory and degrade performance.
>>
>> If that's the general consensus, I'll open a ticket.
>>
>> -----Original Message-----
>> From: [EMAIL PROTECTED]
>> [mailto:[EMAIL PROTECTED] On Behalf Of Mark Spiegel
>> Sent: Thursday, September 18, 2008 7:56 AM
>> To: [EMAIL PROTECTED]; General Discussion of SQLite Database
>> Subject: Re: [sqlite] Vista frustrations
>>
>> FILE_FLAG_RANDOM_ACCESS and FILE_FLAG_SEQUENTIAL_SCAN are hints to the
>> cache manager (CC) in Windows and the underlying file system(s).  With
>> respect to the cache manager, it is going to affect whether or not there
>> is read ahead, how much read ahead will be used, and how long data will
>> remain in the cache (or another way, how quickly it will be dropped).
>> It has been some time since I've talked to the Queen of Cache Manger
>> about this, but as I recall CC will try to figure out what you are doing
>> if you don't give it a hint.  If you do give it a hint, then it is going
>> to run with that hint no matter what the cost.  Note that CC or the file
>> system are perfectly within their right to ignore your hints.  CC
>> generally does honor them.  NTFS, well that's another matter.
>>
>> It has been MY experience (YMMV) that database and temp file reads are
>> fairly random.  Database files also have the "nice" property that read
>> and writes are often sector (page) aligned.  Journal files should be
>> opened for sequential scan and are generally not sector (page) aligned.
>> Setting SQLite aside for a moment, for very large files that are only
>> going to be touched in a few places FILE_FLAG_RANDOM_ACCESS can show
>> huge performance gains.  However, if most or all of a file is going to
>> be touched, even in random order, then it doesn't get you much and can
>> hurt you.  Most SQLite data bases _probably_ fall into that second
>> case.  If you have enough memory and a small enough file such that the
>> cache manager can hold the entire file, you are golden.  That's why some
>> people see such great SQLite performance by just sequentially reading
>> their DB files before running their SQLite application.
>>
>> The elephants in the room with that previous paragraph is 1) the amount
>> of RAM in the system and 2) the other applications running.  Windows
>> will try to share its resources among all the applications running as
>> best it can.
>>
>> I have not seen any "bugs" in SQLite in this area.  It gives a
>> reasonable hint for the general case.  To be fair however, I should note
>> that I have my own VFS.  It does unbuffered I/O for database files and
>> sequential, cached I/O for journal files.  If you think you can get
>> better performance with different flags, create your own VFS, starting
>> with the Windows VFS and make the changes.  You can get as sophisticated
>> with your hints as you want.  You can write your own caching system if
>> you've ingested way too much caffeine.  (Did I mention that the VFS
>> stuff is great!)
>>
>> I would not as a general rule advise people (customers) to change the
>> way their Windows system caches globally for the benefit of one of your
>> applications.  Eventually, that is going to bite you with some support
>> calls.
>>
>> Jay A. Kreibich wrote:
>>
>>     
>>> On Wed, Sep 17, 2008 at 06:00:45PM -0700, Roger Binns scratched on the
>>>
>>>       
>> wall:
>>
>>     
>>>> The second is that SQLite when opening a file under Windows explicitly
>>>> tells Windows that the file will be used for random access even though
>>>> that is not the case.  Windows uses this hint to override its builtin
>>>> heuristics which can cause bug #1.
>>>>
>>>>
>>>>         
>>>> Bug #2 is that SQLite is lying to the operating system and could result
>>>> in performance degradation if the operating system actually pays
>>>> attention to the hint.
>>>>
>>>>
>>>>         
>>>   SQLite is not "lying."  After poking around a bit to refresh my
>>>   understanding of SQLite's file structure, I think it is safe to say
>>>   that SQLite will almost never do a sequential file read, even if
>>>   you're doing a sequential table scan.
>>>
>>>     sequential table scan != sequential file access
>>>
>>>   There are some specific situations when you might get bursts of
>>>
>>>       
>> sequential
>>
>>     
>>>   reads, but only for very specific page layouts with very specific
>>>   types of queries.  In short, not the common case.  Furthermore, even
>>>   those patterns can get broken up and shuffled around depending on the
>>>   state of SQLite's page cache-- especially if it is bumped up a few
>>>   dozen megs.  So simply running different types of queries can change
>>>   the access patterns (this is true of the OS's file system cache as
>>>   well, of course).
>>>
>>>   It might be worth instrumenting a few systems and having a look, but
>>>   in general, if you had to label SQLite's access pattern, I think
>>>   "random" would be the most appropriate label.
>>>
>>>
>>>
>>>   I also contend that if the Windows file cache becomes some kind of
>>>   bumbling idiot if you actually try to define an access pattern, then
>>>   something is wrong.  There is a very good reason why the POSIX
>>>   functions for doing this kind of thing are called "*advise()".  You
>>>   might seed the heuristic statistics in a specific direction, but they
>>>   should never be totally over-ridden.  That quickly leads to stupid
>>>   behaviors, like grabbing all the RAM on the system and not letting go.
>>>
>>>
>>>
>>>   Of course, we could argue philosophy for a long time.  In the here
>>>   and now to work around MS's inconsistencies, it looks like the best
>>>   bet is turn it on with CE and off on Vista, because it appears to
>>>   have two totally different meanings.
>>>
>>>    -j,
>>>
>>>
>>>
>>>       
>> _______________________________________________
>> sqlite-users mailing list
>> sqlite-users@sqlite.org
>> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>>
>>
>> _______________________________________________
>> sqlite-users mailing list
>> sqlite-users@sqlite.org
>> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>>
>> _______________________________________________
>> sqlite-users mailing list
>> sqlite-users@sqlite.org
>> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>>
>>
>>     
> _______________________________________________
> sqlite-users mailing list
> sqlite-users@sqlite.org
> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>
> _______________________________________________
> sqlite-users mailing list
> sqlite-users@sqlite.org
> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>
>   
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to