27.10.2013 Views

Firebird 2.1 Release Notes

Firebird 2.1 Release Notes

Firebird 2.1 Release Notes

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!