I recently had a user of the ADO.NET provider report a problem on Vista.
His database is 5gb, and he's doing a full table scan of 16 million rows.


I ran some tests using the command-line sqlite3.exe, and observed that
Windows Vista (SP1) is actually trying to cache the entire 5gb file into
memory during the table scan!  The system slows to a complete crawl and
becomes unresponsive.  The sqlite3.exe's memory remains very minimal, but
Vista itself eats every last scrap of physical memory, forcing all other
apps to the paging file trying to cache the contents of the database.


It took about 500 seconds to scan the entire table, which isn't all that bad
given the circumstances.  Unfortunately Vista's cache remained high and
continued to make the entire system unresponsive until I quit out of the


After some research, I commented out the FILE_FLAG_RANDOM_ACCESS flag in
os_win.c and re-ran the test.


It completed in 99 seconds.  System remained highly responsive, and Vista
never blew out the memory trying to cache the entire file.


Now, I know Windows CE benefits greatly from having this flag hint - but has
anyone tested normal desktop performance with or without it?  To me this
seems like an obvious bug in Vista, but the chances of getting Microsoft to
fix it are slim to none.




sqlite-users mailing list

Reply via email to