2011-02-17

Firebird działa nienormalnie wolno? Być może to wina Windows.

Firebird dostępny jest dla różnych systemów operacyjnych. Standardowo są to Windows, Linux i MacOSX — w wersjach 32 i 64 bitowych. Teoretycznie zmiana systemu 32-bitowego na 64-bitowy powinna zwiększyć wydajność Firebird, a nie pogarszać ją. Jeżeli po przejściu na 64-bitową wersję Windows zauważysz, że Firebird nagle zacznie zajmować całą dostępną pamięć RAM, a wydajność systemu jest absurdalnie niska, najpierw oczywiście upewnij się, że przyczyną nie jest nadmierna liczba połączeń z bazami lub niepoprawna wartość któregoś z parametrów konfiguracyjnych serwera, na przykład szalenie wielka liczba buforów.

Jeżeli nie możesz znaleźć żadnego rozsądnego powodu tak wolnego działania systemu, a Menadżer zadań wskazuje, że Firebird zajmuje 99% pamięci RAM, to sprawdź to ponownie w programie Process Explorer. Sprawdź, jak dużo RAM system operacyjny przeznacza na pamięć podręczną (OS Cache). Jeżeli stwierdzisz, że ta wielkość jest nienormalnie wielka (zajmuje całą pamięć RAM), to zainteresuj się »tym artykułem«.

FireAlarm

FireAlarm to program do monitorowania wydajności oraz dostępności serwera Firebird. Program napisany jest w języku Java i jest dostępny na zasadach Open Source.

»Tutaj« dostępny jest przewodnik po FireAlarm API. Pokazuje on, jak łatwo można zarejestrować bazę danych w programie oraz jak można dodać i konfigurować alerty.

Database Workbench 4.1.1

Database Workbench to program do zarządzania różnymi bazami danych. Potrafi współpracować z Firebird, InterBase, MS SQL Server, Oracle, MySQL, Sybase SQL Anywhere i Nexus DB.

W wersji 4.1.1 poprawiono błędy zauważone w wersji 4.1. Szczegółowe informacje na ten temat są »tutaj«.

Program dostępny jest w dwóch edycjach:
  1. Database Workbench Pro — pełna wersja programu;
  2. Database Workbench Lite — edycja darmowa, obsługująca tylko jedną bazę danych (obecnie Firebird, InterBase lub MySQL), oferująca użytkownikowi tylko podstawowe funkcje.

2011-02-10

Atrybut bazy danych "Forced Writes"

Jak wiadomo, aby używać Firebird, nie trzeba go jakoś specjalnie konfigurować po zainstalowaniu. Zaawansowani użytkownicy mogą wpływać na działanie serwera modyfikując jego plik konfiguracyjny. Zmiany w pliku konfiguracyjnym mają wpływ na wszystkich użytkowników korzystających z tego serwera. Istnieją również parametry zależne od bazy danych. Jedną z takich cech bazy danych jest atrybut baz danych Forced Writes. Jeżeli jest ustawiony, wszelkie zmiany w bazie danych są natychmiast zapisywane na dysk. W takim trybie każda zmiana zawartości bazy danych powoduje, że Firebird wymusza natychmiastowe zapisanie zmienionej zawartości na dysk. Takie pomijanie standardowych mechanizmów buforowania operacji zapisu na dysk przez system operacyjny powoduje wprawdzie wolniejsze działanie Firebird, ale za to prawdopodobieństwo uszkodzenia bazy danych jest zredukowane do minimum.

Okazuje się jednak, że nie jest to takie proste i oczywiste. Począwszy od Firebird 1.0, ten atrybut jest domyślnie ustawiony w Windows. Dlaczego tylko w Windows? Dlatego, że system Linux zapisuje dane na dysk najszybciej, jak tylko można. Natomiast Windows zapisuje dane na dysk wtedy, gdy musi. Jeżeli Firebird pracuje bez przerwy, to może się okazać, że w Windows niektóre dane nie były zapisywane na dysk przez wiele godzin lub nawet przez wiele dni. Aby zapobiec takim sytuacjom, w Firebird 1.5 wprowadzono dwa dodatkowe parametry konfiguracyjne serwera:
  1. MaxUnflushedWrites oraz 
  2. MaxUnflushedWriteTime
Mają one znaczenie tylko w przypadku baz z wyłączonym atrybutem Forced Writes. W systemie operacyjnym Windows pierwszy parametr domyślnie ma wartość 100. Informuje on, co ile zmian danych Firebird ma wymusić zapisanie ich na dysku. Drugi parametr w Windows domyślnie ma wartość 5. Informuje on, ile sekund zmienione lub nowe dane mogą pozostać nie zapisane na dysk. Po upłynięciu tego czasu Firebird wymusza zapisanie ich na dysku. W innych systemach operacyjnych oba parametry domyślnie są nieaktywne, ponieważ analogiczne działanie zapewniają te systemy operacyjne.

Podczas prac nad nowymi wersjami Firebird odkryto, że w systemie Linux atrybut Forced Writes był ignorowany. Nawet jeżeli był ustawiony, nowe i zmienione dane i tak były buforowane przez system operacyjny. Błąd ten został naprawiony w Firebird 2.1 (oraz w Firebird 2.0.4).

Jak już napisałem, w systemie Windows nowe lub zmienione dane mogą pozostać w pamięci stosunkowo długo, zanim zostaną zapisane na dysk. Dlatego większość autorów rekomenduje, aby w tym systemie atrybut Forced Writes zawsze był ustawiony. Dzięki temu Firebird wymusi zapisanie zmian na dysku. Ewentualne zagrożenia, wynikające z nieustawienia tego atrybutu, dobrze zostały opisane w blogu Sinatica. Jako zagrożenia autor wymienia:
  • utratę zasilania przez komputer, na którym działa Firebird
  • problemy ze sprzętem
  • problemy z systemem operacyjnym
  • problemy z Firebird
Każde z tych zagrożeń może doprowadzić do uszkodzenia bazy danych. Zastanówmy się chwilę nad tymi zagrożeniami.

Jeżeli niespodziewanie komputer utraci zasilanie, to oczywistym jest, że pliki zapisywane przez działające w tym czasie programy mogą być uszkodzone (niekompletne). Nie inaczej jest w przypadku serwera Firebird. Można temu zaradzić zasilając komputer przez sprawny zasilacz awaryjny (UPS).

Moim zdaniem pozostałe zagrożenia w wielu przypadkach nie są wystarczającym powodem do ustawiania atrybutu Forced Writes (wolniejsze działanie Firebird). Problemy ze sprzętem mogą się oczywiście zdarzyć. W takim przypadku istnieje ryzyko uszkodzenia bazy danych. Jako serwer zazwyczaj stosuje się markowe komputery. Nie eliminuje to możliwości awarii sprzętu, ale prawdopodobieństwo takiego zdarzenia jest, moim zdaniem, znikome.

Problemy z systemem operacyjnym zdarzają się. Jednak na serwerze na ogół nie uruchamiamy co chwilę jakichś programów — nie pracujemy w taki sposób, jak na stacjach roboczych. Uważam, że prawdopodobieństwo awarii systemu operacyjnego, prowadzącej do uszkodzenia bazy danych, jest znikome.

Problemy z Firebird oczywiście mogą się zdarzyć. Jak wiadomo, programy bezbłędne nie istnieją. Używam Firebird począwszy od wersji 1.5. Nie przypominam sobie żadnej awarii Firebird. Wiem, że takie się zdarzają, ale — moim zdaniem — prawdopodobieństwo ich wystąpienia jest znikome.

Uważam, że jeżeli Firebird działa na stacji roboczej, to lepiej jest ustawić atrybut Forced Writes w bazach danych. Jeżeli jednak Firebird działa na dedykowanym serwerze, zasilanym przez zasilacz awaryjny, to — moim zdaniem — można w miarę bezpiecznie wyłączyć ten atrybut. Zadziałają wtedy opisane wyżej parametry MaxUnflushedWrites i MaxUnflushedWriteTime. Kosztem minimalnie większego ryzyka uszkodzenia bazy danych zyskujemy większą wydajność serwera.

Warto jeszcze zwrócić uwagę na trzy ważne elementy. Po pierwsze, bez względu na wartość atrybutu Forced Writes należy pamiętać o regularnym wykonywaniu kopii bazy danych. Jakakolwiek będzie wartość tego atrybutu, i tak może się zdarzyć, że baza danych ulegnie uszkodzeniu. Wtedy jedynym ratunkiem może być odtworzenie jej na podstawie wykonanej wcześniej kopii.

Po drugie, decyzję o ewentualnym wyłączeniu atrybutu Forced Writes należy przeanalizować uwzględniając specyfikę danego zastosowania. Jeżeli Firebird działa wystarczająco wydajnie, to lepiej zostawić ten atrybut ustawiony. Zmniejszamy w ten sposób ryzyko uszkodzenia bazy danych. W niektórych zastosowaniach konieczność odtwarzania bazy danych na podstawie jej kopii, a następnie ponowne wprowadzenie wszystkich danych lub modyfikacji, które były zrealizowane po wykonaniu tej kopii bazy danych, sprawiałoby duży kłopot. W takim przypadku również lepiej zostawić atrybut Forced Writes ustawiony.

Po trzecie, jeżeli jesteś programistą, najpierw zabierz się za optymalizację zapytań oraz pozostałych działań na bazie danych. Doświadczenie pokazuje, że tym sposobem można uzyskać przyspieszenie działań wielokrotnie większe, niż wyłączenie atrybutu Forced Writes.

Jeżeli plik bazy danych ulegnie uszkodzeniu, pozostaje odbudować bazę danych na podstawie ostatnio wykonanej kopii. Następnie trzeba od nowa wprowadzić brakujące dane lub modyfikacje. Możemy również próbować odzyskać dane z uszkodzonej bazy danych. Nie ma gwarancji, że z uszkodzonej bazy da się odzyskać dane. Dlatego pamiętajmy o regularnym wykonywaniu kopii bazy danych!

2011-02-07

Firebird i Debian 6.0

Dostępna jest nowa wersja systemu operacyjnego Debian. W wersji 6.0 Squeeze standardowo jest dostępny Firebird 2.1.3. Na tej stronie dostępny jest artykuł zawierający szczegółowe instrukcje instalowania Firebird 2.5 w tym systemie.

2011-02-06

The Firebird Book

Jedną z zalet serwera Firebird jest to, że można pobrać z Internetu program instalujący, łatwo go zainstalować, a żeby zacząć z niego korzystać, nie trzeba być ekspertem. Jednak, aby w pełni wykorzystać wszystkie jego zalety, warto go lepiej poznać. Jednym z najlepszych źródeł informacji o serwerze Firebird jest książka napisana przez Helen Borrie.

The Firebird Book: a Reference for Database Developers została opublikowana w 2004 roku. Opisywała możliwości Firebird 1.0 oraz Firebird 1.5. Gdy powstały Firebird 2.0 i nieco później Firebird 2.1, Helen Borrie dodatek do książki, dostępny w formacie PDF.

Przez ostatnie 12 miesięcy Helen Borrie intensywnie pracowała nad opracowaniem The Firebird Book (Second Edition). To nowe wydanie początkowo będzie dystrybuowane w formacie elektronicznym (PDF, ePub, itp.). Książka jeszcze nie jest gotowa. Gotowa część rozdziałów jest dostępna we właśnie wydanym IBPhoenix Developer DVD.

2011-02-04

Firebird 2.1.4 RC1

Zespół twórców Firebird ogłosił, że Firebird 2.1.4 Release Candidate 1 przeszedł wszystkie wewnętrzne testy i jest dostępny do zewnętrznych testów. Dostępne są wersje dla systemów operacyjnych Windows, Linux i MacOS-X — zarówno 32. jak i 64-bitowe.

Lista poprawionych błędów jest »tutaj«.

2011-01-22

Monitorowanie Firebird

Niemiecka firma Habarisoft udostępniła program do monitorowania serwera Firebird. Program FireAlarm dostępny jest na zasadach Open Source.

Program sprawdza, czy nadzorowane serwery Firebird nie są nadmiernie obciążone. Może to być spowodowane na przykład błędami w aplikacjach lub atakami DoS. Pozwala programistom lub administratorom baz wykryć okoliczności, w których wydajność serwerów Firebird nadmiernie spada.

Więcej informacji o programie jest »tutaj«.

2011-01-14

IBReplicator 4.0.4

IBReplicator to program do replikowania baz danych Firebird lub InterBase. W wersji 4.0.4 poprawiono błąd mapowania pól w Replication Manager.

2010-12-26

Data Visualization 0.9.2 Beta

Program Data Visualization umożliwia łatwe tworzenie zestawień i raportów tworzonych na podstawie danych zgromadzonych w bazie danych. Program współpracuje z wieloma bazami danych (między innymi Firebird, Oracle, MySQL, PostgreSQL, MS SQL, IBM DB2, InterBase, SQLite). Pliki wynikowe mogą być tworzone w wielu różnych formatach (między innymi PDF, RTF, XLS, XML).

Program może działać w różnych systemach operacyjnych:
  • Linux
  • MS Windows XP/Vista/2003/2007
  • Solaris
  • Mac OS
Interfejs programu dostępny jest w języku Angielskim, Polskim i Hiszpańskim. Autorem programu jest Adam Witkowski. Testerem programu jest jego żona, Katarzyna Weisert-Magierska. Program dostępny jest za darmo.


Database .NET 4.0

Dostępna jest wersja 4.0 programu Database.NET. Zapewnia on prosty, ujednolicony, intuicyjny sposób zarządzania wieloma różnymi bazami danych. Program współpracuje z następującymi bazami danych:
  • Firebird Superserver/Embedded
  • PostgreSQL
  • SQL Server 2000/2005/2008/2008R2/Denali
  • SQL Server CE 3.1/3.5/4.0
  • SQL Azure
  • SQLite
  • MySQL
  • Oracle
  • IBM DB2
  • MS Access 97-2003
  • MS Access 2007-2010
  • MS Excel 97-2003
  • MS Excel 2007-2010
  • dBase IV
  • Data Sources (OLE DB)
  • ODBC DSN
  • OData/Microsoft Dallas Services
Program dostępny jest za darmo. Nie wymaga instalowania. Działa we wszystkich wersjach systemu operacyjnego Windows (x86, x64).

Database Workbench 4.1

Firma Upscene Productions udostępniła wersję 4.1 programu Database Workbench. Program dostępny jest w wersjach Pro oraz Lite. Ta wersja programu zawiera nowe funkcje, usprawnienia do istniejących funkcji oraz korekty błędów.

Program wspiera między innymi:

  • Firebird 2.5
  • InterBase XE
  • Sybase SQL Anywhere 12
  • Oracle Instant Client
Więcej informacji o tej wersji programu jest »tutaj«.

Szczegółowy wykaz nowych funkcji, funkcji rozbudowanych oraz poprawionych błędów jest »tutaj«.