Etwas erschütternd sind Vergleiche einer Datenbank auf SUN Solaris und Linux, jeweils mit 4 Prozessoren. Ohne nun auf die genaue Hardware zu achten, ergeben sich Probleme ganz anderer Art, die drastische Performance - Verluste um Faktor 10.000!!! bei SQL - Queries zur Folge haben, siehe Query 7,8,9. Während Linux im 32 - Bit - Modus, und bei Solaris sowohl Datenbank, als auch Betriebsystem im 64 - Bit - Modus lief, vergleichbar viel RAM sowie vergleichbare SCSI - Platten vorhanden waren, war Solaris teilweise dramatisch viel schneller. Der Grund liegt einmal an dem unter 32 - Bit Linux notwendigen Memory - Split 1/1, 1/3, 4/4, ...32/32 für Kernel und User - Space, was eine freie, dynamische Aufteilung von RAM zwischen Kernel und Datenbank verhindert, und zum anderen am mangelnden KAIO (Kernel Async I/O) unter Linux, was verhindert, daß mehrere Threads auf verschiedenen CPUs laufend, gleichzeitig auf ein RAW - Device schreibend und lesend zugreifen können. Das Resultat - Bei vielen, gleichzeitigen Queries von vielen Clients aus bricht 32 - Bit - Linux ohne ASYNC I/O Patches völlig zusammen. Das dies Faktor 10.000 ausmachen kann, sollte nachdenklich stimmen. Sämtliche Datenbank - Installationen, die auf Linux Kernel 2.2, 2.4 ohne ASYNC - Patches beruhen, sollten daraufhin einmal untersucht werden. Ab Linux Kernel 2.6 ist ASYNC I/O auf RAW Devices (und nur da) möglich, sofern ... der Datenbank - Hersteller seinen Datenbank speziell hierfür programmiert, bzw. kompiliert hat. Es müßte also korrekterweise für jede Datenbank unter Linux nicht nur eine Version für 32/64 Bit geben, sondern auch einmal mit libaio kompiliert, und einmal ohne. Nur unter PostgreSQL bringt KAIO kaum etwas, weil es mit einem Master - Server arbeitet, wo eh nur ein Prozess gleichzeitig auf das RAW - Device zugreift. Besonders auffällig bei multithreaded Datenbanken, die kein KAIO/AIO nutzen, ist, daß sie immer dann, wenn mehrere Clients parallel zugreifen, nicht proportional langsamer mit ihren Antwortzeiten werden, sondern völlig einbrechen, wie z.B. Informix auf Linux Kernel 2.4. Ein Anhaltspunkt hierfür sind lange laufende, statistische Auswertungen eines Users, der die Arbeit für alle anderen User fast unerträglich macht. Mehr hierzu siehe auch Abschnitt 11.18. Wer kommerzielle Datenbanken unter IBM AIX, AS400, iSeries, zSeries, HP-UX, Solaris, ... einsetzt, braucht sich hierüber keine Gedanken zu machen, diese unterstüzen seit langer Zeit alle 64 Bit und AIO. Hier nun die Benchmarks:
Query# | Solaris 4x900MHz | Linux 4x2.8GHz |
|---|---|---|
1 | 2000 | 1000 |
2 | 15000 | 2000 |
3 | 10000 | 5500 |
4 | 17000 | 13000 |
5 | 0.16 | 0.05 |
6 | 0.10 | 0.07 |
7 | 1800 | 0.5 |
8 | 4000 | 0.40 |
9 | 1200 | 0.34 |
1 | 2000 | 1000 |
| Zurück | Inhaltsangabe | Weiter |
| Datenbanken 32 oder 64 Bit? | Nach oben | Datenbanken Authentifizierungsmechanismen |