[linux-l] Dateien mit '/' im Dateinamen

Peter Ross Peter.Ross at alumni.tu-berlin.de
Do Aug 14 02:51:44 CEST 2003


On Wed, 13 Aug 2003, Steffen Dettmer wrote:

> Das JFS kann ja nicht wissen, welche 100KB von den 2GB unbedingt
> synchron geschrieben werden muß (koste es, was es wolle), kann
> also nie optimal synchronisieren. Und ganz ohne caching geht kein
> Filesystem unter Linux, weil die unteren Ebenen AFAIK schon einen
> Buffercache bereitstellen. Was man hier aber eben nicht möchte.
> Die DB möchte an ein paar Stellen das genau wissen, und nur die
> DB kennt die Semantik der binärdaten. Cachen muß eine DB sowieso,
> also bringt das Buffer-Caching nicht so viel, verbraucht bloß
> Speicher und cacht dann notfalls vollständig Blöcke, die
> vielleicht nur zum Teil belegt sind etc.

Eine DB ist (hoffentlich) einem System nicht vollstaendig ausgeliefert und
kann ja sagen, was es will..

Eine DB wird z.B. sicher, wenn sie will, dass etwas auf der Platte landen
soll, fsync(2) aufrufen.

Aus der Manpage:

The fsync() system call causes all modified data and attributes of fd to
be moved to a permanent storage device.  This normally results in all in-
core modified copies of buffers for the associated file to be written to a
disk.

The fsync() system call should be used by programs that require a file to
be in a known state, for example, in building a simple transaction facil-
ity.

Man hofft, dass das passiert, wenn eine Transaktion kommittet wird,
anderes wuerde ich es fuer Schrott halten..

Durch mehr oder minder regelmaessiges Aufrufen dieses Systemrufs duerfte
sich auch der Overhead doppelten Pufferns (Filesystem und DB) in Grenzen
halten.

Ausserdem gibt es auch noch fcntl(2) mit folgendem Parameter:

O_DIRECT     Minimize or eliminate the cache effects of reading and writ-
             ing.  The system will attempt to avoid caching the data you
             read or write.  If it cannot avoid caching the data, it will
             minimize the impact the data has on the cache.  Use of this
             flag can drastically reduce performance if not used with
             care.

und bestimmt noch andere Tricks, von denen ich nichts weiss;-)

Die erwaehnte Poet-DB packt uebrigens alles in ein File - hat den Vorteil,
dass es einfach die Kontrolle ueber den Zustand des Pufferns hat. Sagt
hier dem System - fuer dieses File bin ich verantwortlich!

Duerfte z.B. bei MySQL und den vielen kleinen Files problematischer sein.
Und die ab und an korrupten Indizes (erlebt mehr oder minder als
regelmaessiges Aergernis unter Version 3) sprechen auch dafuer, dass da
hin- und wieder nicht "gesynct" wird.

Gruss
Peter




Mehr Informationen über die Mailingliste linux-l