Firebird 2.1 Release Notes
Firebird 2.1 Release Notes
Firebird 2.1 Release Notes
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Global Improvements in <strong>Firebird</strong> <strong>2.1</strong><br />
• the very Windows-knowledgeable might want to try out the concept of raw device storage on Windows<br />
systems. It has not been a project priority to explore how it might be achieved on that platform. However, if<br />
you think you know a way to do it, please feel welcome to test the idea in your Windows lab and report your<br />
observations—good or bad or indifferent—back to the firebird-devel list.<br />
•<br />
Tip<br />
V. Khorsun, D. Yemanov<br />
Maintain your raw devices in aliases.conf. That way, in the event of needing to reconfigure the storage<br />
hardware, there will be no need to alter any connection strings in your application code.<br />
Feature request CORE-971<br />
Remote Interface Improvements<br />
The remote protocol has been slightly improved to perform better in slow networks. In order to achieve this,<br />
more advanced packets batching is now performed, along with some buffer transmission optimizations. In a<br />
real world test scenario, these changes showed about 50 per cent fewer API round trips, thus incurring about<br />
40 per cent fewer TCP roundtrips.<br />
In <strong>Firebird</strong> <strong>2.1</strong> the remote interface limits the packet size of the response to various isc_XXX_info calls to the<br />
real used length of the contained data, whereas before it sent the full specified buffer back to the client buffer,<br />
even if only 10 bytes were actually filled. <strong>Firebird</strong> <strong>2.1</strong> remote interface sends back only 10 bytes in this case.<br />
Some of our users should see a benefit from the changes, especially two-tier clients accessing databases over<br />
the Internet.<br />
The changes can be summarised as<br />
a. Batched packets delivery. Requires both server and client of version v<strong>2.1</strong>, enabled upon a successful protocol<br />
handshake. Delays sending packets of certain types which can be deferred for batched transfer with<br />
the next packet. (Allocate/deallocate statement operations come into this category, for example.)<br />
b. Pre-fetching some pieces of information about a statement or request and caching them on the client side<br />
for (probable) following API calls. Implemented on the client side only, but relies partly on the benefits<br />
of reduced round trips described in (a).<br />
It works with any server version, even possibly providing a small benefit for badly written client applications,<br />
although best performance is not to be expected if the client is communicating with a pre-V.<strong>2.1</strong> server.<br />
c. Reduced information responses from the engine (no trailing zeroes). As the implementation is server-side<br />
only, it requires a V.<strong>2.1</strong> server and any client. Even old clients will work with <strong>Firebird</strong> <strong>2.1</strong> and see some<br />
benefit from the reduction of round trips, although the old remote interface, unlike the new, will still send<br />
back big packets for isc_dsql_prepare().<br />
d. Another round-trip saver, termed “defer execute”, whereby SELECT requests will be held at the point just<br />
before execution of the isc_dsql_execute until the next API call on the same statement. The benefit<br />
of the saved round-trip becomes most visible where there is a bunch of SELECT requests whose result set<br />
fits into one or two network packets.<br />
This enhancement takes effect only if both client and server are v.<strong>2.1</strong> or higher.<br />
27