Have you checked the page/block/record size of the file systems and RAID systems, vs sqlite's page_size (which you can check or set with the relevant pragma: https://www.sqlite.org/pragma.html)?
If sqlite has a smaller or different page size than the underlying storage, a single sqlite write can result in a disk read, modify and write. That'll cost you a lot of resources, and I wouldn't be surprised if that showed up in FlushFileBuffers() . Cheers, Ketil On 24 Mar 2015 16:44, "Rob van der Stel" <RvanderStel at benelux.tokheim.com> wrote: > Hello, > > Currently I am investigating a SQLite performance problem that started to > occur when we switched from using Windows XP to Windows 8.1 for our > applications. > The following information is obtained to comparing two hardware identical > systems one running Win XP the other running Win 8.1. > > *** HW specification System 1 and System 2 > --- HP RP5 Retail PC 5810 > --- Intel Celeron G1820 at 2.7 GHz > --- 4096 MB DDR3 / 1333 MHz > --- Intel ICH8R onboard RAID1 with 2 x Samsung 128 GB SSD > > *** SW specification System 1 > --- Windows XP > --- Intel RAID driver 9.5.0.1037 02/10/2009 > > *** SW specification System 2 > --- Windows 8.1 > --- Intel RAID driver 12.5.0.1066 18/03/2013 > > > =>> When running our applications the performance of SQLite write-access > on System2 (Win 8.1) is at least 10 times slower than on System1 (Win XP). > =>> Investigations have already shown that the Windows API > FlushFileBuffers() plays an important part regarding this issue. > > The following describes a few comparison tests > --- SQLite 1000 x append in new database *) System > 1: 1000 - 1100 msec System 2: 10000 - 11000 msec > --- Binary file 1000 x {append + FlushFileBuffers} *) System 1: > 220 - 230 msec System 2: 2600 - 2700 msec > > *) The data size of each write is comparable (106 bytes). Final file sizes > also match. > > Has anyone noticed such a dramatic SQLite performance deterioration under > comparable circumstances? If so were you able to find the root cause of it > and tackle the problem by making improvements such that both systems > perform equally well again (other driver software ? other driver parameters > ? ...) > > It is important that we retain the data integrity provisions that are > required for our system (RAID1 and SQLite using FlushFileBuffers). Using > the "SQLITE_NO_SYNC compile option" or the "PRAGMA synchronous = 0" is > therefore no alternative. > > Regards, > Rob > > > This e-mail and any attachments contain material that is confidential for > the sole use of the intended recipient. Any review, reliance or > distribution by others or forwarding without express permission is strictly > prohibited. If you are not the intended recipient, please contact the > sender and delete all copies. > > > This message has been scanned for malware by Websense. www.websense.com > _______________________________________________ > sqlite-users mailing list > sqlite-users at mailinglists.sqlite.org > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users >