Thread Max. Anzahl tables in MySQL
(21 answers)
Opened by kristian at 2007-08-29 12:24 sid burn+2007-08-31 16:22:52-- Genau das alles möchte man doch eigentlich garnicht. Um so mehr Caches es gibt, um so höher ist die Chance, dass es bei einem Absturz inkonsistente Daten gibt. Die meisten professionellen Datenbanken haben ihren eigenen Cache in dem die Datenbankblöcke gecached werden, selbst MySQL unterstützt dieses "Feature" mittler- weile mit InnoDB. Szenario: Eine Transaktion wird commitet und die Datenbank möchte die "Dirty Blocks" aus dem eigenen Cache auf die Platte schreiben. Die Daten wandern dann zunächst einmal in den Filesystemcache. Dort werden die "Dirty Blocks" wiederrum in bestimmten Intervallen auf die Platte geschrieben, aber die "Dirty Blocks" landen dann wiederrum erstmal im Schreibcache der Festplatte. Die Datenbank erhält aber schonmal ein ACK und schreibt die Transaktion als commited in die Transaktionslogs. Wenn nun in diesem Moment der Server crashed, sind die Daten weg bzw die Daten sind inkonsistent, weil die Daten gegebenfalls noch nicht aus dem Festplattencache auf die Platte geschrieben wurden oder nur teilweise. Um das zu verhindern, kann man zum einem Raw Devices verwenden, um den Filesystemcache zu umgehen. Zusätzlich muss sichergestellt werden, dass die Daten im Festplattencache auf jedem Fall auch physikalisch auf der Platte landen wie zum Beispiel mit Raid Controllern und einer BBU. Erst dann darf die Datenbank die Transaktion als commitet in die Transaktionslogs notieren, um dann bei einem Crash gegebenfalls ein Recovery durchzuführen. What is a good module? That's hard to say.
What is good code? That's also hard to say. One man's Thing of Beauty is another's man's Evil Hack. |