All,

It's expected that GBAK restores a database in the faster possible way.
It creates BLR, uses low level API and is built by people that know the
internals. :-)

But it does wrong!

There is a simple change which makes it much faster, tested with Linux
2.5 embedded restore:

Two databases, with two different tables filled with 2,000,000 records:
create table t1 (n1 integer);
create table t10 (n1 integer, n2 integer, n3 integer, ..., n10 integer);

----------------------
Restore timings:
T1: 14.5s
T10: 20.5s

Improved gbak timings:
T1: 9.7s
T10: 14.7s
----------------------

GBAK builts a BLR in the following way:
blr_receive
blr_store
...

Then calls isc_start_and_send N (records) time.

My change creates this BLR:
blr_loop
blr_receive
blr_store
...

Calls isc_start_and_send first time then N-1 isc_send.

I suppose this works in all GBAK versions.


Adriano

PS: There is other restore improvement capable of take down time from
around 8.5s to 0.5s over TCP, but it still requires some analisys.

------------------------------------------------------------------------------
Xperia(TM) PLAY
It's a major breakthrough. An authentic gaming
smartphone on the nation's most reliable network.
And it wants your games.
http://p.sf.net/sfu/verizon-sfdev
Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel

Reply via email to