Sunday, February 11, 2007

Does InterBase run on Windows Vista?

Thanks to Fredrik Haglund for his post about this question.
There are some issues with License Management, Local protocol (same as for Firebird, but IPCName can't be changed in ibconfig, as I know), and IBConsole.

Thursday, February 08, 2007

Does Firebird run on Windows Vista ?

Yes, it does!

Of course, you want to know the details. Here they are.
I used Vista Business that I've got some days ago from Microsoft. First I tried to install Firebird 2.01 RC1 distributive, and it went fine. Sorry, I have not tested Classic yet, but at least there are no problems with SuperServer.
Since lot of public tests show that Windows Vista is slower than Windows XP at least for games, I thought that for the first time "backup test" will be enough to understand is there any performance loss.

My desktop system is:
AMD 64 3500+ (socket 939)
EPOX-9NPA3 Ultra (Nforce 4 Ultra chipset)
NVidia GF 7600GT

and 3 hard disks
system: HDS728080PLAT20, IDE, IBM/Hitachi, 80gb
second: ST3200827AS, SATAII, Seagate, 200gb
third: HDS728080PLA380, SATA, IBM/Hitachi, 80gb

Vista index of this computer is 4.2 (hdd and graphics are good - ~5.5, but processor and memory not - ~4.3).

I used 2gb database and run gbak -b -g using local protocol, tcp (localhost) and services api. Right now I don't want to go into test details, because it will be special article, not a blog record. So, here are just common results:
  • local protocol is not working on Vista, if Firebird runs as service. This is a classic error "unavailable database", which happens when program and Firebird works as service, sometimes when program runs as application, and in some other unknown conditions.
    Really this is not painful, because I think that Firebird (or InterBase) must not be run as service on developer's computer. If you run Firebird as fbserver -a, local protocol will work on Vista, but ~20% slower than on Windows XP. So, get into the way to use tcp (localhost) connection.
  • Backup using services and tcp show the same speed as on Windows XP.
  • Using -v (console output) gbak option makes backup process ~2-3% slower than on Windows XP. This is because console output on Windows Vista is made via 3D graphics (new Vista GUI interface).
So, you can move to Windows Vista and continue to use Firebird without any performance loss (excluding local protocol). Of course, you should not use Vista as "peer-to-peer" server, because it will be waste of new graphics user interface. If you have some dedicated, not powerful computer as Firebird server - use Windows NT, Windows 2000, and maybe Windows XP, but not Windows Vista.

Thursday, February 01, 2007

New nbackup (or online dump) myth

Today I've made some simple tests of Firebird's nbackup and InterBase 2007 online dump features.
They have some differences, but one main point. Let's describe what nbackup or online dump is:

You know that if you try to copy database when connections are active, you'll get broken copy. Because copying works sequentially, while database is a random access file. The idea of nbackup and online dump is to copy pages (by server) from database using timestamp marks. When such copying starts, server does not write changes to database file, but into special temporary file. When copy is done, server writes those modified pages back to database (and maybe to online dump). So, original database can be read and written during this process, and resulting copy is consistent.

This is fine, and according to nbackup documentation you can organize incremental backups, using "backup levels". When you make nbackup level 0, full copy of database is made. When you make nbackup level 1, only changes from previous full nbackup is written to difference file. And so on.
Example of "practical nbackup application" says that you can use full backup monthly, level 1 backup daily, and level 2 backup hourly. This is fine, but "hourly backups" can become impossible.
Why these "hourly backups" looks suspicious to me?

Because each time you run nbackup (any level) in Firebird or online dump in InterBase 2007, server reads every page in original database.
I took 13gb database from tpc-c test to check what time is needed to read the whole database.
At first I tried to copy database from one SATA drive to another. This took 6 minutes.
Then I created backup level 0 with FB and online dump with IB 2007. Both reads database and writes it's full copy:
  • Firebird - 6 minutes
  • InterBase 2007 - 8 minutes
Not a big difference, but let's run test again (nbackup level 1, and online dump):
  • Firebird - 6 minutes
  • InterBase 2007 - 6 minutes
This time both servers only reads original database, and writes nothing, because database was not changed.

So, there is no difference what backup level you use - database will be read 100% each time. And, you see that reading 13gb database took 6 minutes when no users were connected. I think that when there will be some activity, "backup" time will be definitely longer. Since reading each page of the database is not an easy operation for HDD, this will of course lower server performance.

Here, I think that running nbackup or online dump each hour for 10gb database is not a good idea. And I'm sure that if you have ~50gb database, you will not be able to do incremental backups each hour, when users work with database.
If you don't believe this - make this simple test, and send me results.

BTW: At least you must be sure that you have fast and well configured RAID controller, and disks that you use for database and its "copy" have the same performance.

p.s. Don't try to place incremental backups on the same hard drive, even on different logical disks - if your hard drive fails, you will loose both - database and backup. And, nbackup/online dump time will be 2-3 times slower.