-
-
Notifications
You must be signed in to change notification settings - Fork 205
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Update 'Blob sub_type 0' in FB 3/4/5 is so much slower than in FB 2.5 #8035
Comments
Didn't run your test yet, but in the source code I noted that you use connections pool: Is it correct to expect that |
With Pooling = false; the results are exactly the same. I performed additional tests for Blob sub_type 1 and Varchar(8000) between Firebird 2.5 and 4.0. The results are as follows: Blob sub_type 1
Update 1000 rows with text file 492KB:
Exactly the same results as with Blob sub_type 0. Varchar(8000)
Update 20000 rows with string 8000 chars:
As you can see, there is less disk usage in newer versions of Firebird, which is probably responsible for the longer update execution time. |
Will someone take care of my issue report? |
I can confirm some slowdown while not as big as in your numbers. |
Hello,
I am developing a large desktop application in C# .NET Framework 4.8, where I use Firebird 2.5. Some of my database clients have databases exceeding 100GB. I considered migrating to Firebird 4.0 for performance boost, but during testing, I noticed that image updates in the database are significantly slower.
The problem is easy to reproduce. You just need a simple table:
And a regular UPDATE statement:
UPDATE files SET blob_0=@blob_0 WHERE id=@id
I wrote a C# application specifically for this purpose, which performs a test by executing an UPDATE for 1000 rows with image of size 500KB. I’ve shared the source code here (testing code is in FirebirdClient.cs):
https://github.com/PhotoSoft/FirebirdTest
I conducted tests on the following Firebird versions, installed with default settings on Windows 10:
After uninstalling one version of Firebird and installing another, I rebooted the system. Then, in my application, I ran a test, ignoring the first 5 results because they could vary significantly. After that, the results became consistent.
The results I obtained are as follows:
Firebird 2.5
Best execution time: 10s
Max SSD usage: 48MB/s
Firebird 3.0
Best execution time: 16s
Max SSD usage: 31MB/s
Firebird 4.0
Best execution time: 18s
Max SSD usage: 29MB/s
Firebird 5.0
Best execution time: 18s
Max SSD usage: 29MB/s
To ensure consistency, I repeated the test on a laptop, and the performance regression was the same. As you can see, newer versions exhibit significantly lower disk utilization, resulting in longer UPDATE execution times.
What’s going on here? Is this some kind of issue in the newer Firebird versions?
The text was updated successfully, but these errors were encountered: