Skip to content
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

Denser data stream and better prefetch logic in the network protocol [CORE2530] #2940

Closed
firebird-automations opened this issue Jun 26, 2009 · 16 comments

Comments

@firebird-automations
Copy link
Collaborator

Submitted by: @WarmBooter

Relate to CORE2897

Votes: 234

Firebird 2.1 has already a improved network protocol, but it is still slow for internet connections (ADSL, etc). With globalization, it is a must that the protocol work better with internet connections. Private talks with Dmitry Yemanov and Vlad shows that there is still room for improvement so, here is the request.

Commits: 0836bbb FirebirdSQL/fbt-repository@016841a

@firebird-automations
Copy link
Collaborator Author

Commented by: @pcisar

Please, stop spamming the tracker. If you want to raise the importance of any particular entry, use the voting system, not comments.

@firebird-automations
Copy link
Collaborator Author

Commented by: Fausto Alves (faustoalves)

This is an important implementation, since MySql, Post Gree sql, include this feature and believe that the Firebird should also comtempla it.
Yeah, I like many other users would be assisted in their needs.

@firebird-automations
Copy link
Collaborator Author

Commented by: Ricardo Cardoso (ricardo_engsoft)

I'm working in a project with FB2.x in a network but I have plans to put on the Internet but using FB. Actually I'm using MySQL 5.0 for this because I'm worried with the protocol performance over the internet. Having this changing I can abandon MySQL and use only FB.

Regards,
Ricardo.

@firebird-automations
Copy link
Collaborator Author

Commented by: @dyemanov

I have removed all the comments of the "it's great!" style as they may hide the "on-topic" technical comments and they don't belong to the bug tracker in general, as already mentioned by Pavel. Please use the voting facility, it's enough to express your wishes.

@firebird-automations
Copy link
Collaborator Author

Commented by: Luciano Ferreira (lucianovg)

It's very important...

@firebird-automations
Copy link
Collaborator Author

Commented by: Joao Americo fabrício (metalfa_n1)

I think it is very important as it will, probably, "stop" people "moving" their project from FB to Mysql when they need to add any internet issue.

I did not checked if FB already got it done, but add some kind of "compression" to packets/protocol as mysql/mssql/oracle/postgres/sybase do should be the first step.

PS. Please, use the "," (coma) at the right place to make your post easy to understand. As Im brazilian I anderstood, but ppl that does not talk in Portuguese will understand really NOTHING.

@firebird-automations
Copy link
Collaborator Author

Commented by: Lars Dybdahl (ldy_daintel.com)

A very slow process is to fetch many blobs. Fetching 100 times 100kbyte blobs takes a very long time, because each blob is fetched in it's own request. Instead, it would be very beneficial to be able to ask the server to deliver blob content immediately, as part of the same request.

@firebird-automations
Copy link
Collaborator Author

Modified by: @dyemanov

assignee: Dmitry Yemanov [ dimitr ]

@firebird-automations
Copy link
Collaborator Author

Modified by: @dyemanov

status: Open [ 1 ] => In Progress [ 3 ]

@firebird-automations
Copy link
Collaborator Author

Modified by: @dyemanov

Fix Version: 3.0 Beta 1 [ 10332 ]

@firebird-automations
Copy link
Collaborator Author

Modified by: @dyemanov

Link: This issue relate to CORE2897 [ CORE2897 ]

@firebird-automations
Copy link
Collaborator Author

Modified by: @dyemanov

status: In Progress [ 3 ] => Resolved [ 5 ]

resolution: Fixed [ 1 ]

@firebird-automations
Copy link
Collaborator Author

Commented by: @dyemanov

The "improved protocol" is a too flexible term that may mean lots of things, so I've adjusted the ticket title to reflect what has been improved now. Other improvement requests (e.g. blobs sent along with records) may deserve separate tickets.

In v3, the following improvements are implemented:

1) NULL flags (4 bytes per field) are replaced with a bitmap. NULL fields are no longer transmitted, except the corresponding bits in the bitmap (see also CORE2897). This is available for DSQL API only, so unfortunately GBAK does not benefit from this improvement (as it uses a lower level BLR API).

2) Prefetch (batch receive) algorithm is now aware of variable-length messages (VARCHARs and NULLs may reduce the transmitted message size), so more rows can be transmitted within a single batch.

@firebird-automations
Copy link
Collaborator Author

Modified by: @dyemanov

summary: Improve even more the FB network protocol => Denser data stream and better prefetch logic in the network protocol

@firebird-automations
Copy link
Collaborator Author

Modified by: @pcisar

status: Resolved [ 5 ] => Closed [ 6 ]

@firebird-automations
Copy link
Collaborator Author

Modified by: @pavel-zotov

QA Status: No test

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants