Page 1 of 1
Android : bulk insert leads to 'ESQLiteError' with message 'disk I/O error'.
Posted: Mon 30 May 2016 17:42
by swierzbicki
Hello,
Bulk insert leads to 'ESQLiteError' with message 'disk I/O error'. This is specially happening when inserting a large amout of data (107 000 inserts).
I've tried to insert with and without a transaction but nothing change.
When no transaction is used, I'm still getting error message (after the disk I/O error) 'cannot rollback - no transaction is active'.
Re: Android : bulk insert leads to 'ESQLiteError' with message 'disk I/O error'.
Posted: Tue 31 May 2016 04:23
by FredS
Yeah, I swear something changed but couldn't narrow it down 'til today. I was sure FB3 was within a second or so of SQL-Server during some large Azure test a few weeks ago, but not now..
Essentially while using bulk inserts with Firebird 3 the larger the array size the slower the inserts.
An example is 20 record insert loops repeating for +1400 records with an array size of 20 takes <1 second still not as fast as the same code with SQL Server which is just a dozen or so ms.
But when you increase that array size to 2k you get 9 seconds, keep in mind same insert batch and same amount of records in a loop.
Increase it to 20k and you can go for coffee, at 200k it blows up.
Each of these tests work fine with SQL Server using UniDac, then I ran it using FireDac and all works fine even with the 200K array size the whole spiel took +700ms.
Not sure but if FD works using the same snapshot of FB3 (fbclient.dll) then there is a good chance its not FB3..
Re: Android : bulk insert leads to 'ESQLiteError' with message 'disk I/O error'.
Posted: Tue 31 May 2016 12:10
by MaximG
Thank you for the information. We will check the behavior of UniDAC on inserting a large number of records with the Batch Insert method on the Android platform. We will inform you about the results shortly.