Sync
sync – standardowe wywołanie systemowe w systemie Unix powodujące zapisanie na dysku danych znajdujących się w buforze systemu operacyjnego.
Pokrewne do sync wywołanie fsync() powoduje zapis na dysk danych powiązanych z danym deskryptorem pliku. fdatasync() powoduje z kolei zapis jedynie danych znajdujących się w pliku, nie zawsze połączonych z odpowiednimi metadanymi[1]. aio_fsync() jest trzecią funkcją dostępną w systemach POSIX umożliwiającą zapisanie danych, tym razem w sposób asynchroniczny[2].
Bazy danych
W celu zapewnienia odpowiedniego poziomu trwałości danych bazy danych muszą korzystać z jednej z wersji wywołania sync. Dane przechowywane w buforach opartych na pamięci RAM mogą zostać utracone w wypadku awarii zasilania dlatego konieczny jest ich zapis w pamięci trwałej. Przykładowo, PostgreSQL może używać różnorodnych wywołań systemowych, m.in. fsync(), fdatasync(), czy też open() w zależności m.in. od platformy i potrzeb danego systemu[3]. Bazy danych używają często mechanizmu logów transakcji (na ogół znacząco mniejszych od głównych plików danych) przechowujących informacje o ostatnich zmianach w taki sposób, aby możliwe było odtworzenie zmian w wypadku awarii. To rozwiązanie pozwala na zmniejszenie obciążenia systemu związanego z częstym zapisem głównych danych do fizycznej pamięci masowej.
Kontrowersje
Dyski twarde często zawierają własne, niewielkie bufory z opóźnionym zapisem, które znacznie poprawiają wydajność, jednocześnie stanowiąc poważne zagrożenie utraty danych. Okazało się, że wywołania fsync służące do zagwarantowania integralności osadzonej bazy danych sqlite był przyczyną małej wydajności przeglądarki Firefox 3.0.[4]. fsync nie zawsze jest w stanie poprawnie obsłużyć operacje na plikach takie jak: tworzenie, zmianę nazwy czy tworzenie dowiązań do pliku co może stanowić kolejny powód utraty danych[2].
Przypisy
- ↑ The IEEE and The Open Group: fdatasync. [dostęp 2013-12-21]. (ang.).
- ↑ a b Necessary step(s) to synchronize filename operations on disk. [dostęp 2013-12-21]. (ang.).
- ↑ Write Ahead Log. [dostęp 2013-12-20]. (ang.).
- ↑ fsyncers and curveballs. [dostęp 2013-12-20]. (ang.).
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.