niedziela, marca 20, 2011

System plików a baza danych

4 miliony insertów i 2000 selektów z agregacją rozdzielone na 6 równoległych wątków komunikujących się po TCP/IP z bazą HSQLDB (tabelki cached, końcowy rozmiar 1,3GB) umiejscowioną na różnych systemach plików.


32-bitowe OpenSUSE 11.4 / 32-bitowy Solaris 11 Express, 1GB RAM, Sun Java 6.0. Czas trwania benchmarku podany w sekundach.


Wyniki znormalizowane (w procentach) względem ext4. Dwa systemy typu copy-on-write wypadają słabo - Btrfs i ZFS. ZFS-FUSE pod Linuksem radzi sobie w 4850 sekund, co relatywnie daje ok. 600%.


NilFS jest systemem plików z garbage collectorem, który może działać zbyt wolno dopuszczając do zapełnienia partycji: java.sql.BatchUpdateException: Data File size limit is reached at org.hsqldb.jdbc.JDBCPreparedStatement.executeBatch(JDBCPreparedStatement.java:1928). Wersjonowanie to fajna rzecz, ale mało powtarzalna i degradowalna z czasem wydajność sprawiają, że nie nadaje się do produkcyjnego użycia.

Wnioski: Wydajność Ext4 i XFS-a jest zbliżona, a systemy plików rozwijane przez Oracle-a (ZFS i BtrFS) są od tych linuksowych sporo wolniejsze. Miło, że z biegiem czasu natywny linuksowy system plików dogonił produkt SGI. ZFS jest fajny, ale jak widać nie we wszystkich zastosowaniach. Jedyny z w/w systemów, który umożliwia defragmentację to XFS.

0 komentarze: